Bilateral Filtering /Reprojection Cache 기법 소개             김성익(noerror@hitel.net)                       2009/09/27
렌더링 최적화• 렌더링 퍼포먼스의 한계 – 메모리 대역폭 – 연산량 (코어 속도, 파이프라인 개수..) – 필레이트• 고해상도, 무거운 셰이더 시대에, 적은 필레이트와 적은  셰이더 연산을 유도하는 기법 소개 – 축소버...
축소 버퍼(1)• 해상도가 작아지면 퍼포먼스가 향상  – 이상적으로 가로 세로 1/2 => 퍼포먼스 4배 향상• 그럼, 작은 해상도에 렌더링한 후 Upsampling 한다면  – 속도는 향상되지만  – 뭉개지는 느낌 =...
축소버퍼(2)• 오프스크린 파티클  – 작은 사이즈의 텍스처에 파티클 렌더링  – 원래 사이즈로 업셈플링  – (참고: Z 버퍼 경계지점에 Z테스트 이슈)
축소버퍼(3)• 기어스오브워2 사례 – SSAO에 AO텍스처 축소버퍼사용 (언리얼3)   • 이미지 특성이 저주파 성격   • 업셈플링시 샘플링 픽셀중 가장 큰 z 값으로 z test
Bilateral Filtering(1)• Bilinear Filtering 혹은 Gaussian Filtering 등은 셈플링할  픽셀 주변의 색을 공평하게 반영  – Halo 발생
Bilateral Filtering(2)• 만약, 마스킹등으로 가중치를 주고 이를 가중치에 반영  – 산의 볼륨을 마스크로 가중치를 주어 가우시안 가중치와 곱한 경우• 블러를 더 강하게 주더라도 경계는 샤프하게 유지
Bilateral Filtering(3)•   가중치는 샘플링할 점과의 연속성을 나타냄•   이미지 베이스 프로세싱에서는 마스크(가중치)를 어떻게 주느냐가 과제    – 하지만 3d 렌더링 이미지는 Depth 값을 활용...
Bilateral Filtering(4)• AO에 사용  – 이미지가 저주파 특성 => 시각적 손상이 거의 없음  – 셰이더가 무겁기 때문에, 해상도가 줄어들 경우 굉장한 이득
Bilateral Filtering(5)• 적극적으로 활용해서 저해상도부터 차례로 렌더링  – 고주파영역은 다음 해상도에서 렌더링  – 저주파 영역은 마스킹 (PixelShader에서 패스)
Reprojection Cache(1)• 무거운 셰이더 연산 부담• 아예 픽셀 셰이딩 계산을 PASS할 수 있다면 => 퍼포먼스 향상• 기본 아이디어는 바로 전 프레임의 렌더링 결과를 활용하여 새롭게  나타난 부분만 셰...
Reprojection Cache(2)•   어떻게 이전 프레임에서 결과를 가져오나    – 현제 픽셀의 전 프레임에서의 월드 좌표를 구한다. => 정적인 오브젝트라면 동      일    – 월드 좌표를 이전 프레임의...
Reprojection Cache(3)•   Hit 테스트하는 두가지 방법    – 1패스로 하는 방법       • 셰이더의 복잡도가 높아짐 (셰이더 코드에 Hittest 코드가 삽입되어야 함)    – 2패스에 의한...
Reprojection Cache(4)•   Specular 같은 뷰 의존적인 셰이딩 연산 오류    – 이전 프레임 값은 현재 계산한 값과 다름    – 해결법       • 뷰독립적인 셰이더 연산에만 사용      ...
Temporal Coherence•   Reprojection Cache와 알고리즘/컨셉은 유사하나 목표가 다름•   이전 프레임의 결과를 현재 프레임에 누적해서 사용•   품질 향상을 위함 (적은 셈플로 품질을 높임 ...
감사합니다~
참고문서•   High-Speed, Off-Screen Particles, Iain Cantlay•   Geometry-Aware Framebuffer Level of Detail, Lei Yang at el•   Re...
Upcoming SlideShare
Loading in …5
×

09_Bilateral filtering/Reprojection Cache 소개

900 views

Published on

Bilateral Filtering 소개

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
900
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

09_Bilateral filtering/Reprojection Cache 소개

  1. 1. Bilateral Filtering /Reprojection Cache 기법 소개 김성익(noerror@hitel.net) 2009/09/27
  2. 2. 렌더링 최적화• 렌더링 퍼포먼스의 한계 – 메모리 대역폭 – 연산량 (코어 속도, 파이프라인 개수..) – 필레이트• 고해상도, 무거운 셰이더 시대에, 적은 필레이트와 적은 셰이더 연산을 유도하는 기법 소개 – 축소버퍼 / Bilateral Filtering – Reprojection Cache
  3. 3. 축소 버퍼(1)• 해상도가 작아지면 퍼포먼스가 향상 – 이상적으로 가로 세로 1/2 => 퍼포먼스 4배 향상• 그럼, 작은 해상도에 렌더링한 후 Upsampling 한다면 – 속도는 향상되지만 – 뭉개지는 느낌 => 시각적 손상이 있다. 저주파 특성일수록 손상이 적다 (속도와 트레이드오프관계) – 옆픽셀이 묻어나오는 Halo 효과 발생
  4. 4. 축소버퍼(2)• 오프스크린 파티클 – 작은 사이즈의 텍스처에 파티클 렌더링 – 원래 사이즈로 업셈플링 – (참고: Z 버퍼 경계지점에 Z테스트 이슈)
  5. 5. 축소버퍼(3)• 기어스오브워2 사례 – SSAO에 AO텍스처 축소버퍼사용 (언리얼3) • 이미지 특성이 저주파 성격 • 업셈플링시 샘플링 픽셀중 가장 큰 z 값으로 z test
  6. 6. Bilateral Filtering(1)• Bilinear Filtering 혹은 Gaussian Filtering 등은 셈플링할 픽셀 주변의 색을 공평하게 반영 – Halo 발생
  7. 7. Bilateral Filtering(2)• 만약, 마스킹등으로 가중치를 주고 이를 가중치에 반영 – 산의 볼륨을 마스크로 가중치를 주어 가우시안 가중치와 곱한 경우• 블러를 더 강하게 주더라도 경계는 샤프하게 유지
  8. 8. Bilateral Filtering(3)• 가중치는 샘플링할 점과의 연속성을 나타냄• 이미지 베이스 프로세싱에서는 마스크(가중치)를 어떻게 주느냐가 과제 – 하지만 3d 렌더링 이미지는 Depth 값을 활용할 수 있다!!
  9. 9. Bilateral Filtering(4)• AO에 사용 – 이미지가 저주파 특성 => 시각적 손상이 거의 없음 – 셰이더가 무겁기 때문에, 해상도가 줄어들 경우 굉장한 이득
  10. 10. Bilateral Filtering(5)• 적극적으로 활용해서 저해상도부터 차례로 렌더링 – 고주파영역은 다음 해상도에서 렌더링 – 저주파 영역은 마스킹 (PixelShader에서 패스)
  11. 11. Reprojection Cache(1)• 무거운 셰이더 연산 부담• 아예 픽셀 셰이딩 계산을 PASS할 수 있다면 => 퍼포먼스 향상• 기본 아이디어는 바로 전 프레임의 렌더링 결과를 활용하여 새롭게 나타난 부분만 셰이더 연산
  12. 12. Reprojection Cache(2)• 어떻게 이전 프레임에서 결과를 가져오나 – 현제 픽셀의 전 프레임에서의 월드 좌표를 구한다. => 정적인 오브젝트라면 동 일 – 월드 좌표를 이전 프레임의 뷰좌표계로 변환한다. – 프로젝션하여 이전 프레임 버퍼의 uv 좌표를 구한다. => 픽셀 값과 이전 프레임 의 깊이 값을 구할 수 있다. – 뷰좌표로 구해진 z 값과 이전 프레임의 깊이 버퍼의 z값을 비교 => 거의 같다면 픽셀 값을 가져온다.
  13. 13. Reprojection Cache(3)• Hit 테스트하는 두가지 방법 – 1패스로 하는 방법 • 셰이더의 복잡도가 높아짐 (셰이더 코드에 Hittest 코드가 삽입되어야 함) – 2패스에 의한 방법 • 1pass Hit 테스트 후 Hit하면 이전 프레임 픽셀을 채우고 스텐실값도 set • 2pass 기존 방식과 동일하게 다시 렌더링 (but 이전 픽셀값을 사용하는 픽셀은 스텐실 테스트에서 pass) • 기존 시스템 큰 변경 없이 적용 가능
  14. 14. Reprojection Cache(4)• Specular 같은 뷰 의존적인 셰이딩 연산 오류 – 이전 프레임 값은 현재 계산한 값과 다름 – 해결법 • 뷰독립적인 셰이더 연산에만 사용 • HitTest에 의도적으로 노이즈 삽입 (엄격하게 항상 같은 컬러는 아니지만 밀도에 따라 시각적 손실을 최소화할 수 있음)
  15. 15. Temporal Coherence• Reprojection Cache와 알고리즘/컨셉은 유사하나 목표가 다름• 이전 프레임의 결과를 현재 프레임에 누적해서 사용• 품질 향상을 위함 (적은 셈플로 품질을 높임 <= 퍼포먼스 향상)• 기어스오브워2 케이스 – 이전 프레임의 AO 결과를 활용 – 적은 샘플링으로 시각적 품질 향상
  16. 16. 감사합니다~
  17. 17. 참고문서• High-Speed, Off-Screen Particles, Iain Cantlay• Geometry-Aware Framebuffer Level of Detail, Lei Yang at el• Rendering Techniques in Gears of War 2, Niklas Smedberg and Daniel Wright• A Gentle Introduction to Bilateral Filtering and its Applications, S. Paris at el• Mixed Resolution Rendering, Jeremy Shopf• The Real-Time Reprojection Cache, Diego Nehab at el• Automated Reprojection-Based Pixel Shader Optimization, Diego Nehab at el

×