@Capehill Another one : when i dbl-click first time on fragment shader (so first time opens shaderjoy via def-icon) , then i didn't have name of the shader in the info bar. I need to d&d it again, so then i can see the name.
That one works fine in all ShaderJoys till 1.11. Now, in 1.12, it starts cause lockup
Quote:
But that shader surely works ok with any ShaderJoy before 1.12. Strange! Strange because I had the same kind of issue with few shaders, but that all the time, with any ShaderJoy. Strange that in the case with this one, the matter is ShaderJoy itself. Was something changed in 1.12 which can cause that? (and maybe other shaders causing that will be not nova/Radeon issues in end ?)
Did you have any texture active? The only change I could imagine to have OpenGL impact, is default texture filter mode. So if you have some texture, try switching to linear filtering.
Still, shader didn't try to sample from texture so perhaps not.
Quote:
PS. Did you get beta versions of Nova at the moment? Mattew should send you one a weeks ago
I guess that was forgotten but I have sent a reminder. Above shader gives OpUndef error with 1.68.
I guess that was forgotten but I have sent a reminder.
Yeah, i remind him as well last time (because Mattew its like a black hole to which you need scream many many times, to have a result. Just like Hyperion :) ).
Quote:
Above shader gives OpUndef error with 1.68.
Yeah, you need latest betas for sure. Hope this time he will be able to understand importancy of helping 3d party warp3dnova developers.
Hello Perhaps using the same texsampler for all textures may economize some registers as each texture units use several registers
I mean if all textures are (say) linear then juste create one texsampler and use it for all textures (vs creating a texsampler each time we create a texture)
@thellier Yes, it would be possible to make such shared texture-samplers. And there certainly is some benefit here, after all samplers are a limited resource and maybe sharing those also improves performance a tiny bit. ogles2.lib manages "fixed" sampler / texture pairs, no sharing. In theory Nova could use shared samplers under the hood, but I bet it doesn't neither. I'll keep that in mind for an ogles2 update.
However, unfortunately the texture / sampler handling has no impact on the shader's register usage. It's something independent. I mean, the shader's binary code doesn't change if you bind different textures / samplers to different tex units. Of course, a sampler, just as a texture, uses up a certain amount of SGPRs to be used with an image instruction, but that's independent of the actual bound samplers during rendering. Maybe imagine those registers as being pointers to sampler-data. What you'd change with your proposal is where those point to but not the number of pointers in the code.
No, the reason for shaders running out of registers so quickly is this. Nova simply has no acceptable real register allocator / manager until now. And the only way to fix those problems is to write a real one, simple as that.
@Capehill Another intersting issue. For that shader : https://www.shadertoy.com/view/4lfGDM , "pause" functionality didn't works. It start to be slower, but didn't stops.
That garbage diagonal line revealed a minor issue with Shadertoy though: apparently the render-rectangle is not necessarily resized correctly until you manually force it to resize.
Yeah, it seems like glViewport wasn't called in the beginning. There was also unnecessary bitmap resize during startup. Should be fixed in 1.13 (not released yet).
@kas1e
Fixed shader name issue and iDate pause issue, too.
While you at it, may I suggest improving "save" functionality a bit: i.e. add "save" and "save as". "save" will save to the opened file (so replace), and "save as" will open asl requester (but with pointing out to the directory from which original was opened, not to the progdir:shaders/ one).
ps. Sent a mail to Mattew about beta version for you again, hopefully, now he will do what promise :)
// keybord controls (numbers) if (keyToggle(49)) gaz_trsp = 1./1.7; if (keyToggle(50)) stars = 0.; if (keyToggle(51)) bulb = 0.; if (keyToggle(52)) dens = .3*spires;
Or it just gives a static image. KeyToggle function just takes an iChannel2, which is "keyboard control". So, while it all compiles, we probably didn't' have support for keyboard control in ShaderJoy (todo?:) ), and default values are taken for can cause such a difference.
But at least on ShaderToy site when I set iChannel2 to be empty (with keeping code with those "ifs" about keyToggle), an effect still renders, while on our side didn't.
It is a Shaderjoy issue. If you actually load "default.png" texture as channel2, then it works. I should probably make all channels populated by default.png because if I don't, the default texture seems to be white rather than black.
It is a Shaderjoy issue. If you actually load "default.png" texture as channel2, then it works. I should probably make all channels populated by default.png because if I don't, the default texture seems to be white rather than black.
Yes, in few other shaders back in past I also noticed that default things may differ, because there weren't default texture applied. And yes, sound right to make all channels to have default.png.
Interesting, that I had another shader: https://www.shadertoy.com/view/XtfSRn, which give wrong geometry until we add default texture. The same use keyboard, but in ichannel2. Through setting default.png to even ichannel0 make it renders correctly. But seems the same issue.
PS. Btw, ShaderJoy archive miss "blue noise" texture. But, I never saw that one be in use in any of the shaders anyway.
Quote:
And no, there is no keyboard support yet...
Not of big needs IMHO for now. It's not _that_ often used anyway. Sure, can be good for prototyping own shaders and switch between different effects in one shader, but not of a big deal for sure.
@Capehill Also from time to time (but not very offten), i had a DSI when press close gadget to quit from ShaderJoy in window.class:
Crash log for task "Work:ogles2/Shaderjoy-1.12/Shaderjoy"
Generated by GrimReaper 53.19
Crash occured in module Shaderjoy at address 0x7EDEAF14
Type of crash: DSI (Data Storage Interrupt) exception
Alert number: 0x80000003
Stack trace: module Work:ogles2/Shaderjoy-1.12/Shaderjoy at 0x7EDEAF14 (section 0 @ 0x2EF0) module CLASSES:window.class at 0x7FD3A420 (section 0 @ 0x83FC) module CLASSES:window.class at 0x7FD3D070 (section 0 @ 0xB04C)
I didn't have a debug version stored but rebuilding v1.12 points to an IdcmpHook function which is used to handle mouse events. Is it possible the IDCMP hook gets called after window closing or something? Not sure what is happening but I can try to make it more robust.
- Make channel windows asynchronous and allow opening them simultaneously. - Make load and save requesters asynchronous. - On quit or fullscreen toggle, wait for save requester to finish. Otherwise try to close extra windows. - Do not advance iDate uniform in pause mode. - Update shader name when filename is passed as a startup argument. - Set GL viewport during startup. - Add multipass rendering concept: allow loading of shader programs as iChannels, and allow loading of textures for those shader programs.
Limitations: - No "Common shader" support yet. - No subshader editing.
Currently you can load shaders in any order. Also the shader channels remain active even if you switch to something that is not using any channels so it can cause some non-obvious load in case there is some heavy shader running in some channel. I probably should reset channels when loading a new shader.
I'm also planning an improved dialog for setting everything at once but it's not started yet. At that point a project file might be a good idea to add.
@kas1e @khayoz
If you haven't found any fatal issue, I might replace the 1.11 archive on OS4Depot.
Currently you can load shaders in any order. Also the shader channels remain active even if you switch to something that is not using any channels so it can cause some non-obvious load in case there is some heavy shader running in some channel. I probably should reset channels when loading a new sheader.
Do you have any multipass test shader from ShaderToy which works ? I just tried few, and wasn't able to run them, have errors about ichannel not have something, etc.