Lightmap
From Wikipedia, the free encyclopedia
A lightmap is a 3D engine light data structure which contains the brightness of surfaces in a video game. Lightmaps are precomputed and used for static objects. Quake was the first computer game to use lightmaps to speed rendering while preventing floors from looking distorted. Before lightmaps were invented, 3D engines used Gouraud shading for the floors and walls which caused shimmering. The most common methods of lightmapping are to either precompute vertex lighting by using distance from each vertex to a light, or by using multitexturing to apply a second texture which contains the lumel data.
Contents |
[edit] Limitations
Lightmaps are scaled using luxels. The smaller the luxels, the higher the resolution (and quality). However, this often comes at the price of performance. For example, a lightmap scale of 32 luxels per world unit would give a lower quality than a scale of 16 luxels per world unit, although it may improve in-game performance. It's important for level designers to make a compromise between performance and quality. If a low luxel per world unit scale is set too frequently then the game is likely to lag when played. Luxel size can also be limited by the amount of disk storage space or download time (for the map) or texture memory (for the 3D engine itself) available, although some games attempt to pack multiple lightmaps together to help circumvent these limitations.
[edit] Creation of Lightmaps
When creating lightmaps, any lighting model may be used, since the lighting is entirely precomputed and real-time performance is not always a necessity. Traditionally, radiosity is used, but on occasion games have been known to use a more direct lighting model. In all cases, soft shadows for static geometry are possible if simple occlusion tests (such as basic ray-tracing) are used to determine which luxels are visible to the light. However, the actual softness of the shadows is determined by how the engine interpolates the lumel data across a surface, and can result in a pixelated look if the luxels are too large. See texture filtering.
Lightmaps can also be calculated in real-time[1] for good quality colored lighting effects that are not prone to the defects of Gouraud shading, although shadow creation must still be done using another method such as stencil shadow volumes or shadow mapping, as real-time ray-tracing is still too slow to perform on modern hardware in most 3D engines.
[edit] See also
[edit] References
- ^ Dynamic Lightmaps in OpenGL. Retrieved Dec. 09, 2006.