SlideShare a Scribd company logo
1 of 17
Download to read offline
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

More Related Content

What's hot

[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링Sukwoo Lee
 
Display color와 Digital texture format의 이해
Display color와 Digital texture format의 이해Display color와 Digital texture format의 이해
Display color와 Digital texture format의 이해SangYun Yi
 
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략MinGeun Park
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트강 민우
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현민웅 이
 
gametech 2012 Gladius project
gametech 2012 Gladius projectgametech 2012 Gladius project
gametech 2012 Gladius projectWuwon Yu
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기JinHwan Kim
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱MinGeun Park
 

What's hot (17)

[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Color Control
Color ControlColor Control
Color Control
 
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링
 
Display color와 Digital texture format의 이해
Display color와 Digital texture format의 이해Display color와 Digital texture format의 이해
Display color와 Digital texture format의 이해
 
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
 
Review MLP Mixer
Review MLP MixerReview MLP Mixer
Review MLP Mixer
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
High dynamic range
High dynamic rangeHigh dynamic range
High dynamic range
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
gametech 2012 Gladius project
gametech 2012 Gladius projectgametech 2012 Gladius project
gametech 2012 Gladius project
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
[박민근] 3 d렌더링 옵티마이징_4 임포스터_인스턴싱
 

Similar to 09_Bilateral filtering/Reprojection Cache 소개

[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
Deep learning super resolution
Deep learning super resolutionDeep learning super resolution
Deep learning super resolutionNAVER Engineering
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipelinechangehee lee
 
247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식NAVER D2
 
"Dataset and metrics for predicting local visible differences" Paper Review
"Dataset and metrics for predicting local visible differences" Paper Review"Dataset and metrics for predicting local visible differences" Paper Review
"Dataset and metrics for predicting local visible differences" Paper ReviewLEE HOSEONG
 
Semantic Image Synthesis with Spatially-Adaptive Normalization(GAUGAN, SPADE)
Semantic Image Synthesis with Spatially-Adaptive Normalization(GAUGAN, SPADE)Semantic Image Synthesis with Spatially-Adaptive Normalization(GAUGAN, SPADE)
Semantic Image Synthesis with Spatially-Adaptive Normalization(GAUGAN, SPADE)jungminchung
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬현찬 양
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlasnoerror
 
Chapter 12 applications - 1
Chapter 12 applications - 1Chapter 12 applications - 1
Chapter 12 applications - 1KyeongUkJang
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기Chang W. Doh
 
노동진 Mega splatting
노동진 Mega splatting노동진 Mega splatting
노동진 Mega splattingdrandom
 
반응형이미지
반응형이미지반응형이미지
반응형이미지영배 현
 
2019 5-5-week-i-learned-generative model
2019 5-5-week-i-learned-generative model2019 5-5-week-i-learned-generative model
2019 5-5-week-i-learned-generative modelstrutive07
 
111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_webCARROTCG
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________Kyoung Seok(경석) Ko(고)
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 

Similar to 09_Bilateral filtering/Reprojection Cache 소개 (20)

[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
Motion blur
Motion blurMotion blur
Motion blur
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
Deep learning super resolution
Deep learning super resolutionDeep learning super resolution
Deep learning super resolution
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식
 
"Dataset and metrics for predicting local visible differences" Paper Review
"Dataset and metrics for predicting local visible differences" Paper Review"Dataset and metrics for predicting local visible differences" Paper Review
"Dataset and metrics for predicting local visible differences" Paper Review
 
Semantic Image Synthesis with Spatially-Adaptive Normalization(GAUGAN, SPADE)
Semantic Image Synthesis with Spatially-Adaptive Normalization(GAUGAN, SPADE)Semantic Image Synthesis with Spatially-Adaptive Normalization(GAUGAN, SPADE)
Semantic Image Synthesis with Spatially-Adaptive Normalization(GAUGAN, SPADE)
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlas
 
Chapter 12 applications - 1
Chapter 12 applications - 1Chapter 12 applications - 1
Chapter 12 applications - 1
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
 
노동진 Mega splatting
노동진 Mega splatting노동진 Mega splatting
노동진 Mega splatting
 
반응형이미지
반응형이미지반응형이미지
반응형이미지
 
2019 5-5-week-i-learned-generative model
2019 5-5-week-i-learned-generative model2019 5-5-week-i-learned-generative model
2019 5-5-week-i-learned-generative model
 
111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
엔지니어링 비젼_동영상제거.pptx
엔지니어링 비젼_동영상제거.pptx엔지니어링 비젼_동영상제거.pptx
엔지니어링 비젼_동영상제거.pptx
 
엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 

More from noerror

11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용noerror
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집noerror
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법noerror
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문noerror
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템noerror
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법noerror
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법noerror
 
08_Marching Cube Terrains
08_Marching Cube Terrains08_Marching Cube Terrains
08_Marching Cube Terrainsnoerror
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기noerror
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강noerror
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개noerror
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문noerror
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개noerror
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editornoerror
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개noerror
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁noerror
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)noerror
 

More from noerror (20)

11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법
 
08_Marching Cube Terrains
08_Marching Cube Terrains08_Marching Cube Terrains
08_Marching Cube Terrains
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editor
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)
 

09_Bilateral filtering/Reprojection Cache 소개

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