From my Godot bugreport
Minimal fragment shader code:
#version 300 es
precision highp int;
precision highp float;
// minimal shader for bug https://github.com/godotengine/godot/issues/43055
uniform float time; // >0
in vec2 fc[4];
layout(location=0) out lowp vec4 frag_color;
void main ()
{
float tval=0.;
// tval=min(time,0.); // fix - uncomment this also fix, this tval is 0 always
vec2 m_uv1[4];
m_uv1[0]=fc[0]+tval;
m_uv1[1]=fc[1]+tval;
m_uv1[2]=fc[2]+tval;
m_uv1[3]=fc[3]+tval;
float d=0.0;
frag_color = vec4(0.);
for (int i = 0; i < 8; i++) {
int tx=int(min(time,0.)); // fix - moving this out of loop fix crash
if ((tx==0)&&(i<4)) {
d = m_uv1[uint(i)].x;
return;
} else {
d = m_uv1[uint(i - 4)].x; // crash
// d = m_uv1[uint(max((i - 4),0))].x; // fix
}
}
frag_color = vec4(vec3(d),1.);
}
Compile this shader in Nvidia OpenGL GLSL compiler result crash compiler.