요즘 게임에서 아무나 다 한다는 MotionBlur 작업 완료!!
(DragonNest를 해보고, 멋져 보여서 급하게 만들어 보았음.)
Reference는 굉장히 많은데,
- noerror님이 KASA에서 발표한 모션블러 발표자료
- GPUGems3권의 MotionBlur As PostProcess(이건 번역글)
ShaderX7권에서 소개된 내용.
Google에서 "MotionBlur Shader"라고 검색하면, GameDev.net에서 토론된 내용들을 볼 수 있습니다.
일단 다이나믹 오브젝트에 대한 처리는 너무 처리할 것이 많고, Skinning에 대해서는 엄청 복잡해지기 때문에, 일단 개요만 알고 넘어가기로 하고, KillZone2의 DeferredShading에 대한 문서를 보아도 알 수 있듯이, 그냥 Depth와 이전 ViewProjection을 가지고, 즉 카메라의 이동만을 기준으로 VelocityMap을 만드는 방향이 좋을 듯....(GPUGem3 권에 내용은 이게 전부...)
이전에 만들어 두었던 DepthOfField나 DeferredShading을 위한 Depth는 view space depth가 필요했는데, 이 녀석은 projection된 depth가 필요하다고 해서, 대략...
DepthBuffer = float4(viewDepth, 0, posDepth, 1);
이런 식으로...
이 작업의 키 포인트는 Depth->Postion으로 사용하는 것.
방법은 약간 다르지만, Deferred Lighting을 할 때, G-Buffer를 Position을 넣어주지 않고, Depth로 Position을 만들면, 텍스쳐를 아낄 수 있으므로(A16xxx ->A8xxxx), 기억해 두었다가 다음에도 응용하기!!!
대략 되었으니, 다음으로 후다닥!!!





덧글