float glitch = step(0.7, rand(mod(time,2) * 5.0));
위 코드는 랜덤 값이 0.7 이상인 경우 glitch는 1이 되고, 아닌 경우 0이 할당되는 코드이다.
float timeScaled = cutValue(time,10);
timeScaled*=glitch;
float gapR = 0;
float gapG = 0;
float gapB = 0;
if(timeScaled!=0){
gapR =sin(rand(stair(uv+timeScaled+1,10)))*0.020;
gapG = sin(rand(stair(uv+timeScaled+2,10)))*0.020;
gapB = sin(rand(stair(uv+timeScaled+3,10)))*0.020;
}
glitch 값이 1이 나오는 경우 기존 timeScaled이 유지되도록 하고, 0이 나온 경우 timeScaled를 0으로 유지한다. 0인 경우 이미지를 합성하지 않고, 1인 경우 글리치가 적용되게끔 한다.
void main() {
vec2 uv = oUV;
float glitch = step(0.7, rand(mod(time,2) * 5.0));
float timeScaled = cutValue(time,10);
timeScaled*=glitch;
float gap = 0;
if(timeScaled!=0){
gap =sin(rand(cutValue(uv.x+timeScaled+1,10)))*0.020;
}
vec2 uvg = clamp(uv + gap,0.0,1.0);
vec4 color = texture(tex, uvg);
outColor = vec4(color.r , color.g, color.b, 1.0);
}