Textures can also be used to add visual richness to light sources and allow for complex intensity distribution or spotlight functions. For lights that have all their illumination limited to a cone or frustum, projective textures can be used to modulate the light intensity [1192, 1597, 1904]. This allows for shaped spotlights, patterned lights, and even “slide projector” effects (Figure 6.43). These lights are often called gobo or cookie lights, after the terms for the cutouts used in professional theater and film lighting.See Section 7.2 for a discussion of projective mapping being used in a similar way to cast shadows.
纹理还可以用来增加光源的视觉丰富性,并允许复杂的强度分布或聚光灯功能。对于所有照明都限制在圆锥或平截头体的灯光,投影纹理可用于调制光强[1192,1597,1904]。这允许异形聚光灯,图案灯,甚至“幻灯机”效果(图6.43)。这些灯通常被称为gobo或cookie灯,这是根据专业剧院和电影照明中使用的剪纸的术语命名的。参见第7.2节,讨论投影贴图以类似的方式投射阴影。
For lights that are not limited to a frustum but illuminate in all directions, a cube map can be used to modulate the intensity, instead of a two-dimensional projective texture. One-dimensional textures can be used to define arbitrary distance falloff functions. Combined with a two-dimensional angular attenuation map, this can allow for complex volumetric lighting patterns [353]. A more general possibility is to use three-dimensional (volume) textures to control the light’s falloff [353, 535, 1192]. This allows for arbitrary volumes of effect, including light beams. This technique is memory intensive (as are all volume textures). If the light’s volume of effect is symmetrical along the three axes, the memory footprint can be reduced eightfold by mirroring the data into each octant.
对于不局限于平截头体而是在所有方向照明的灯光,可以使用立方体贴图来调制强度,而不是二维投影纹理。一维纹理可用于定义任意距离衰减函数。结合二维角度衰减图,这可以允许复杂的体积照明模式[353]。更普遍的可能性是使用三维(体积)纹理来控制灯光的衰减。这允许任意体积的效果,包括光束。这种技术是内存密集型的(所有体积纹理都是如此)。如果光的效果体积沿三个轴对称,通过将数据镜像到每个八分圆,内存占用可以减少八分之一。
Textures can be added to any light type to enable additional visual effects. Textured lights allow for easy control of the illumination by artists, who can simply edit the texture used.
纹理可以添加到任何灯光类型,以实现附加的视觉效果。纹理灯光允许艺术家轻松控制照明,他们可以简单地编辑使用的纹理。
Further Reading and Resources进一步阅读和资源
Heckbert has written a good survey of the theory of texture mapping [690] and a more in-depth report on the topic [691]. Szirmay-Kalos and Umenhoffer [1731] have an excellent, thorough survey of parallax occlusion mapping and displacement methods. More information about normal representation can be found in the work by Cigolle et al. [269] and by Meyer et al. [1205].
The book Advanced Graphics Programming Using OpenGL [1192] has extensive coverage of various visualization techniques using texturing algorithms. For extensive coverage of three-dimensional procedural textures, see Texturing and Modeling: A Procedural Approach [407]. The book Advanced Game Development with Programmable Graphics Hardware [1850] has many details about implementing parallax occlusion mapping techniques, as do Tatarchuk’s presentations [1742, 1743] and Szirmay-Kalos and Umenhoffer’s survey [1731].
For procedural texturing (and modeling), our favorite site on the Internet is Shadertoy. There are many worthwhile and fascinating procedural texturing functions on display, and you can easily modify any example and see the results. Visit this book’s website, realtimerendering.com, for many other resources.
Heckbert写了一篇关于纹理映射理论的很好的综述[690]和一篇关于这个主题的更深入的报告[691]。Szirmay-Kalos和umenhofer[1731]对视差遮挡贴图和位移方法进行了出色、全面的调查。关于法线表示的更多信息可以在Cigolle等人[269]和Meyer等人[1205]的工作中找到。 《使用OpenGL的高级图形编程》[1192]一书广泛介绍了使用纹理算法的各种可视化技术。对于三维程序纹理的广泛覆盖,见纹理和建模:程序方法[407]。《使用可编程图形硬件的高级游戏开发》[1850]一书有许多关于实现视差遮挡贴图技术的细节,塔塔丘克的演示[1742,1743]和Szirmay-Kalos和Umenhoffer的调查[1731]也是如此。 对于程序纹理(和建模),我们最喜欢的网站是Shadertoy。这里展示了许多有价值和迷人的程序纹理函数,你可以很容易地修改任何例子并看到结果。访问这本书的网站,realtimerendering.com,获得许多其他资源。