Shaderstudy Motion Blur

Preview:

Citation preview

http://cafe.naver.com/shader

임용균 (guardin@naver.com)

Motion Blur as a Post-Processing Effect

속도감을 표현하는데 매우 유용

낮은 fps를 부드럽게 커버해준다.

픽셀 별 속도 버퍼(velocity buffer)를 생

성해야 되기 때문에 별도의 패스가 필요하

다.

MRT를 이용하여 패스를 줄일 수 있다.

모든 scene의 shader에 속도를 계산하고 별

도의 render target으로 출력하는 코드가 추

가되어야 한다.

MRT의 성능이 좋지 않은 하드웨어가 있다.

depth buffer를 pixel shader의 texture input으로 활

용한 테크닉

depth buffer와 현재 프레임의 view-projection matrix를 이

용하여 world position을 구한다.

world position을 이전 프레임의 view-projection matrix와 연

산하여 이전 프레임의 viewport position을 구한다.

현재 프레임의 값과 이전 프레임의 값을 빼면 velocity값을 구

할 수 있다.

velocity값을 기준으로 여러 번 샘플링 한다.

기존의 엔진에 쉽게 통합 될 수 있다.

post-processing step

H : viewport-space position

M : world-view-projection matrix

W : world-space position

depth buffer와 현재 프레임의 view-projection matrix를 이용하여 world position을 구한다.

world position을 이전 프레임의 view-projection matrix와 연산하여 이전 프레임의 viewport position을

구한다.

velocity값을 기준으로 scene을 여러 번 샘플링

한다.

카메라의 움직임에 의해서만 모션 블러가 생긴다.

dynamic object는 블러가 생기지 않는다!

별도의 texture를 생성하여 dynamic object의velocity를 기록한다.

앞에서와 같이 viewport position의 차를 구하면 된다.

world-view-projection matrix를 이용한다.

Recommended