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