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 |
Limitations
Lightmaps are scaled using lumels (lumination elements). The smaller the lumels, the higher the resolution (and visual quality), at the price of performance. For example, a lightmap scale of 4 lumels per world unit would give a lower quality than a scale of 16 lumels per world unit. It's important for level designers to make a compromise between performance and quality. If a high lumel per world unit scale is set too frequently then the game may use up too much system resources and affect the performance negatively. Lumel 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.
Lightmap resolution and scale are two different things. The resolution is the area, in pixels, available for storing one or more surface's lightmaps. The number of individual surfaces that can fit on a lightmap is determined by the scale. Lower scale values, means higher quality and more space taken on a lightmap. Higher scale values, means lower quality and less space taken. A surface can have a lightmap that has the same area, so a 1:1 ratio, or smaller, so the lightmap is stretched to fit.
Lightmaps in games are usually grayscale texture maps, limited to brightness or darkness values that range from 0 (black) to 255 (white). They are also usually flat, without information about the light's direction.
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 lumels 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 lumels 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.
See also
References
- ^ Dynamic Lightmaps in OpenGL. Retrieved Dec. 09, 2006.
| This video game software-related article is a stub. You can help Wikipedia by expanding it. |
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)




