[1480] | 1 | GameTools standalone tool:
|
---|
[1470] | 2 |
|
---|
[1480] | 3 | Real-time global illumination
|
---|
| 4 | #############################
|
---|
[1470] | 5 |
|
---|
| 6 |
|
---|
[1480] | 7 | Provided effect:
|
---|
| 8 | #################
|
---|
[1470] | 9 |
|
---|
[1480] | 10 | Indirect illumination with Precomputed Radiance Maps (PRM)
|
---|
[1470] | 11 |
|
---|
[1480] | 12 | Standalone final rendering (real time GI) application without or with [if
|
---|
| 13 | GENERATE_PATH_MAPS is defined in PathMapEffect.cpp] PRM precomputing
|
---|
| 14 |
|
---|
| 15 |
|
---|
| 16 | Algorithm benefits:
|
---|
| 17 | ###################
|
---|
| 18 | Provides real-time indirect illumination. As opposed to static light maps,
|
---|
| 19 | actual lighting conditions influence indirect illumination. The effect is
|
---|
| 20 | achieved by combining multiple 'PRM panes' (partial "light maps") according to
|
---|
| 21 | current illumination of 'entry point clusters'.
|
---|
| 22 |
|
---|
| 23 | As opposed to PRT (precomputed radiance transfer), no tessellation (finite
|
---|
| 24 | elements) is needed, and near light sources are handled. (We do not assume
|
---|
| 25 | infinitely distant
|
---|
| 26 | environment lighting.)
|
---|
| 27 |
|
---|
| 28 | Accuracy of PRMs depends on the number of entry points used, influencing
|
---|
| 29 | preocessing time only.
|
---|
| 30 |
|
---|
| 31 | Final rendering requires a compositing of PRMs, where performance depends on the
|
---|
| 32 | number of 'entry point clusters' considered for an object. As many texture
|
---|
| 33 | fetches as clusters are needed. A lower number of clusters will result in
|
---|
| 34 | indirect illumination which is less responsive to actual lighting, but still
|
---|
| 35 | plausible. (A single cluster would reproduce a static light map which is scaled
|
---|
| 36 | according to the total direct illumination.)
|
---|
| 37 |
|
---|
| 38 |
|
---|
| 39 | Build:
|
---|
| 40 | ######
|
---|
| 41 | This is a standalone DirectX 9.0 application, compiles under Visual C++ 2003
|
---|
| 42 | with DirectX SDK April 2006 (identical to June 2006).
|
---|
| 43 |
|
---|
| 44 | Parameters (PRM resolution, shadow map resolution, #entry points, #clusters,
|
---|
| 45 | etc.) are hardcoded as #define directives in PathMapEffect.h.
|
---|
| 46 |
|
---|
| 47 | GENERATE_PATH_MAPS in PathMapEffect.cpp must be defined to perform precomputing,
|
---|
| 48 | outputting textures to the PRM subfolder. Otherwise, PRM textures are loaded
|
---|
| 49 | from the PRM subfolder.
|
---|
| 50 |
|
---|
| 51 |
|
---|
| 52 | Usage notes:
|
---|
| 53 | ############
|
---|
| 54 | - as precomputing is used, this tool should be used for static level geometry
|
---|
| 55 | - multiple static objects are supported and encouraged: every object will use a
|
---|
| 56 | set of most important PRM panes
|
---|
| 57 | - models must have unique texture mapping (just like light maps)
|
---|
| 58 |
|
---|
| 59 | - there is no support for any particular 'level geometry' discription format.
|
---|
| 60 | DirectX .x files and referenced textures are loaded from code.
|
---|
| 61 | - To include the method in a particular engine, the level geometry should be
|
---|
| 62 | used to compose the scene which is used to generate the PRM textures. Final
|
---|
| 63 | compositing must be implemented in the shader system of the game engine,
|
---|
| 64 | assigning the computed PRMs to the respective objects as textures.
|
---|