本章将多次提到“前”和“后”两个词。这些着色器使用特殊格式的光照贴图来模拟散射。光照贴图在图像空间中生成,即从摄影机视点生成,并且光照贴图将存储对象的漫反射辐照度和对象前面和后面的 Z 深度。
在此情况中,“前”被定义为从摄影机视点显示的第一个表面(即面向摄影机),“后”被定义为从摄影机视点显示的第二个表面(即背离摄影机)。
我们可以这样认为:前表面是在最终渲染中所看到的全部,如果照亮到后表面(前表面后的第二个表面),则它有可能通过对象对光进行散射,从而照亮前表面。在实际场景中,这意味着,前表面散射是直接看到的散射,而后表面散射是穿过对象的任何光。
也就是说,这些函数与方向有关,且仅当最终渲染查看方向接近或类似于摄影机查看方向且视图投影是标准透视或正交时才有效。请注意下列事项:
与物理实现不同,这些着色器不需要启用光子、全局照明、焦散或甚至光线跟踪。
如果计划实现任何“穿透”散射(即光线从对象的后表面穿到前表面),在创建模型时必须考虑体积。虽然避免洞不是必要事项,但必须注意额外的内部表面,因为这些表面会阻挡光。例如,通过将两个拉伸的立方体组合在一起形成的“T”形状看起来是错误的,因为存在额外的内部表面。但是,完全包含在另一个对象中的对象将显示为真正嵌入的不透明对象,且可用于多种情况,例如用于手指内部的骨骼来实现“手处于闪光灯照射下”的效果。包含的对象必须包含在光照贴图中作为挡光对象 - 其他任何包含的对象则忽略即可。实现此操作的最简单方法是向包含的对象应用同一材质,因为实际上它从不会被看到或着色,只是用于阻挡光。
Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.