Synthclipse - GLSL demo development environment based on Eclipse IDE.

Small annoyance: Starting the packaged eclipse with java 1.7 does not load the synthclipse plugin without any hint what went wrong, so you end up with a vanilla eclipse and think WTF!

You should set the eclipse.ini parameter [icode]-Dosgi.requiredJavaVersion=1.8[/icode], so you get an error-message if your java on the path is not 1.8.

Also add to your starting guide, that you can set the jvm of eclipse by adding:


-vm
/PATH/TO/JDK-1.8/bin/javaw.exe

to the eclipse.ini

Let me repeat that I’d be a good idea to package a JVM with the program. Kills the previous issue and opens the program up to a much wider audience. I’ll leave to others to suggest the easiest route to do this.

@cylab
Thanks for the tip. I will definitely add “-Dosgi.requiredJavaVersion=1.8” to eclipse.ini. As of how to set JVM used by Eclipse, it is already in my guide, or more precisely in the FAQ.

@Roquen
Maybe you are right. I’ll take a look at this solution. I don’t know if I will do this in Synthclipse 0.9.12 (which I’m plannig to release this weekend), but 0.9.13 is viable target.

Synthclipse 0.9.12 released. Downloads.

Changelog:
- Added mouse wheel support to slider components. Now one can use mouse roll to change value of any slider.
- Fixed mouse release behaviour in Shadertoy shaders
- Fixed iChannelResolution uniform variable handling
- Fixed Fragmentarium importer (there was no new lines after texture uniforms)
- Added support for HDR texture format (experimental)
- Added parsing of GLSL program log messages (apart from shader log messages) - useful with NVidia video cards
- Made Audio Player View more compact
- Added new functions to JSX API:
- Synthclipse.refreshControls()
- Synthclipse.removeControls()
- Synthclipse.removeAllControls()

Synthclipse 0.9.13 released. Downloads.

Changelog:
- Redesigned Uniform Controls View. Now it uses “accordion panel” which saves more space. Also its state
(which sections are opened and the scroll position) is remembered between successive builds of the same shader.
- Added “Take screenshot” action to the Synthclipse main menu and to the Viewport View’s toolbar.
The action can be also triggered by a key shortcut.
- Improved CheckBox Uniform Control Widget
- Changed frame time units from seconds to milliseconds in the Rendering View
- Fixed Shadertoy importer
- Fixed “GLSL Sandbox” importer

As of including JVM with Synthclipse I’ve abandoned this idea. I’m targeting software developers so it shouldn’t be to difficult for them to install Java 8 environment. Especially with flag “-Dosgi.requiredJavaVersion=1.8” which shows an error while trying to open the Eclipse with older version of Java.

Synthclipse 0.9.14 released. Downloads.

Changelog:
- Added “Rebuild upon save” feature - quick rebuild without reinitializing Uniform Controls View, triggered after save
- Added “Reset group” buttons to the Uniform Controls View and redesigned group headers
- Added “Go to file” menu in the Uniform Controls View
- Fixed and improved Fragmentarium importer (now all included files are automatically imported).
- Fixed java.lang.StackOverflowError while recording
- Fixed run configuration bug: now if shader file is deleted, its run configuration is deleted as well.
- Removed some error message duplication
- Improved shader error message printing in JSX scripts
- JSX API: Added new class - Arrays - for converting JavaScript arrays to Java arrays and buffers.
The class also contains some useful methods for creating and printing Java arrays
- JSX API: Added new functions:
- gl.deleteBuffer()
- gl.deleteTexture()
- gl.deleteFramebuffer()
- gl.deleteVertexArray()
- gl.deleteRenderbuffer()

Synthclipse 0.9.15 released. Downloads.

Changelog:
- Added key frame animation support with a Timeline
- Added “Synth-Anim” perspective. Useful when working with the Timeline
- Added option for storing presets in a separate file (’’ command). Enabled by default
- Added support for Shadertoy audio shaders. (Audio shaders have “.sau” file extension)
- Improved Shadertoy importer (Solved problems with keywords “smooth”, “filter”, “char” and functions named “texture”. Also missing channels are now added.)
- Fixed recording cancellation error


http://synthclipse.sourceforge.net/img/new/0.9.15/timeline_thumb.png

To test Shadertoy audio try importing this great shader: Music Toolbox - by nimitz. Audio support works on Windows and Linux. Sorry Mac folks.

The Timeline is based on a timeline included in Ultra Fractal (though there are small differences), so people familiar with UF shouldn’t have problems creating animations with it. For those who are not I will write an animation tutorial on the Synthclipse official page. But don’t expect it before 2-3 weeks. I need to finish something first and then I will update whole site.
Nonetheless creating animations is pretty intuitive so don’t waste time waiting for the official guide :wink:


EDIT:

Synthclipse 0.9.16 released. Downloads.

It is a small release, mostly focused on improving animation recording.

Changelog:
- Added “Use timeline settings” (FPS and duration) option to the Recording View. Enabled by default.
- Added “Start from current time” option
to the Rendering View. When enabled recording starts with time selected in the Rendering or Timeline View.
Disabled by default (Previously it was implicitly enabled).
- Added “.sau” template for the New Synthclipse File wizard
- Changed display format for time in the Rendering View (Now it is of form “time / duration”, eg. “00:00.000 / 01:23.000”)
- Changed duration units from seconds to milliseconds in the Recording View
- Changed default template for “.stoy” files to match Shadertoy format


EDIT2:

Synthclipse 0.9.17 released. Downloads.

Changelog:
- Added “Record current state” functionality to the Timeline
- Added automatic check for updates
- Added “Go to destination directory” button in the Recording View
- Fixed subtle bug when recording key frame animations (some frames ware blurred)
- Fixed time formatting error when displaying less than 100 ms
- Timeline: fixed bug with mixed presets (with key frames and without key frames). Now key frames are only showed for presets which they belongs to.
- Timeline: fixed bug with wrong slider values after entering edit mode of a key frame
- Timeline: fixed “show only recorded items” behaviour after reloading a shader
- Timeline: changed next/previous key frame order from vertical to horizontal

I’ve also improved a little description and behavior of old key frames recording:

If no changes ware made, a warning dialog will appear:

Nice app. Too bad it doesn’t support audio playback on mac.

Synthclipse has enough features, is stable and mature enough, and it is the right time (today is my birthday :]).
Here is Synthclipse 1.0.0, ladies and gentlemen :wink: . Downloads.

It’s been almost 2 years since I started development of Synthclipse (all has begun around September 2013). It’s been fun creating
such tool but now I need to get rest a little from the project. I need to write more shaders, less shader tools :slight_smile:
Of course I will fix Synthclipse bugs and release from time to time a new version but I will be less eager to add a new feature.
At least for some time.

Changelog:
- Added “Repeat Mode” for key frames in the Timeline
- Added “Synchronize animation time with audio” toolbar item to the Audio Player View
- Added “Estimated end time” label to the Recording dialog
- Added system task bar progress indicator while recording animations
- Added “Synth-Edit” perspective (Just because two perspective is not enough)
- Timeline Settings: fixed bug with invalid key frame scaling when changing FPS with “Lock duration” mode

I’ve also updated whole Synthclipse Home Page. Especially I added few section to the User Guide (like Animations).


http://synthclipse.sourceforge.net/img/new/1.0.0/repeat_mode_mini.png


http://synthclipse.sourceforge.net/img/new/1.0.0/task_bar_progress_mini.png


http://synthclipse.sourceforge.net/img/new/1.0.0/synth_edit_perspective_mini.png

Thanks for your work on this tool. One of these years I’ll put up some shaders.

Yeah seriously, I’ve been watching this project since before I joined. I’m gonna have to d/l now.

Synthclipse 1.0.1 released. Downloads.

Changelog:
- Improved Fragmentarium importer (now key frames from 3Dickulus version are automatically imported to the Timeline)
- Improved Shadertoy importer (added “sample” keyword and double underscore “__” replacer)
- Enabled animation playback in the Progressive Mode (subframes aren’t calculated during playback)
- Added screenshot dialog with preview and option to save image to file
- Added Assembler code preview (nVidia only) (Thanks, 3Dickulus!)
- Added Ctrl + Shift Free Camera rotation mode. Works like rotation with Shift only but always using Up vector equal to (0, 1, 0).
- Added “subframeCount” build-in uniform variable
- Fixed bug with incorrect time when recording a picture (it was dependent on animation option “Start from current time”, now it is not)
- Fixed bug with not fully correct preset save when Timeline was turned off right after it was turned on and some key frames was recorded
- Fixed recording cancellation error
- Fixed Rotation UC spinner bug
- Timeline: Fixed double step of the next/previous frame buttons when clicking only once
- Timeline: Added “Slerp” interpolation for the Rotation 3D Uniform Controls. (In fact Linear interpolation was already using Slerp under the hood, but now Linear is truly Linear and Slerp is Slerp)
- JSX API: Added missing functions getActiveAttrib(), getActiveUniform() from the WebGL 1.0 Spec
- Synthclipse distribution switched to Eclipse 4.5 (Mars)

Synthclipse 1.0.2 released. Downloads.

Changelog:
- Finally, “#ifdef SYNTHCLIPSE #include #endif” declaration is NOT needed in shaders!
For old projects you must fix their include paths to enable this. To do so, choose from the main menu
“Synthclipse -> IDE Fixes… -> Fix include paths…” and select there all projects
. For new projects
this is not needed.

- Added [url=http://synthclipse.sourceforge.net/img/new/1.0.2/synth_only.png]macro "SYNTHCLIPSE_ONLY" ("#define SYNTHCLIPSE_ONLY") added to every shader before build[/url]. 
  It allows to turn on/off some code only when run shaders in Synthclipse. (see [url=http://synthclipse.sourceforge.net/user_guide/fragx/build_in_macros.html]this section[/url]
  for more details).

- Fixed Fragmentarium importer. Now presets with "Target" camera value are imported correctly.

Synthclipse 1.0.3 released. Downloads.

Changelog:
- Added Keyboard Uniform Control (compatible with Shadertoy keyboard input)
- Updated Shadertoy importer to support Keyboard Uniform Control
- Timeline: Added key frames export to the GLSL (for now only linear or Catmull-Rom interpolations are supported, for all frames).
- Fixed audio player timer issue (the timer was always 2-3 seconds ahead of the true playback time). Now Shadertoy audio shaders should be better synchronized
- Fixed importing shaders directly to a project folder. Previously only importing to a sub-folder (e.g. “src”) worked
- Fixed Shadertoy importer. Now URLs that ends with “#” sign are handled correctly
- Improved GLSL Sandbox importer (better handling of surfaceSize uniform)
- Direction Uniform Controls are now always normalized at startup of a shader (you don’t need to define these vectors normalized anymore)
- Enabled “Target” vector spinners in the Camera View when in “Free Camera” mode
- Recording dialog now can be minimized (but since it is a modal window, the whole Synthclipse will be always minimized with the Recording Dialog).
This probably works only on Windows though.


http://synthclipse.sourceforge.net/img/new/1.0.3/export_key_frames_big_thumb.png

Synthclipse 1.0.4 released. Downloads.

Changelog:
- Added “mipmap” Texture Uniform Control parameter, which by default is set to true.
(This should also fix some Shadertoy shaders).

- Added "Camera.glsl"/"Camera" file to the default include directory so one could easily add camera movement to shaders 
  [url=http://synthclipse.sourceforge.net/img/new/1.0.4/camera.png]simply by calling function getCamera(vec3 ro, vec3 rd)[/url]

- [url=http://synthclipse.sourceforge.net/img/new/1.0.4/camera.png]Added optional camera control to all Shadertoy examples[/url]

- Added preset saving improvement: If you try to save an unnamed preset [url=http://synthclipse.sourceforge.net/img/new/1.0.4/default_preset.png]you will be asked if you want to save it as "Default"[/url]

- Improved include paths resolving. Now in the project settings you [url=http://synthclipse.sourceforge.net/img/new/1.0.4/include_paths.png]can specify include paths that contain Eclipse build variables (e.g. "${ProjDirPath}", "${ProjName}", "${workspace_loc}")[/url]


http://synthclipse.sourceforge.net/img/new/1.0.4/include_paths_thumb.png

Synthclipse 1.0.5 released. Downloads.

This is really small release without much new features. I still have little free time (my newborn is taking almost all of it) for Synthclipse development.
The release is focused on fixing nasty Uniform Controls View bug on Windows 10 (which I switched to lately) and showing work of Han Maokun with Kinect support.

Changelog:
- Shadertoy importer: Added new textures

- Shadertoy importer: Added handling of texture2DGradEXT

- Fixed nasty bug on Windows (especially on Windows 10): On Uniform Controls View, after scrolling, parts of the view that should be invisible overlap surrounding area.

- Added native libraries for Mac OS (by [b]Han Maokun[/b]). Now audio playback/capture should work also on Apple computers.

- [url=http://synthclipse.sourceforge.net/img/new/1.0.5/kinect_depthmap.png]Added experimental Kinect support[/url] (by [b]Han Maokun[/b]). Tested only on Mac OS. Might not work on other OSes.


http://synthclipse.sourceforge.net/img/new/1.0.5/kinect_depthmap_thumb.png

How to use Kinect depth map one can find here. If depthmap produces only still image seen on above screenshot it means that Kinect support doesn’t work. It is default mocked up depthmap used when there is no Kinect support.

Congrats. Free time will be virtually not exist for the foreseeable future.

Thanks, I was expecting it will be fun :wink:

Is there an update site for this? Or is a bit too integrated into eclipse to be a plugin…

I could make an update site but I don’t have suitable server for that. If I would put update site on sourceforge http server, then I would quickly reach daily limit. Update site would required ~60MB of download per every update. In the other hand, sourceforge file server requires triggering download in a web browser and AFAIK it is not suitable for update sites.

Any ideas where I could host the update site?