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

1 Like

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.

2 Likes

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

6 Likes

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

6 Likes

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.

5 Likes