UDN
Search public documentation:

CustomLightingCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 材质 & 贴图 > 自定义光照
UE3 主页 > 光照 & 阴影 > 自定义光照
UE3 主页 > 光照师 > 自定义光照

自定义光照


文档变更记录: 由 Daniel Wright 创建。

概述


光照模型定义了诸如自发光 (Emissive)、漫反射 (Diffuse) 等的材质输入端和诸如方向 (Direction)、颜色 (Color) 等的光照属性的结合方式,从而获得最终的颜色。在 UE3 中内置的光照模型是 Phong,它允许基于像素进行漫反射和高光光照。自定义光照模型允许您制作您想要的对原型有益的任何光照模型。在着色器代码中实现最终的光照模型是一个好主意,因为这样可以得到很大的优化。

版本


附有定向光照贴图的自定义光照操作在 QA_APPROVED_BUILD_DEC_2009 中已经发生改变,使用现有高光 (Specular) 和高光强度 (SpecularPower) 材质输入端替代 CustomLighting 输入端。

设置


要想使用自定义光照模型,您仅需要打开材质编辑器并设置光照模型 (LightingModel) 为 MLM_Custom。

与光照类型进行交互


自定义光照 (Custom Lighting) 只为您提供 LightVector,因此只可以处理那些光线来自于一个单向的光源类型,例如动态点、点和定向光源。它们都是零区域的光源。对于其他光源类型,Custom Lighting 执行只依靠于标准的 Phong 光照,使用不同的材质输入。这个操作会使 Custom Lighting 更加复杂,但是允许它被作为 Phong 的一个完整替换使用。

输入端


CustomLighting - CustomLighting 输入端是大多数自定义光照的灵活性所在之处。对于任何影响表面动态零区域的光源,这个输入端将会被计算,并将光照向量 (LightVector) 设置为光源的方向。类似于 CameraVector、LightVector 等的输入端都在切线空间内,所以把 max(dot(lightvector, float3(0,0,1)), 0)链接到自定义光照 (CustomLighting) 的输入端将会产生一个使用表面法线(在切线空间中是 0,0,1)的基本的 lambert 漫反射光照。这是唯一可以依赖 LightVector 的输入。

  • CustomLightingDiffuse - 对于区域动态光源(当前只有 SH 光源与光照环境和天空光源结合使用)和定向光照贴图漫反射,这个输入端会被计算。它必须不会依赖 LightVector 节点。
  • Specular and SpecularPower - 这些输入端可以与自定义光照结合使用,但是前提条件是通过定向光照贴图计算高光光照。通过使用高光 (Specular) 和高光强度 (SpecularPower) 输入端,您可以通过自定义光照 (Custom Lighting) 获取相同的光照贴图高光,正如您使用 Phong 那样。 自发光 (Emissive)、不透明度 (Opacity) 和不透明蒙板 (Opacity Mask) 的使用和 Phong 一样。
  • 没有使用漫反射 (Diffuse) 和漫反射 (DiffusePower)。
  • 法线仍然影响Reflection Vector(反射向量),但是它不用于光照,使用定向光照贴图的时候除外。

为动态光照重新构建 Phong 光照模型


这里是一个显示了如何使 Phong 光照模型和自定义光照模型产生相同效果的例子。这是一个使用 Phong 光照模型的材质:

PhongCropped.jpg

这是使用自定义光照的等同的光照模型:

PhongThroughCustomLightingCropped.jpg

下面是一个并排显示的对比图,左边柱子使用的是自定义光照,右边柱子使用的是 Phong 材质,分别被主光源和定向光照贴图照亮。注意,在这两种情况中看到的主光源发出的高光以及定向光照贴图上的高光(投影区域)情况。

SideBySideCropped.jpg

传输与双面


下面是一个可以使用传输和双面光照的 Phong 材质:

PhongTransmissionTwoSided.jpg

这是同等重要使用自定义光照的光照模型。不需要连接传输 (Transmission) 输入端,但是天空光源和 SH 光源目前无法正确处理与自定义光照相结合的传输。

CustomTransmissionTwoSided.jpg

其他


自定义光照可以和动态光照及光照贴图协同工作。目前还没有办法访问每个光源除了 LightVector 以外的属性,比如亮度、颜色等。同时自定义光照不允许您控制光源的衰减度。其他这些光源属性可以自动应用于 CustomLighting 输入端。