|
Here’s how the radiosity in Q3Map works:
1. Set up and clear world lighting data to black. ( L = 0
)
2. Create point/spot lights from the map’s entity lights and area lights from
drawsurfaces with shaders that emit light.
3. Clear (high resolution) temporary one-pass lighting to black. ( T
= 0 )
4. Illuminate the world. ( T = T + light )
5. Filter temporary lighting data. (Anti-aliasing, blurring, missing data
fix-ups) ( T = T + fix-ups )
6. Copy finalized temporary lighting data to radiosity lighting data ( R
= T ) and add it to permanent world lighting data. ( L
= L + T )
7. Delete current list of lights.
8. For every surface in the world, take its radiosity lighting data (the light
that was received during the last pass), and derive a new list of lights. This
typically results in several thousand light sources.
9. Repeat steps 3 to 8 as much as necessary.
The only surfaces that don’t re-emit light, during radiosity, are skies or
shaders tagged with q3map_bounce
0. The color that a surface re-emits is based on a
sampling of the texture color and the lightmap (or vertex light). A blue wall
will not reflect any red light. A red wall will reflect red when lit with a
white light. The alpha values of a surface scale how much a translucent surface
re-emits light. To suppress this, make a custom image for q3map_lightimage. The
demo fur map, that I released a few days ago, exploits this trick in order to
achieve self-shadowing fur by using a q3map_lightimage
with a blurry faint alphachannel.
y
|