• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
09_Bilateral filtering/Reprojection Cache 소개
 

09_Bilateral filtering/Reprojection Cache 소개

on

  • 589 views

Bilateral Filtering 소개

Bilateral Filtering 소개

Statistics

Views

Total Views
589
Views on SlideShare
589
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    09_Bilateral filtering/Reprojection Cache 소개 09_Bilateral filtering/Reprojection Cache 소개 Presentation Transcript

    • Bilateral Filtering /Reprojection Cache 기법 소개 김성익(noerror@hitel.net) 2009/09/27
    • 렌더링 최적화• 렌더링 퍼포먼스의 한계 – 메모리 대역폭 – 연산량 (코어 속도, 파이프라인 개수..) – 필레이트• 고해상도, 무거운 셰이더 시대에, 적은 필레이트와 적은 셰이더 연산을 유도하는 기법 소개 – 축소버퍼 / Bilateral Filtering – Reprojection Cache
    • 축소 버퍼(1)• 해상도가 작아지면 퍼포먼스가 향상 – 이상적으로 가로 세로 1/2 => 퍼포먼스 4배 향상• 그럼, 작은 해상도에 렌더링한 후 Upsampling 한다면 – 속도는 향상되지만 – 뭉개지는 느낌 => 시각적 손상이 있다. 저주파 특성일수록 손상이 적다 (속도와 트레이드오프관계) – 옆픽셀이 묻어나오는 Halo 효과 발생
    • 축소버퍼(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)• 어떻게 이전 프레임에서 결과를 가져오나 – 현제 픽셀의 전 프레임에서의 월드 좌표를 구한다. => 정적인 오브젝트라면 동 일 – 월드 좌표를 이전 프레임의 뷰좌표계로 변환한다. – 프로젝션하여 이전 프레임 버퍼의 uv 좌표를 구한다. => 픽셀 값과 이전 프레임 의 깊이 값을 구할 수 있다. – 뷰좌표로 구해진 z 값과 이전 프레임의 깊이 버퍼의 z값을 비교 => 거의 같다면 픽셀 값을 가져온다.
    • Reprojection Cache(3)• Hit 테스트하는 두가지 방법 – 1패스로 하는 방법 • 셰이더의 복잡도가 높아짐 (셰이더 코드에 Hittest 코드가 삽입되어야 함) – 2패스에 의한 방법 • 1pass Hit 테스트 후 Hit하면 이전 프레임 픽셀을 채우고 스텐실값도 set • 2pass 기존 방식과 동일하게 다시 렌더링 (but 이전 픽셀값을 사용하는 픽셀은 스텐실 테스트에서 pass) • 기존 시스템 큰 변경 없이 적용 가능
    • Reprojection Cache(4)• Specular 같은 뷰 의존적인 셰이딩 연산 오류 – 이전 프레임 값은 현재 계산한 값과 다름 – 해결법 • 뷰독립적인 셰이더 연산에만 사용 • HitTest에 의도적으로 노이즈 삽입 (엄격하게 항상 같은 컬러는 아니지만 밀도에 따라 시각적 손실을 최소화할 수 있음)
    • Temporal Coherence• Reprojection Cache와 알고리즘/컨셉은 유사하나 목표가 다름• 이전 프레임의 결과를 현재 프레임에 누적해서 사용• 품질 향상을 위함 (적은 셈플로 품질을 높임 <= 퍼포먼스 향상)• 기어스오브워2 케이스 – 이전 프레임의 AO 결과를 활용 – 적은 샘플링으로 시각적 품질 향상
    • 감사합니다~
    • 참고문서• 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