@Daniel,Capehill I start to check shaders, and some of them return warning about unitialized variables indeed, not just this one.. Will check more if some rendering issues are cause of this
@Capehill Probably the best default for shaderjoy will be OGLES2_CCT_DETECT_UNINITIALIZED_GLSL_VARS set to 1 ? I.e. warning is here, but things still continue to runs. Because there quite a lot of shaders with unitialized variables there and there (included those which works), and will be nice to let them still works, just throw a warning about.
Because there quite a lot of shaders with unitialized variables there and there (included those which works)
We'll see how many are uninitialized for real As I said it's likely that this beta detector still produces false positives, after all you're the first one who tests it for real Just send over the respective shaders in question. But yes, of course ShaderJoy should use 1 for this mode, not 2.
Quote:
Will check more if some rendering issues are cause of this
Don't waste your time with this until I verified that the detector didn't return a false positive! Which is actually more likely than lots of uninitialized vars Just send em over and let me take a look.
- Allow shader editing in window mode. - Add play, pause, rewind and compile buttons in window mode. - Allow saving of shaders. - Remember window size when coming back from fullscreen mode. - Add possibility to check uninitialized variables (requires ogles2.library version 3). - Add tooltype CHECKUNINITIALIZED. - Add possibility to dump verbose Nova-level compilation logs (requires ogles2.library version 3). - Add tooltype SHADERDEBUG. - Log shader info log always when available (in verbose mode). - Time and log shader compilation (when in verbose mode). - Remove possibility to reload shader.
***
BUGS: sometimes texteditor.gadget cannot be created. No idea why, I suspect something uninitialized somewhere. I noticed that if I start NotePad, then the problem may disappear.
1). When the shader is active, you can't edit its code. Once you press by mouse anywhere in editor, then in the next second or two focus is loosed and you can't type anything. So to actually type anything you need to press "Pause".
2). As you can't choose font size in that editor, on SilverGreen theme there is a mess of fonts. That is a known issue of texteditor.gadget if I understand correctly, see here: http://www.amiga.org/developer/bugreports/view.php?id=221. Not sure at the moment how it can be a workaround , if not create an option to choose a font.
3). If you hit pause while shader executes in window mode, and have stopped shader be visibly in his last frame, and then double-click for fullscreen: then in fullscreen all grey, and switching back to window all gray too. I.e. like the last frame is didn't saves when we switch and erased. From programmers pov I understand why it happens: nothing renders anymore, and after Dbl-click, we have a "grey" screen, but IMHO saving that and show it in static form as it happens to be in window mode when we stop it will be more eye-candy.
4). If you load shader, and press "pause", and then load another shader: nothing changes, while, it should "auto-executes". But instead, "pause" looks like a global one, and even if we load new shaders, we have the old last frame of the previous shader.
5). "remember window size when back from fullscreen" only half work: i.e. window size remembered, but resized vertical line between shader and editor is not, so you back to same-window-as-before, but different-layout-of-shader-and-editor.
And some suggestions:
1). Add "space" to act like pause: one press on space is a pause, another press on space is unpaused, etc. That can be the same and in fullscreen mode, and in window mode.
2). Add a new gadget for making "snapshot" (so to save size of the window and resized area for text editing). Or maybe a tooltype for window size on startup. But better another gadget where you can choose "snapshot" so to save and window size, and how you resize vertical bar between shaders area and text-editors area. Or it can be just autosaved on exit, so no tooltypes, no gadgets, just remembered size of window + where the vertical line moved between shader and editor so to have it on next start.
3). There can be gazillion suggestions to text-editor, as to any other text-editor software. Not sure if there needs to recreate a wheel with of course, but as your choice to not use any of our editors we have, then having at least some basic syntax highlighting, have ability to the choose the font, background color, and color of the font, will be handy, of course.
4). In fullscreen mode, after 2 seconds of inactivity hide mouse pointer, and once mouse moved, or mouse buttons pressed: bring it back. Can be tasty to watch shaders in fullscreen, just like in video player. I do it like this in Odyssey if you remember (with your help on code review): https://github.com/kas1e/Odyssey/commi ... 4035dfaa9079b262e9913c2c3
2) Text editor supports font parameters so font should be possible to provide via tooltypes or ASL.
3) Saving would be a problem due to bitmap size difference between win/fullscreen mode. This could be worked around by limiting the rendering, for example allow 10 FPS at max in pause mode.
4) Frame limitter would work here too but probably pause mode should be disabled when switching shaders.
5) AFAIK I cannot get or set layout weightbar position. I can get space.gadget size. I tried to set the current size earlier (to get that 800*450) but it failed. Will try again.
Suggestions:
1) Good idea.
2) If I can solve bug 5 first. It should be possible to save tooltype as well. At the moment I'm a little bit sceptical about mixing tooltypes and setting files.
3) Can I get syntax highlighting with texteditor.gadget?
4) Sounds doable.
By the way, is there still a need for external text editor support?
By the way, is there still a need for external text editor support?
To be honest, I didn't see reasons and needs to write a new one as you do for now: as it will have lots of bugs and issues and stuff to be added, so in end, it's not writing shaderjoy, but writing editor and recreating of a wheel. Also, Texteditor.gadget also a pretty sucky one. There were richeditor.gadget or how it called (which use CodeBench, CodePad, and some other software if I remember right), at least this one was better.
So my suggestion for external one was just so you have no needs to lose your time on a new editor and associated issues with it. Instead, we can use any external one, which may be just "connect" to the shaderjoy window, or even didn't connect a shit, just run it in async mode with a loaded shader. That all can be tested checked how to do it all, maybe provide just AREXX interface to shaderjoy, so arexx scripts can be used for that "compile/run/rewind/pause" buttons/actions/etc.
In other words, if we will have it like now, there needs to just improve editor and fix issues. If it will be external editor support, then they're no needs for an internal one.
Maybe there can be support and for external and for internal, and have tooltype to disable internal one? But then its some complicated work. Maybe that richeditor.gadget can be used to have internal editor be better, but I do not remember if that gadget public one or not.
Texteditor.gadget is not ideal for code editing, but maybe it can stay (to be replaced later by something?) as an optional thing, a quick option for external editors. I guess I need to put "Reload" support back and think about that AREXX support.
Quote:
Failed to create editor gadget Failed to create a layout, retrying
And shaderjoy running without an editor. I even can't run it with an editor for now. Maybe I will be lucky after reboot.
It's a mystery to me. Maybe someone more familiar with the gadget can check quickly if there is something wrong here in the following example.
1). When the shader is active, you can't edit its code. Once you press by mouse anywhere in editor, then in the next second or two focus is loosed and you can't type anything. So to actually type anything you need to press "Pause".
I cannot reproduce this issue. Maybe it has something todo with themes, beta components or such. Here, the input focus stays in text editor.
By the way, is mouse pointer silhouette (POINTERTYPE_NONE) acceptable, or should it be completely blank (custom)?
I cannot reproduce this issue. Maybe it has something to do with themes, beta components, or such. Here, the input focus stays in the text editor.
Do you run shaderjoy, then you click inside of text editor window by mouse, and then start typing from the keyboard , and you can edit/type/delete/add characters, and all works, right?
For me, it does not matter if it defaults os4 theme, or silver-green theme, once I run shaderjoy and have a blue-default screen, then clicking on text editor causes losing focus after 1 or 2 seconds and I can't type. Main shaderjoy app starts to take all the key-presses as main, shaderjoy, ones.
What version of texteditor.gadget do you use?
Anyway, we need to switch to richeditor.gadeget IMHO. If, of course, Rigo will give "ok" to distribute it with shaderjoy, and giving to you SDK for at all :)
Quote:
By the way, is mouse pointer silhouette (POINTERTYPE_NONE) acceptable, or should it be completely blank (custom)?
Imho as it now it's ok.
ps. Not that it very important, but do you think it worth to replace that default "blue" shader, on one from shadertoy which looks a bit better:
void mainImage( out vec4 fragColor, in vec2 fragCoord ) { // Normalized pixel coordinates (from 0 to 1) vec2 uv = fragCoord/iResolution.xy;
// Time varying pixel color vec3 col = 0.5 + 0.5*cos(iTime+uv.xyx+vec3(0,2,4));
- Add tooltype EDITOR. When enabled, allow editing in window mode. - Add tooltype FONTNAME and FONTSIZE, to configure editor font. - Add tooltype EDITORNAME, to define external editor tool. - Blank mouse pointer in fullscreen mode, when mouse is inactive. - Allow pause mode toggling with SPACE key. - Unpause when loading a shader. - Update display also during pause mode, but on a slower rate. - Re-enable reload functionality.
- choice of font do fix those issue with garbled fonts on a silver-green theme in inbuild editor
- space for pause/unpause works for sure
- update display also during a pause on slower rate works too, so visually everything looks good when switching in pause modes between a window and fullscreen modes
- reload shader functionality for sure need it, thanks for bringing it back (handy when one uses external editors).
- external editor with loaded shader in works too :) Yeah! I can not disable EDITOR tooltype and set StormEd5 editor and once press "Edit" has shader in question working.
- thanks for adding default shader be better looking as on shadertoy, instead of a blue one, that made it looks and feels better.
Now, to things which may need some attention:
1). disabling of mouse works in general, but the mouse cursor hides not fully. For example, run let's say shader called "Capehill/amigaaaaa.frag". Then switch to fullscreen, move the mouse pointer in the middle and see that when it "hides" you still can see it, it looks like shadowed and transparent, but still, the cursor is visible. Not a big deal, good enough already, but just if you think it bug and worth of fixing.
2). I think that EDITOR tooltype can be renamed to the INTERNAL_EDITOR tooltype. Also at the same time rename EDITORNAME to EXTERNAL_EDITORNAME. So it all will then feels more logical, and one will understand that the EDITOR means internal one.
3). When we disable INTERNAL_EDITOR (let's call it like this for now for better understanding), we then lose functionality to have buttons such as rewind and compile. For that IMHO, we can add to the main ShaderJoy's menu a new menu called "Control", or "shader control", etc, which have "Play, pause, rewind and compile", just like in buttons. By this we will solve 2 issues at one time: 1) when we have no internal editor, that functionality still can be used (with mixing with external one). 2). when we have an internal editor, we still can use not only buttons, but menu as well (which is tasty when we for example in fullscreen, and have no buttons).
And some suggestion if you have enough interest in about todo/priority/etc:
1). "iChannelTime undeclared" if possible to deal with of course without sound support.
2). sound support. Just basic one, so only PCM or WAV or whatever files will be loaded. The same over iChannel, just when loaded, if header had magic hex bytes of WAV file, thread it as a sound file and open in ahi to play in. I just found quite a lot of tasty shaders with sound.
Thanks for continued work on it, it's better and better!
disabling of mouse works in general, but the mouse cursor hides not fully.
Yeah, POINTERTYPE_NONE has a shadow. I dislike so much the idea of allocating memory for a blank pointer that I went for this solution. Today I found some e-mails about some potential alternative which could be tested later...
IMHO there should be an easy and clean way to hide the mouse pointer because developers do it anyway using any means necessary. With a simple API everybody's code would get better.
@Capehill Here the text gadget pretty much randomly works / doesn't work. Well, either it works after system start - and then it always works, or it does not - and then it won't no matter how often you try. But maybe it's better to launch the user's favorite editor and then monitor the currently active shader file for changes and auto-reload?
Confirmed. The loss of text editor gadget focus happens when compositing effects are enabled and window title bar is updated. Strange.
@Daytona675x
Starting Notepad doesn't "cure" it?
EDIT: texteditor.gadget failure is probably solved now. I wasn't calling OpenClass before NewObject. This seems to explain why "Notepad workaround" helped.