Shaderstudy Motion Blur

13
http://cafe.naver.com/shader 임용균 ([email protected]) Motion Blur as a Post-Processing Effect

Transcript of Shaderstudy Motion Blur

Page 1: Shaderstudy Motion Blur

http://cafe.naver.com/shader

임용균 ([email protected])

Motion Blur as a Post-Processing Effect

Page 2: Shaderstudy Motion Blur

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

Page 3: Shaderstudy Motion Blur

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

Page 4: Shaderstudy Motion Blur

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

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

다.

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

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

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

가되어야 한다.

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

Page 5: Shaderstudy Motion Blur

depth buffer를 pixel shader의 texture input으로 활

용한 테크닉

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

용하여 world position을 구한다.

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

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

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

할 수 있다.

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

Page 6: Shaderstudy Motion Blur

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

post-processing step

Page 7: Shaderstudy Motion Blur

H : viewport-space position

M : world-view-projection matrix

W : world-space position

Page 8: Shaderstudy Motion Blur

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

Page 9: Shaderstudy Motion Blur

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

구한다.

Page 10: Shaderstudy Motion Blur

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

한다.

Page 11: Shaderstudy Motion Blur
Page 12: Shaderstudy Motion Blur

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

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

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

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

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

Page 13: Shaderstudy Motion Blur