Radiosity
@article{goral1984modeling,
title={Modeling the interaction of light between diffuse surfaces},
author={Goral, Cindy M and Torrance, Kenneth E and Greenberg, Donald P and Battaile, Bennett},
journal={ACM SIGGRAPH computer graphics},
volume={18},
number={3},
pages={213--222},
year={1984},
publisher={ACM New York, NY, USA}
}
with
- See Lambertian BRDF
Nusselt-Analog #
-
For two patches in the radiosity method:
-
For all two points on the two surfaces:
-
The geometry factor accounting to the Area Foreshortening can be assumed as a constant.
Discrete Radiosity Equation #
<img src="/ltximg/radiosity_b33b28740c911682aeb0410c79f6ff76b6912d9c.svg" alt="radiosity_b33b28740c911682aeb0410c79f6ff76b6912d9c.svg" class="org-svg" />
with:
= The average fraction of energy that leaves finite element i and directly arrives at element j
Form Factors #
Idea: Double Projection
Properties #
- Planar patch:
- Energy conservation:
- Reciprocity:
Computation #
Formular to compute the form factor to some Area at
to
:
Hemicube Algorithm #
-
Use the Nusselt Analog
-
precompute formfactors for hemicube
-
When rendering, project other patches onto the cube (respect visibility)
Using hardware acceleration #
- Put camera in the center of the hemicube
- Render cube maps
- Each fragment just writes some unique per patch ID, no color
- Standard depth test takes care of visibility
- After that, sum up the contributions of the objects by their ID
Rendering the scene #
- Render per patch radiosity values
- Color the vertices according to their neighboring patch colors and use Gouraud shading .
Comparison to raytracing #
- Raytracing is good at specular reflection and refraction, but bad at diffuse interactions
- Radiosity is good at diffuse lighting but bad at other stuff
Both methods are global, use them both at the same time!