Matchboxes not working in Flame 2025.1

I saw this from @RufusBlackwell on another thread but since I am testing Flame 2025.1.1 I took interest.

Indeed crok_vhs doesn’t work. I am doing a quick pass on some of my other favorites and I haven’t found any thing else that is not functioning.

Strange that this one fell over with the latest release

Are we running these GLSL matchbox shaders through an emulator now.

I am also getting some funny blue edge artefacts on LS_glint that I wasn’t getting on Flame 2023 :thinking:

In .1 there was an upgrade to the GLSL, which now goes up to 4.6, instead of the old 1.2.

And I don’t have a good answer to the details, but I assume that versions that run on Metal/Vulkan have to translate/emulate the old GLSL. So there is a chance for incompatibility.

Not sure whether that is an issue with emulation, or if the original code had some quirks that just happened to work.

Hi Richard,

As of the 2024.1 Update release, shaders are now converted from glsl to spir-v at runtime. This is a pretty straightforward process.

That being said, it appears that the crok_vhs issue is NOT related to this conversion. According to our QA, it works in 2025.0.1, but stopped working in 2025.1 (now displays an empty result). @PlaceYourBetts, could you officially report this to support? We could take a look at this issue on our end.

Our QA was not able to reproduce the blue edge artefacts on Ls_Glint. If you have some rep steps to replicate, please report this issue as well.

Regards,
Jasmin

It’s funny because I will need to use it (VHS) next week, I hope it gets fixed soon

Hi Richard,

In the meantime that we investigate the issue with crok_vhs, there is a workaround to make it work in 2025.1+. In the crok_vhs.02.glsl file you need to replace the V in the #define V vec2(0.,1.), which is problematic to something else like VEC.

Your crok_vhs.02.glsl file should look like:

... (line 18)
#define VEC vec2(0.,1.)
... (line 68)
if ( 0.29 < cn ) {
    vec2 uvt = ( uvn + VEC.yx * v2random( vec2( uvn.y, time ) ) ) * vec2( 0.1, 1.0 );
    float n0 = v2random( uvt );
    float n1 = v2random( uvt + VEC.yx / VHSRES.x );
    if ( n1 < n0 ) {
      col = mix( col, 2.0 * VEC.yyy, pow( n0, 5.0 ) );
    }
  }

Let me know if this works for you.

Regards,
Fabrice

In addition to the workaround posted by Fabrice above, please know that we have made a change to Flame 2025.2 Update that should solve this issue.