shader_type canvas_item;
uniform sampler2D tex;
float rand(vec2 vector){
return fract(sin(dot(vector.xy, vec2(12.98, 78.23))) * 43758.54);
}
float cutValue(float value, float scale){
return round(value * scale) / scale;
}
void vertex() {
VERTEX += rand(VERTEX+ cutValue(TIME,3.0))*.01;
}
void fragment() {
vec2 uv = vec2(UV.x,1.0-UV.y);
vec4 tex2 = texture(tex, uv);
COLOR = vec4(tex2.rgb,1.0);
}
원리는 간단하다. 텍스처를 받아 샘플링하여 표시하되, Vertex는 각 위치마다 시간 1/3초 마다 난수를 생성하여 최대 0.01 크기를 가지는 값을 생성한다. 그리고 이 값을 VERTEX에 이리저리 더해주면 각 랜덤 난수가 위치마다 더해진다. 그리고 이를 GPU는 자동으로 보간하기 때문에 UV값을 그대로 가져다 사용하면 이리저리 삐뚤 빠뚤한 그림이 구현된다.
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.