3. Image space motion blur
• 포스트 프로세스 처리
• 셰이더사용
• 모션 블러 영역안의 픽셀의 속도를 구해 현재 프레임의
이미지로 블러처리
4. Algorithm
• 텍스처에 전체 화면 렌더링 (t1 : scene)
• 각 픽셀별로 속도를 계산 (t2 : velocity mask)
– 버텍스 셰이더 이동
– 이전 위치와 현재 위치를 이용
• 두 장의 텍스처(t1, t2)로 모션블러 합성
• 마지막 두 단계는 한 단계로 통합가능
– t1을 복사한 t1’ 으로 t1에 픽셀별로 바로 합성
7. Velocity Texture(2)
• 이전위치 전달
– 이전 프레임의 매트릭스와 ViewTM을 전달 (일반적인 형태)
• prevProjCoord = in.coord * prevTM * prevViewTM
• 세이더 변수의 개수제한으로 스키닝에 한계가 있음 (가능하다면)
– prevProjCoord = (in.coord * prevTM[in.idx.x] * in.weight.x + in.coord
* prevTM[in.idx.y] * in.weight.y … ) * prevViewTM
– 이 경우 Shader3 Model은 텍스처를 이용하면 접근 가능
– 버텍스 정보에 담아서 (텍스처정보에 이전 위치 벡터를)
• CPU로 소프트웨어 트랜스폼 및 스키닝을 하는 경우prevProjCoord
= in.prevCoord * prevViewTM
• 가볍게 카메라의 이동에 대해서만 처리하는 것도 가능
– prevProjCoord = in.coord * curTM * prevViewTM
16. Depth-based Velocity
• 씬이 정적이라고 가정하고 카메라에 의한 변화만 있다고
가정 (원경은 동적이더라도 움직임이 작아 납득할 수준)
• 스크린상 위치와 depth를 이용하면 뷰 좌표를 얻을 수
있으므로 이전 카메라 viewTM을 이용해서 Velocity 일괄
계산