float rand(vec2 vector) {
return fract(sin(dot(vector.xy, vec2(12.98, 78.23))) * 43758.54);
}
void main() {
vec2 pUV = oUV;
float randomValue = rand(oUV);
float uvRandom = sin(pUV.x*3.0*randomValue + time*5.0)*0.001+(rand(oUV * time*0.5)*0.01);
pUV += uvRandom;
vec4 inputColor = texture(inputTexture, pUV);
gl_FragColor = inputColor;
}
1) 먼저 UV 좌표로부터 랜덤 값을 가져온다. 2) 그리고 UV의 x 값에 따라 울렁이는 효과에 (약 360도), 3) 시간을 더해 흘러가는 효과를 주고 그 위에 랜덤 정보를 섞어서 노이즈 효과를 극대화 시킨다.