Real-Time Global Illumination
Techniques

                  이장호 jangho.lee@gmail.com

                KASA Open Seminar, 2011.06.12
개요

 Global Illumination 소개

 Real-Time / for Games

 Indirect Lighting(Inter-reflections) Techniques
   – SSGI, RSM, SII, IR, ISM, CLPV

 토의 및 결론
Global Illumination

 Direct Illumination + Indirect Illumination

 Offline Techniques
   – Radiosity
   – Ray Tracing
   – Photon Mapping




                                        Cornell Box, 실제, 렌더링, 차이 [cu98]
Local Illumination vs Global Illumination




      Local Illumination   Global Illumination
Direct, Indirect Illumination




    Direct Illumination




                           Direct + Indirect Illumination, Shrek2



   Indirect Illumination
GI Equation




                                        [sc09]




              L
                  ωr       n       Li

                               θ



                       x
Radiosity

 Radiosity = 단위 시간, 단위 면적당 에너지

 Patch 단위, Form Factor에 의해 면적당 에너지 계산, 누적

 Diffuse-Diffuse Interaction 만 고려




        Radiosity Patches            Form Factor
Ray Tracing

 시야에서 광선 추적 (Reverse, View Dependent)

 Hit Object 마다 Lighting 계산, Reflected or Refracted로 확장

 Path Tracing으로 Indirect Lighting 구현 가능



                   Screen                                     Light

                                Reflected
       Eye


                                                         Refracted
                                Shadowed


               Ray Tracing (Reflected, Refracted, Shadowed)
Photon Mapping

 Light로부터 방출된 Photon 저장, Path Tracing으로 Rendering

 2 Pass: Photon Tracing, Rendering

 Caustics, Sub-Surface Scattering 등에 빠른 계산




         Photon Visualization         Rendering
Real-Time?

 2011년 기준 상용 하드웨어, 상용 제품
   – PC, XBox360, PS3

 Pre-Computed + Direct Illumination이 대세

 기존 GI 알고리즘의 직접 적용
   – 실시간 Ray Tracing은 데모 수준
   – 실시간 Radiosity는 단순화된 씬으로 가속, Enlighten/BF3
   – Offline Renderer에 도움을 주는 역할

 Indirect Illumination에 특화된 적용
   – Diffuse Inter-reflection
   – 1 Bounce
Lighting in Games

 Static Light & Static Geometry
   – Lightmap

 Dynamic Light & Static Geometry
   – PRT

 Static Light & Dynamic Geometry
   – Irradiance Volumes (Point Light Cloud)

 Dynamic Light & Dynamic Geometry
   –   SSGI
   –   RSM, SII
   –   IR, ISM
   –   CLPV
SSGI

 Screen Space Global Illumination [ssdo09]

 SSAO(SSDO)를 Indirect Illumination으로 확장

 D.I. 이후, 인접 Pixel을 간접 광원으로 사용

 1 Bounce

 SSAO 대비 약 30% 추가 비용
   –   SSAO: 58fps
   –   SSGI: 40fps
   –   1024 x768, N=16
   –   nVidia 8800 GTX


                                   SSDO       SSGI
SSGI

 Result
SSGI

 SSAO와 동일한 장단점

 화면 복잡도와 무관한 성능

 잘못된 Occlusion: Depth, 각도

 지역적: 반경 이상의 간접광 표현 못함




         잘못된 Visibility: 각도 변화   잘못된 Occlusion: Depth
RSM

 Reflective Shadow Maps [rsm05]

 Shadow Map을 Indirect Light Source로 활용

 Shadow Map이므로, Light의 Occlusion을 내포

 1 Light source, 1 Bounce

 RSM 생성을 제외하고, 화면 복잡도와 무관, 동일한 성능
RSM

 Light 시점에서 RSM 생성, Depth(Position), Normal, Flux

 각 픽셀을 Light Source로 간주

 Light 시점에서 생성된 RSM




      Depth           Position   Normal   Flux: Bright + Color
RSM

 Fragment Shader(PS)에서 Indirect Illumination 계산




                                           모든 픽셀을 누적




       x의 Indirect Lighting 계산시 참조하는 RSM
RSM

 Gathering
   – Potentially Important Samples
   – polor 좌표계, st(uv)




      월드 분포의 거리가 RSM에서의 분포와 비례       면적당 Weight
RSM

 Result
   – 9.1fps, 512 x 512, N=224, nVidia FX4000




                                        Light 시점에서 생성된 RSM

             최종 렌더링 결과
Splatting Indirect Illumination

 RSM을 Gathering이 아닌 Shooting [sii07]

 Deferred Shading

 Instant Radiosity와 유사, Occlusion이 고려되진 않음




                     Importance Sampling
Instant Radiosity

 VPL(Virtual Point Lights) 기반 [ir97][ir08]

 VPL을 생성하여 Direct, Indirect Light Source로 활용




           Light에서 VPL생성             VPL로부터 Illumination 계산
Instant Radiosity

 Result




           최종 렌더링   VPL 배치
Instant Radiosity

 Light Occlusion
   – Shadow Map을 이용
   – 쉽지만, 비싼 비용




                      각 VPL당 Shadow Maps
Instant Radiosity

 VPL Distribution
   – Path Tracing와 유사
   – Shadow를 포함한 VPL의 누적




  1차 바운스




    …




  4차 바운스



                     렌더링 결과누적
Imperfect Shadow Maps

 Instant Radiosity 기반 [ism08]

 Indirect Lighting은 매우 부드럽게 변함

 VPL의 기여도는 매우 작음
Imperfect Shadow Maps

 Low Quality Depth Maps로 충분
  – Point-Based Rendering으로 Depth Map 생성
Imperfect Shadow Maps

 Point-Based Depth Maps을 이용한 렌더링

 Pull-Push Hole Filling은 인접 Depth를 이용한 평균
Imperfect Shadow Maps

 Result
   – nVidia 8800GTX
Imperfect Shadow Maps

 Result: Bounce
   – 1024 x 1024, nVidia 8800GTX




   14.0fps, 1024 VPL   7.5fps, +256 VPL(bounce)   5.5fps, +256 VPL(bounce) * 2
Imperfect Shadow Maps

 Result: Comparison




       ISM, 11fps, 256^2, 8k VPL   Path Tracing, hours
CLPV

 Cascaded Light Propagation Volumes [clpv09] [clpv10a]
  [clpv10b]

 Propagation Volumes
   – lit surfaces 샘플링, 2차 라이트 소스
   – 3D Grid 안에 Clustering
   – 각각의 셀에 전파




            RSM         3D Cell에 Clustering   전파
CLPV

 Sampling
                               Depth
   – RSM 기반 샘플링




                               Normals




                               Albedo




              Lit Surfel 샘플링       RSM
CLPV

 Clustering




               3D Cell에 Clustering
CLPV

 Propagation




                 VPL


                VPL




                VPL



      RSM              Radiance Volume Clustering
                                                    인접 Cell에 전파, 반복
                       정규화된 Grid Cell에 SH로 표현
CLPV

 Propagation




                0 Iterations, only Injection
CLPV

 Propagation




                4 Iterations after Injection
CLPV

 Propagation




                6 Iterations
CLPV

 Propagation




                8 Iterations
CLPV

       Depth




       Normals




       Albedo
CLPV

 Cascaded
  –   Multi-Resolution Approach
  –   Cascaded Shadow Maps와 유사
  –   근접한 곳에 더 디테일한 정보
  –   렌더링시에 해상도별 동시 참조




                                  3단계 Cascaded LPV
CLPV




       Global Illumination Off
CLPV




       Global Illumination On / 1 LPV
CLPV




       Global Illumination On / 3 LPVs
CLPV

 높은 성능
   –   32^3 Grid, 8 Iterations, 1280 x 720
   –   GTS250 2.4ms (RSM 256 x 256)
   –   Xbox360 2.4ms (RSM 128 x 128)
   –   PS3 3.0ms (RSM 128 x 128)
   –   Frame Skipping 및 Camera 변화에 따른 조절로 1~2ms 수준 최적화

 GPU Friendly

 안정적인 결과
   – Scene 복잡도 무관
   – Flicker-Free
토의 및 결론

 Lighting Keywords
   –   Lightmap
   –   Image Based Lighting
   –   Deferred Lighting
   –   Real-Time GI

 환경, 품질, 성능에 따라 선택, 혼용

 GI로 수렴될 것으로 예상?!
참고 문헌

   [cu98] The Cornell Box
    http://www.graphics.cornell.edu/online/box/

   [sc09] Real-Time Global Illumination for Dynamic Scenes,
    Siggraph Course, Carsten Dachsbacher, Jan Kautz, 2009

   [ssdo09] Approximating Dynamic Global Illumination in Screen
    Space, Tobias Ritschel, Thorsten Grosch, Hans-Peter Seidel, I3D,
    2009

   [rsm05] Reflective shadow maps, Carsten Dachsbacher and Marc
    Stamminger, I3D, 2005

   [sii07] Splatting Indirect Illumination, Carsten Dachsbacher and
    Marc Stamminger, 2007
참고 문헌

   [ir97] Instant radiosity, Alexander Keller, SIGGRAPH, 1997

   [ir08] Instant Radiosity An Approach for Real-Time Global
    Illumination, Martin Kinkelin and Christian Liensberger, 2008

   [ism08] Imperfect shadow maps for efficient computation of
    indirect illumination, Tobias Ritschel et al., SIGGRAPH Asia, 2008

   [clpv09] Light Propagation Volumes in CryEngine 3, Anton
    Kaplanyan, SIGGRAPH Course, 2009

   [clpv10a] Real-time Diffuse Global Illumination in CryENGINE 3,
    Anton Kaplanyan, SIGGRAPH Course, 2010

   [clpv10b] Cascaded Light Propagation Volumes for Real Time
    Indirect Illumination, Anton Kaplanyan and Carsten Dachsbacher,
    I3D, 2010

Real-Time Global Illumination Techniques

  • 1.
    Real-Time Global Illumination Techniques 이장호 jangho.lee@gmail.com KASA Open Seminar, 2011.06.12
  • 2.
    개요  Global Illumination소개  Real-Time / for Games  Indirect Lighting(Inter-reflections) Techniques – SSGI, RSM, SII, IR, ISM, CLPV  토의 및 결론
  • 3.
    Global Illumination  DirectIllumination + Indirect Illumination  Offline Techniques – Radiosity – Ray Tracing – Photon Mapping Cornell Box, 실제, 렌더링, 차이 [cu98]
  • 4.
    Local Illumination vsGlobal Illumination Local Illumination Global Illumination
  • 5.
    Direct, Indirect Illumination Direct Illumination Direct + Indirect Illumination, Shrek2 Indirect Illumination
  • 6.
    GI Equation [sc09] L ωr n Li θ x
  • 7.
    Radiosity  Radiosity =단위 시간, 단위 면적당 에너지  Patch 단위, Form Factor에 의해 면적당 에너지 계산, 누적  Diffuse-Diffuse Interaction 만 고려 Radiosity Patches Form Factor
  • 8.
    Ray Tracing  시야에서광선 추적 (Reverse, View Dependent)  Hit Object 마다 Lighting 계산, Reflected or Refracted로 확장  Path Tracing으로 Indirect Lighting 구현 가능 Screen Light Reflected Eye Refracted Shadowed Ray Tracing (Reflected, Refracted, Shadowed)
  • 9.
    Photon Mapping  Light로부터방출된 Photon 저장, Path Tracing으로 Rendering  2 Pass: Photon Tracing, Rendering  Caustics, Sub-Surface Scattering 등에 빠른 계산 Photon Visualization Rendering
  • 10.
    Real-Time?  2011년 기준상용 하드웨어, 상용 제품 – PC, XBox360, PS3  Pre-Computed + Direct Illumination이 대세  기존 GI 알고리즘의 직접 적용 – 실시간 Ray Tracing은 데모 수준 – 실시간 Radiosity는 단순화된 씬으로 가속, Enlighten/BF3 – Offline Renderer에 도움을 주는 역할  Indirect Illumination에 특화된 적용 – Diffuse Inter-reflection – 1 Bounce
  • 11.
    Lighting in Games Static Light & Static Geometry – Lightmap  Dynamic Light & Static Geometry – PRT  Static Light & Dynamic Geometry – Irradiance Volumes (Point Light Cloud)  Dynamic Light & Dynamic Geometry – SSGI – RSM, SII – IR, ISM – CLPV
  • 12.
    SSGI  Screen SpaceGlobal Illumination [ssdo09]  SSAO(SSDO)를 Indirect Illumination으로 확장  D.I. 이후, 인접 Pixel을 간접 광원으로 사용  1 Bounce  SSAO 대비 약 30% 추가 비용 – SSAO: 58fps – SSGI: 40fps – 1024 x768, N=16 – nVidia 8800 GTX SSDO SSGI
  • 13.
  • 14.
    SSGI  SSAO와 동일한장단점  화면 복잡도와 무관한 성능  잘못된 Occlusion: Depth, 각도  지역적: 반경 이상의 간접광 표현 못함 잘못된 Visibility: 각도 변화 잘못된 Occlusion: Depth
  • 15.
    RSM  Reflective ShadowMaps [rsm05]  Shadow Map을 Indirect Light Source로 활용  Shadow Map이므로, Light의 Occlusion을 내포  1 Light source, 1 Bounce  RSM 생성을 제외하고, 화면 복잡도와 무관, 동일한 성능
  • 16.
    RSM  Light 시점에서RSM 생성, Depth(Position), Normal, Flux  각 픽셀을 Light Source로 간주 Light 시점에서 생성된 RSM Depth Position Normal Flux: Bright + Color
  • 17.
    RSM  Fragment Shader(PS)에서Indirect Illumination 계산 모든 픽셀을 누적 x의 Indirect Lighting 계산시 참조하는 RSM
  • 18.
    RSM  Gathering – Potentially Important Samples – polor 좌표계, st(uv) 월드 분포의 거리가 RSM에서의 분포와 비례 면적당 Weight
  • 19.
    RSM  Result – 9.1fps, 512 x 512, N=224, nVidia FX4000 Light 시점에서 생성된 RSM 최종 렌더링 결과
  • 20.
    Splatting Indirect Illumination RSM을 Gathering이 아닌 Shooting [sii07]  Deferred Shading  Instant Radiosity와 유사, Occlusion이 고려되진 않음 Importance Sampling
  • 21.
    Instant Radiosity  VPL(VirtualPoint Lights) 기반 [ir97][ir08]  VPL을 생성하여 Direct, Indirect Light Source로 활용 Light에서 VPL생성 VPL로부터 Illumination 계산
  • 22.
    Instant Radiosity  Result 최종 렌더링 VPL 배치
  • 23.
    Instant Radiosity  LightOcclusion – Shadow Map을 이용 – 쉽지만, 비싼 비용 각 VPL당 Shadow Maps
  • 24.
    Instant Radiosity  VPLDistribution – Path Tracing와 유사 – Shadow를 포함한 VPL의 누적 1차 바운스 … 4차 바운스 렌더링 결과누적
  • 25.
    Imperfect Shadow Maps Instant Radiosity 기반 [ism08]  Indirect Lighting은 매우 부드럽게 변함  VPL의 기여도는 매우 작음
  • 26.
    Imperfect Shadow Maps Low Quality Depth Maps로 충분 – Point-Based Rendering으로 Depth Map 생성
  • 27.
    Imperfect Shadow Maps Point-Based Depth Maps을 이용한 렌더링  Pull-Push Hole Filling은 인접 Depth를 이용한 평균
  • 28.
    Imperfect Shadow Maps Result – nVidia 8800GTX
  • 29.
    Imperfect Shadow Maps Result: Bounce – 1024 x 1024, nVidia 8800GTX 14.0fps, 1024 VPL 7.5fps, +256 VPL(bounce) 5.5fps, +256 VPL(bounce) * 2
  • 30.
    Imperfect Shadow Maps Result: Comparison ISM, 11fps, 256^2, 8k VPL Path Tracing, hours
  • 31.
    CLPV  Cascaded LightPropagation Volumes [clpv09] [clpv10a] [clpv10b]  Propagation Volumes – lit surfaces 샘플링, 2차 라이트 소스 – 3D Grid 안에 Clustering – 각각의 셀에 전파 RSM 3D Cell에 Clustering 전파
  • 32.
    CLPV  Sampling Depth – RSM 기반 샘플링 Normals Albedo Lit Surfel 샘플링 RSM
  • 33.
    CLPV  Clustering 3D Cell에 Clustering
  • 34.
    CLPV  Propagation VPL VPL VPL RSM Radiance Volume Clustering 인접 Cell에 전파, 반복 정규화된 Grid Cell에 SH로 표현
  • 35.
    CLPV  Propagation 0 Iterations, only Injection
  • 36.
    CLPV  Propagation 4 Iterations after Injection
  • 37.
  • 38.
  • 39.
    CLPV Depth Normals Albedo
  • 40.
    CLPV  Cascaded – Multi-Resolution Approach – Cascaded Shadow Maps와 유사 – 근접한 곳에 더 디테일한 정보 – 렌더링시에 해상도별 동시 참조 3단계 Cascaded LPV
  • 41.
    CLPV Global Illumination Off
  • 42.
    CLPV Global Illumination On / 1 LPV
  • 43.
    CLPV Global Illumination On / 3 LPVs
  • 44.
    CLPV  높은 성능 – 32^3 Grid, 8 Iterations, 1280 x 720 – GTS250 2.4ms (RSM 256 x 256) – Xbox360 2.4ms (RSM 128 x 128) – PS3 3.0ms (RSM 128 x 128) – Frame Skipping 및 Camera 변화에 따른 조절로 1~2ms 수준 최적화  GPU Friendly  안정적인 결과 – Scene 복잡도 무관 – Flicker-Free
  • 45.
    토의 및 결론 Lighting Keywords – Lightmap – Image Based Lighting – Deferred Lighting – Real-Time GI  환경, 품질, 성능에 따라 선택, 혼용  GI로 수렴될 것으로 예상?!
  • 46.
    참고 문헌  [cu98] The Cornell Box http://www.graphics.cornell.edu/online/box/  [sc09] Real-Time Global Illumination for Dynamic Scenes, Siggraph Course, Carsten Dachsbacher, Jan Kautz, 2009  [ssdo09] Approximating Dynamic Global Illumination in Screen Space, Tobias Ritschel, Thorsten Grosch, Hans-Peter Seidel, I3D, 2009  [rsm05] Reflective shadow maps, Carsten Dachsbacher and Marc Stamminger, I3D, 2005  [sii07] Splatting Indirect Illumination, Carsten Dachsbacher and Marc Stamminger, 2007
  • 47.
    참고 문헌  [ir97] Instant radiosity, Alexander Keller, SIGGRAPH, 1997  [ir08] Instant Radiosity An Approach for Real-Time Global Illumination, Martin Kinkelin and Christian Liensberger, 2008  [ism08] Imperfect shadow maps for efficient computation of indirect illumination, Tobias Ritschel et al., SIGGRAPH Asia, 2008  [clpv09] Light Propagation Volumes in CryEngine 3, Anton Kaplanyan, SIGGRAPH Course, 2009  [clpv10a] Real-time Diffuse Global Illumination in CryENGINE 3, Anton Kaplanyan, SIGGRAPH Course, 2010  [clpv10b] Cascaded Light Propagation Volumes for Real Time Indirect Illumination, Anton Kaplanyan and Carsten Dachsbacher, I3D, 2010