Welcome to Fractal Forums

Fractal Software => Synthclipse => Topic started by: _revers_ on August 27, 2014, 03:28:53 PM




Title: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on August 27, 2014, 03:28:53 PM
Synthclipse 0.9.4 released. Downloads. (http://sourceforge.net/projects/synthclipse/files/synthclipse-0.9.4/)

Changelog:
- Added Frame Stepper buttons in the Rendering View (see screen below).
- "Preferences -> General -> Workspace -> Save automatically before build" now works as expected (no more "Do you want to save?" dialog before launching).
- Added synth_CameraPosition uniform (same as "Eye" uniform - it is just alias).
- Fixed refreshing texture issue when loading presets
- Checkbox Uniform Controls are now toggled when clicking anywhere within control space (not only by clicking on a checkbox)
- Fixed Shadertoy import of textures tex14.png, tex15.png (they use different filter and wrap mode than default)

Here are screenshots of a new Frame Stepper:

(http://bankfotek.pl/image/1781175.jpeg)

To the buttons "Previous animation frame" and "Next animation frame" a key shortcuts can be bound (via "Window -> Preferences -> General -> Keys").


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on August 27, 2014, 03:48:08 PM
awesome, thank you for these quick fixes ;)


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on August 30, 2014, 03:34:30 AM
working fine!

now what occured to me is that

-the parameters of the current edited shader are reseted after new compile, it would be nice to just keep current parameter
- single frame stepping at ends shall modulo to zero (for checking loops frame by frame)



Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on August 30, 2014, 12:46:17 PM
control/timeline:
 
- options after build: "pause" <-just recompile and rerender current picture


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on August 30, 2014, 06:22:41 PM
I will implement these features in Synthclipse 0.9.5. It will be released next week.


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on August 30, 2014, 06:52:52 PM
just tried export to shadertoy, i get an "null pointer" error when trying to export


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on August 30, 2014, 10:38:40 PM
Could you give me an Exception Stack Trace from that event?
To get it open the Error Log view, find proper error event and double click on it. Event Details dialog will appear.
Copy the Exception Stack Trace from it and post it here or send it via PM to me.

(http://bankfotek.pl/thumb/1783052.jpeg) (http://bankfotek.pl/image/1783052)

Although I don't have erros when exporting Shadertoy shaders, I see that there are definitely some other bugs in it. I need to fix them anyway.


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on August 31, 2014, 12:16:31 AM
here you go:


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on August 31, 2014, 08:37:07 AM
Could you please copy only the whole Exception Stack Trace text? On the screenshot you've provided there is visible only the top most Exception. Real source Exception is usally on the bottom of the Stack Trace.


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on August 31, 2014, 08:45:25 AM
this is it ;)

Code:
java.lang.reflect.InvocationTargetException
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:423)
at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1059)
at org.synthclipse.ide.wizards.ExportShadertoyWizard.performFinish(ExportShadertoyWizard.java:111)
at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:853)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:438)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:619)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:832)
at org.eclipse.jface.window.Window.open(Window.java:808)
at org.synthclipse.ide.IDEHelper.openWizard(IDEHelper.java:854)
at org.synthclipse.ide.handlers.ExportShadertoyHandler.execute(ExportShadertoyHandler.java:24)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:294)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:247)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:229)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:149)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:825)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:701)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$6(HandledContributionItem.java:685)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:613)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
Caused by: java.lang.NullPointerException
at org.synthclipse.core.gl.parser.CodeCleanerParser.appendUniforms(CodeCleanerParser.java:369)
at org.synthclipse.core.gl.parser.CodeCleanerParser.parse(CodeCleanerParser.java:341)
at org.synthclipse.core.shadertoy.ShadertoyExporter.export(ShadertoyExporter.java:45)
at org.synthclipse.ide.wizards.ExportShadertoyWizard.exportFile(ExportShadertoyWizard.java:157)
at org.synthclipse.ide.wizards.ExportShadertoyWizard.access$0(ExportShadertoyWizard.java:151)
at org.synthclipse.ide.wizards.ExportShadertoyWizard$1.run(ExportShadertoyWizard.java:127)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
Root exception:
java.lang.NullPointerException
at org.synthclipse.core.gl.parser.CodeCleanerParser.appendUniforms(CodeCleanerParser.java:369)
at org.synthclipse.core.gl.parser.CodeCleanerParser.parse(CodeCleanerParser.java:341)
at org.synthclipse.core.shadertoy.ShadertoyExporter.export(ShadertoyExporter.java:45)
at org.synthclipse.ide.wizards.ExportShadertoyWizard.exportFile(ExportShadertoyWizard.java:157)
at org.synthclipse.ide.wizards.ExportShadertoyWizard.access$0(ExportShadertoyWizard.java:151)
at org.synthclipse.ide.wizards.ExportShadertoyWizard$1.run(ExportShadertoyWizard.java:127)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on August 31, 2014, 10:09:50 AM
Thank you. This is very helpful.


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on September 02, 2014, 08:09:53 AM
i have found another oddity ;)

some uniform controls are rendered inactive, for example is not slideable for me, i have not really figured out what causes it, but i get at most one editable slider parameter :(


uniform float BPM=120; //! slider[1, 120, 240]


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on September 02, 2014, 09:31:09 AM
This is a feature not a bug :) . GLSL compiler removes automatically inactive uniforms so Synthclipse makes them disabled since there is no use of them. (http://synthclipse.sourceforge.net/user_guide/fragx/uniform_controls.html#Inactive_uniforms) It is an information for a shader creator that some code is never used in a shader.

As of other feature requests there are almost implemented and if I fix Shadertoy exporter today, I will release Synthclipse 0.9.5 tomorrow morning.


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on September 02, 2014, 10:04:12 AM
i just read it in the documentation as well, right, its a feature and its working ;) when i used the variable it became editable :D


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on September 02, 2014, 10:08:28 AM
in fact i have so much fun with that ide, even code hinting works (ctrl-space) and what astonished me was that even code formatting works very nicely (CTRL-SHIFT-F) awesome tool!


can you explain how various importers/exporters work, i mean what is done with includes in fragmentarium i did not import anything yet, are includes copied as well ? and how is the shadertoy exporter meant to work ? does it create a single file out of various includes?

regarding shadertoy i experienced that shadertoy is having a much more strict syntax, e.g. "1" is not interpreted implicitly as float, one need to manually make it a "1.0" to make it work in shadertoy is there a more strict compile mode available in synthclipse ?! usually the more strict modes are sometimes annoying but in general i would use them just to get the most compatible piece of code out of it...


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on September 02, 2014, 10:43:13 AM
in fact i have so much fun with that ide, even code hinting works (ctrl-space) and what astonished me was that even code formatting works very nicely (CTRL-SHIFT-F) awesome tool!
Yeah, Eclipse is a great tool, I use it every day ^^ One of the best Open Source IDE out there. And it is easly extensible (as you can see with Synthclipse).

can you explain how various importers/exporters work, i mean what is done with includes in fragmentarium i did not import anything yet, are includes copied as well ? and how is the shadertoy exporter meant to work ? does it create a single file out of various includes?

Fragmentarium importer is able to import only one file at a time. It translates almost all Fragmentarium directives to Synthclipse format (one not handled is a texture mode directive). Unfortunately it isn't able to resolve included files. One must import them manually. But if Vertex Shader is contained in a Fragmentarium file, it will be extracted and put in a separated Synthclipse ".vs" file.

Shadertoy exporter is quite detailed describied here (http://synthclipse.sourceforge.net/user_guide/shadertoy.html). To cite the last parapgrah:
"Shadertoy Exporter will remove all Synthclipse Commands and "#ifdef SYNTHCLIPSE" blocks. It will also merge all included files (except of #include <synthclipse> - which ignores) into one file. Moreover, if you checked Use presets, it will export presets as global const variables, enabled by preprocessor definitions. Ordinary uniforms (those without Uniform Controls) will be also changed into global const variables."

regarding shadertoy i experienced that shadertoy is having a much more strict syntax, e.g. "1" is not interpreted implicitly as float, one need to manually make it a "1.0" to make it work in shadertoy is there a more strict compile mode available in synthclipse ?! usually the more strict modes are sometimes annoying but in general i would use them just to get the most compatible piece of code out of it...

I don't think it is possible but I will check this after work.


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on September 03, 2014, 12:33:51 AM
I've checked, unfortunately there is no way to turn on more strict compilation mode in the GLSL compiler.


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on September 03, 2014, 01:01:59 AM
i wonder how it is done on shadertoy, i mean they both have to use the existing glsl compiler provided by the graphics card driver, i heard that ati seems to do a more strict job on that, but since i have an ati card that is not complaining in synthclipse but on shadertoy there might be some stuff he does for hisself ... i dunno ... but dont mind its not a problem at all ;)


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on September 03, 2014, 08:17:22 AM
Shadertoy uses WebGL (based on OpenGL ES 2.0) (http://en.wikipedia.org/wiki/WebGL). Synthclipse uses desktop OpenGL 3+/4+ (http://en.wikipedia.org/wiki/OpenGL). I think there is more than one compiler in the drivers. Differences are not only on warning/error messages but also in behavior (bugs), as you have seen with mod() function. I have also seen problems occuring both in Synthclipse and Fragmentarium (I've double checked this suspecting a bug in Synthclipse) but not in a browser/WebGL.

I wonder if I could create OpenGL ES 2.0 context instead of OpenGL 3+/4+ for ".stoy" scripts... I will check this later.

As of Synthclipse 0.9.5, the package is ready but it is not uploaded yet (62% as of now). Today I have really slow Internet connection and estimated time for finish is like 5-7 hours. I create proper topic when it will be finished.



Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on September 03, 2014, 08:32:10 AM
that ,mod behaviour ... i have not figured out what the problem was, i rewrote the calculation and came up with a similar behaviour, i think - as you - it has to do with the sampling of the noise texture, i have posted another request in a new thread which might induce some work, but it is a pretty cool feature to deliver rendered shader to another program ;) using spout


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: _revers_ on September 04, 2014, 12:00:16 AM
[...] I think there is more than one compiler in the drivers. [...]
I wonder if I could create OpenGL ES 2.0 context instead of OpenGL 3+/4+ for ".stoy" scripts...

I was searching a method to run WebGL/OpenGL ES 2.0 context on desktop and I found it is not possible in a vendor independent manner (http://www.g-truc.net/post-0457.html). Moreover I found that probably there are no multiple compilers in the drivers. Differences between WebGL and desktop OpenGL might come from different *GL implmentations. It seems that browsers use on Windows: ANGLE: Almost Native Graphics Layer Engine (https://code.google.com/p/angleproject/):

"The goal of ANGLE is to allow Windows users to seamlessly run WebGL and other OpenGL ES 2.0 content by translating OpenGL ES 2.0 API calls to DirectX 9 or DirectX 11 API calls.
[...]
ANGLE is used as the default WebGL backend for both Google Chrome and Mozilla Firefox on Windows platforms. Chrome uses ANGLE for all graphics rendering on Windows, including the accelerated Canvas2D implementation and the Native Client sandbox environment.
Portions of the ANGLE shader compiler are used as a shader validator and translator by WebGL implementations across multiple platforms. It is used on Mac OS X, Linux, and in mobile variants of the browsers."


Title: Re: Synthclipse 0.9.4 released. Downloads.
Post by: cKleinhuis on September 04, 2014, 12:12:16 AM
i see, so, not a problem at all ;) since it is easy to fix