Deferred Radiance Transfer Volumes




FryCry3
Global illumination
- low frequency advance transfer
- sun & sky bounce
- sky effect



Realtime Relighting
-GI update with - sun / color 
                 - time of day
                 - artist

- update with sun direction

Probe placement



   - support automation  world is large
    - vegetation bounding box to avoid noise
    - 3d grid for spatial indexing
    -  cell preferences closest probe

Probe baking

precomputed radiance ransfer
   - prt stored as 2nd order SH for each basis direction
   - 4x4 matrix of SH coefficients



SKY visibility
  - Low freq. spherical sky mask
  - single scalar for each basis direction

Local Radiance Transfer

    - Kristensen ET AL.,Siggraph 2005
    - assume at same pos as probes
     - store prt for a white light at each prob position


Real time relighting
 - driven by sun,sky
 - artist gradients
 - projected to 2nd order SH

Real time Relighting (PC)
 - compute light contribution each probe
   - result in color/intensities array
  - code runs on CPU/SPU
  - operations map well on GPU
  - find irradiance for each basis
   - find sky color for each basis
   - multiply be sky visibility
   - more basis added for more accuracy

Volume texture
 - fast probe one GPU
 - good for large object
 - RGBA 96x96x16


  - expensive    

Temporal amortization
   - update slice for which no data is available
   - wrapping avoid shifting exist slices

Vol. texture wrapping

Ambient shading
 - deferred rendering
 - single G-buffr pass
 - HDR lighting, post processing


deferred 
    - 4 RT  in one pass
   
- bounce is not pronounced at night 
- color variation from sky hemisphere

Transparencies / skin
Interior ambient
 - different light intensity indoor/ outdoor
 - low vol. resolution cases probe

Distant ambient
  - extra care for distant vegetation
  - use top down occlusion texture
 - one tile per world sector
 - occlusion from probes

PPU kick command buffer

PC. volume textures are blurred to soften the irradiance, add more vegetation occlusion 





Comments

Popular posts from this blog

Drawing textured cube with Vulkan on Android

glTF loader for Android Vulkan

C++ unit testing & CI integration in GitHub (I/2)