Skip to main content
Motion Blur as a Post-Processing EffectGPU Gems 3 Chapter 27http://cafe.naver.com/shader임용균 (guardin@naver.com)
속도감을 표현하는데 매우 유용Motion Blur?
낮은 fps를 부드럽게 커버해준다.Motion Blur?
픽셀 별 속도 버퍼(velocity buffer)를 생성해야 되기 때문에 별도의 패스가 필요하다.MRT를 이용하여 패스를 줄일 수 있다.모든 scene의 shader에 속도를 계산하고 별도의 render target으로 출력하는 코드가 추가되어야 한다.MRT의 성능이 좋지 않은 하드웨어가 있다.Introduction
depth buffer를 pixel shader의 texture input으로 활용한 테크닉depth buffer와 현재 프레임의 view-projection matrix를 이용하여 world position을 구한다.world position을 이전 프레임의 view-projection matrix와 연산하여 이전 프레임의 viewport position을 구한다.현재 프레임의 값과 이전 프레임의 값을 빼면 velocity값을 구 할 수 있다.velocity값을 기준으로 여러 번 샘플링 한다.Introduction
기존의 엔진에 쉽게 통합 될 수 있다.It can be performed asa post-processing step
H : viewport-space positionM : world-view-projection matrixW : world-space positionExtractingObject Positions
depth buffer와 현재 프레임의 view-projection matrix를 이용하여 world position을 구한다.ExtractingObject Positions
world position을 이전 프레임의 view-projection matrix와 연산하여 이전 프레임의 viewport position을 구한다.Calculating Velocity
velocity값을 기준으로 scene을 여러 번 샘플링 한다.Performing the Motion Blur
Motion Blur
카메라의 움직임에 의해서만 모션 블러가 생긴다.dynamic object는 블러가 생기지 않는다!별도의 texture를 생성하여 dynamic object의 velocity를 기록한다.앞에서와 같이 viewport position의 차를 구하면 된다.world-view-projection matrix를 이용한다.Handling Dynamic Objects
Thanks for ListeningQuestion & Answer