v3 upgrade — ISF questions and requests from a simulation shader artist
Posted: Mon Nov 09, 2026 10:17 am
Hi Magic team,
I’m a VJ and media artist in the Netherlands. Magic is my main ISF host, and I’ve built a library of 25+ multi-pass simulation shaders in it (Physarum, fluids, particle systems, reaction-diffusion) for live sets. Congratulations on v3. Native audio in ISF and multiple FFT inputs are exactly what I was hoping for.
Before I upgrade, I’d like to ask what v3 already covers, and share what would make it an easy decision for me.
Questions about v3
Which GLSL version do ISF shaders compile under? Can a shader declare #version 330?
Are PERSISTENT FLOAT buffers 32-bit now, or still 16-bit half-float?
Does the native ISF audio follow the ISF spec (“audio” and “audioFFT” inputs, with MAX for the bin count)? Can each input use a different audio source?
What exactly changed in the alpha handling? Will v2 projects composite differently?
Feature requests (most important first)
Modern GLSL for ISF. #version 330 would work on both Windows and macOS. It gives integer and bitwise math, texelFetch, textureSize, tanh/sinh and dynamic indexing. Today I need a workaround for each of these.
32-bit float persistent buffers, at least as an option. With half-floats, particle positions above ~1024 px snap to whole pixels, which creates visible lattice artifacts.
A wrap mode per pass: REPEAT for seamless (toroidal) simulations, and zero outside the texture (clamp to border). Edge clamping makes particle simulations gain mass at the borders.
IMG_SIZE() for pass targets, so buffer sizes don’t have to be hardcoded.
Intermediate passes as module outputs. One simulation could then feed several chains (for example, its trail map into a mask chain) without running twice.
Feedback between modules with a one-frame delay, so two separate shaders can react to each other. This is the core of my current work: layers that behave like living organisms and interact.
Per-module GPU time display. In long live sets I need to know which module is the expensive one.
Bugs I hit in v2.5 (please check if they’re still there)
The preprocessor replaces sampling macros like IMG_NORM_PIXEL even inside comments, which breaks compilation.
With about 28–30 inputs, the generated uniform declarations are cut off mid-line, and the shader fails with many syntax errors.
Requests 1–3 matter most to me. If they are in v3 or planned, I’ll upgrade right away. I’m happy to send small test shaders that reproduce each issue.
Thank you for keeping Magic alive and independent.
Best regards,
Yuri Gorbados
behance.net/gorbados
I’m a VJ and media artist in the Netherlands. Magic is my main ISF host, and I’ve built a library of 25+ multi-pass simulation shaders in it (Physarum, fluids, particle systems, reaction-diffusion) for live sets. Congratulations on v3. Native audio in ISF and multiple FFT inputs are exactly what I was hoping for.
Before I upgrade, I’d like to ask what v3 already covers, and share what would make it an easy decision for me.
Questions about v3
Which GLSL version do ISF shaders compile under? Can a shader declare #version 330?
Are PERSISTENT FLOAT buffers 32-bit now, or still 16-bit half-float?
Does the native ISF audio follow the ISF spec (“audio” and “audioFFT” inputs, with MAX for the bin count)? Can each input use a different audio source?
What exactly changed in the alpha handling? Will v2 projects composite differently?
Feature requests (most important first)
Modern GLSL for ISF. #version 330 would work on both Windows and macOS. It gives integer and bitwise math, texelFetch, textureSize, tanh/sinh and dynamic indexing. Today I need a workaround for each of these.
32-bit float persistent buffers, at least as an option. With half-floats, particle positions above ~1024 px snap to whole pixels, which creates visible lattice artifacts.
A wrap mode per pass: REPEAT for seamless (toroidal) simulations, and zero outside the texture (clamp to border). Edge clamping makes particle simulations gain mass at the borders.
IMG_SIZE() for pass targets, so buffer sizes don’t have to be hardcoded.
Intermediate passes as module outputs. One simulation could then feed several chains (for example, its trail map into a mask chain) without running twice.
Feedback between modules with a one-frame delay, so two separate shaders can react to each other. This is the core of my current work: layers that behave like living organisms and interact.
Per-module GPU time display. In long live sets I need to know which module is the expensive one.
Bugs I hit in v2.5 (please check if they’re still there)
The preprocessor replaces sampling macros like IMG_NORM_PIXEL even inside comments, which breaks compilation.
With about 28–30 inputs, the generated uniform declarations are cut off mid-line, and the shader fails with many syntax errors.
Requests 1–3 matter most to me. If they are in v3 or planned, I’ll upgrade right away. I’m happy to send small test shaders that reproduce each issue.
Thank you for keeping Magic alive and independent.
Best regards,
Yuri Gorbados
behance.net/gorbados