The Resolume FFGL API was modified at some point circa 2020 to include a "supportTopLeftTextureOrientation" flag that improved effect performance by avoiding texture Y flipping (essentially a full texture copy) on both the call and return.
I have noticed sub-optimal performance with relatively simple Wire effects, which raises questions about the implementation of the ISF node especially, but also the general "calling" Wire of effects and mixers (and I guess also sources) from Resolume.
Are there "extra" or "unnecessary" texture copies (/flips) going in to and back out of Wire, and/or ISF nodes specifically? If so, can you remove them please? Perhaps a similar "supportTopLeftTextureOrientation" option, but rather than "support", more like "definitely use", eg "noAxisFlipping", "noTextureDuplication", or similar.
I expect the technical debt of the decision to use a "non-standard" coordinate system in Resolume itself is far too great to reverse, but working with same non-standard system in Wire (and ISF) is perhaps better than suffering the performance hit from the extra texture copies (supposing they do occur now).
-subpixel
Wire performance - Are textures flipped for the ISF node and/or "calling" effects/mixers/sources from Resolume?
Re: Wire performance - Are textures flipped for the ISF node and/or "calling" effects/mixers/sources from Resolume?
Can you elaborate on what you mean by "sub-optimal performance with relatively simple Wire effects"?
Do you mean the issue where wire effects run slower in arena than in the wire editor?
99% of that issue is not a texture copy/flipping issue. It has to do with the current video engine's need to snooze about 33% of the time.
We have rewritten the video engine and made it so that it doesn't need snoozing anymore, thereby fixing that issue. We're nearing beta stage for this so we're on track to release it this year.
As for Resolume's coordinate system having it's origin at top-left. This is actually intentional and desirable, not technical debt at all. Top left origin is used most for graphics. Most if not all of your files are stored with the top-left as it's origin. Us mimicing that means that when playing files and pulling them through our embedded effects you dont need any flip at all.
You probably think bottom-left is "standard" because that's what OpenGL does. OpenGL was created for math professors drawing graphs, not for cool graphics apps like ours
DirectX and Vulkan have top-left origin because that's optimal when drawing to a window surface (GL needs to flip there). There isn't really a "standard", we're just trying to do the least amount of work. Practically everyone is playing multiple files, not everyone is using ffgl effects, so the choice is simple.
Regarding wire effect, there is at least one too many copies there that we are aware of. That one is needed to link Resolume's video engine to Wire's video engine. We hope to get rid of that at some point, perhaps when wire has been ported over as well.
Do you mean the issue where wire effects run slower in arena than in the wire editor?
99% of that issue is not a texture copy/flipping issue. It has to do with the current video engine's need to snooze about 33% of the time.
We have rewritten the video engine and made it so that it doesn't need snoozing anymore, thereby fixing that issue. We're nearing beta stage for this so we're on track to release it this year.
As for Resolume's coordinate system having it's origin at top-left. This is actually intentional and desirable, not technical debt at all. Top left origin is used most for graphics. Most if not all of your files are stored with the top-left as it's origin. Us mimicing that means that when playing files and pulling them through our embedded effects you dont need any flip at all.
You probably think bottom-left is "standard" because that's what OpenGL does. OpenGL was created for math professors drawing graphs, not for cool graphics apps like ours
Regarding wire effect, there is at least one too many copies there that we are aware of. That one is needed to link Resolume's video engine to Wire's video engine. We hope to get rid of that at some point, perhaps when wire has been ported over as well.
Re: Wire performance - Are textures flipped for the ISF node and/or "calling" effects/mixers/sources from Resolume?
By sub-optimal I mean that there was a small but noticeable difference between an FFGL plugin I made and the Wire port where the fragment shader code is basically the same; my guess was that an extra texture copy was happening somewhere, because that was happening with FFGL plugins.
If Wire is "top-left" and ISF is not top-left (the fragment shader code is GLSL, is it not?), then if you are not doing a texture flip there, are you leaving it to the developer to discover inverted coordinates? I haven't delved far into ISF shaders yet, but would appreciate a heads up about that.
Also, Cartesian coordinates existed for a long time before computers with graphical interfaces, so you are being a bit mean to math professors!
As for "Resolume's coordinate system", the Transform effect in Resolume and the Transform node in Wire have OPPOSITE directions for Y values (Translate Y and Anchor Y), and also opposite rotation directions.
-subpixel
If Wire is "top-left" and ISF is not top-left (the fragment shader code is GLSL, is it not?), then if you are not doing a texture flip there, are you leaving it to the developer to discover inverted coordinates? I haven't delved far into ISF shaders yet, but would appreciate a heads up about that.
Also, Cartesian coordinates existed for a long time before computers with graphical interfaces, so you are being a bit mean to math professors!
As for "Resolume's coordinate system", the Transform effect in Resolume and the Transform node in Wire have OPPOSITE directions for Y values (Translate Y and Anchor Y), and also opposite rotation directions.
-subpixel