티스토리 뷰

목표

모션 블러 효과를 내기


방법

현재 방향을 나타내는 벡터를 셰이더에 전달하여 그 방향으로만 블러 효과를 준다.


코드(MotionBlur.fsh)

#ifdef GL_ES

precision lowp float;

#endif


varying vec2 v_texCoord;


uniform vec2 u_stepSize;


void main()

{

    vec4 color = vec4(0.0, 0.0, 0.0, 0.0);

    

    color += texture2D(CC_Texture0, v_texCoord + 4.0 * u_stepSize) * 0.06;

    color += texture2D(CC_Texture0, v_texCoord + 3.0 * u_stepSize) * 0.12;

    color += texture2D(CC_Texture0, v_texCoord + 2.0 * u_stepSize) * 0.18;

    color += texture2D(CC_Texture0, v_texCoord + 1.0 * u_stepSize) * 0.24;

    color += texture2D(CC_Texture0, v_texCoord + 0.0 * u_stepSize) * 0.35;

    

    gl_FragColor = color;

}


u_stepSize = vec2((nowSpeed/maxSpeed)/width, (nowSpeed/maxSpeed)/height);


결과

전달하는 u_stepSize 수치를 수정하면 블러 강도를 조절할 수 있다.


// 15.07.17 수정

속도를 stepSize로 사용하니 문제가 많아서 현재 위치에서 이전 위치를 뺀 값을 사용하도록 바꿨다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함