UDN
Search public documentation:
ModulatedShadowsCH
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
日本語訳
한국어
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
模块化阴影
文档变更记录: 由 Daniel Wright 创建。
概述
版本
相关设置
LightShadowMode(光源的阴影模式)
控制着这个光源所使用的阴影类型。- LightShadow_Normal(光源阴影_正常) – 默认的行为并且 为了使网格物体从那个投射阴影的光源接受到阴影,需要网格物体可以被那个光源动态地照亮 。这是一个非常重要的暗示,因为它意味着如果几何体的光照贴图包含着那个投射阴影的光源的光照信息,则这个几何体不能接受正常阴影。正常阴影在 Xbox 360 上的代价是非常的昂贵的,因为它们需要额外的渲染目标空间,这需要其它的渲染目标被保存然后再被恢复。
- LightShadow_Modulate(光源阴影_模块化阴影) - 从这个光源启用模块化阴影,它可以在任何不透明的或带蒙板的物体上投射阴影。这是性能开销最低的模式。模块化阴影是通过使多个场景颜色相乘来操作的而不是通过遮盖某个光源来操作的。
ModShadowColor(模块化阴影颜色)
这项控制着模块化阴影的颜色。ShadowFalloffExponent(阴影衰减指数)
用于聚光源和点光源的基于距离的阴影衰减速率。较高的值意��着衰减将发生的更快。值为 1 意味着进行线性衰减。ModShadowFadeoutExponent(模块化阴影淡出指数)
当 ModShadowFadeoutTime(模块化阴影淡出时间)的值大于 0 时,这项用于控制淡出和淡入曲线。ModShadowFadeoutTime (模块化阴影淡出时间)
如果这项的值大于 0,那么模块化阴影将基于投射者最后一次可见的时间来进行淡出。它也会基于投射者第一次变得可见的时间进行淡入。这可以用于淡出在另一个房间内的人物的阴影,否则这个人物的阴影将会穿过墙壁被看到。请确保您在编辑器中启用了实时更新否则它将不能进行正常的工作。淡入淡出操作是依赖于帧频率的,所以任何故障都可能会导致意想不到的失真。为什么使用模块化阴影
一旦静态几何体的光照贴图已经建立,则 Normal shadows(正常阴影)不会投射到该几何体上。模块化阴影可以投射到整个场景上,所以解决了这个问题。
场景中有影响人物的三个光源,仅其中的一个投射正常阴影。注意阴影是非常模糊的。
模块化阴影的工作原理
模块化阴影从物理上来讲并不如正常阴影正确,然而在大多数情况下这可以通过性能优势和用户控制优势进行弥补。在每次光照渲染遍数中阴影应用 ModShadowColor(模块化阴影颜色),然后它们被渲染到衰减缓冲中,而不是用于隐藏当前的光源。当已经渲染完了所有的光源,衰减缓冲将会和场景的颜色相乘。结果是无论有多少光源作用于这个表面上,阴影都会变得更暗,因为来自一个光源的阴影影响来自所有光源的光照,而不是仅影响投射阴影的那个光源。
同样是具有影响一个人物的三个光源的场景,仅其中一个光源投射模块化阴影。注意,阴影仍然很醒目。
点光源的模块化阴影基于光源的半径有一个径向衰减。这对于聚光源也是适用的,除了该衰减也会受到内锥角和外锥角的影响。定向光源没有距离衰减。
限制
双重阴影
由于模块化阴影只是针对场景的颜色进行简单地模块化,阴影重叠的区域将会有双重阴影。这个问题的解决方法是在图元附近产生其父项的阴影。比如,在战争机器 1 中所有武器的产生的使它们父项 pawns 的阴影来避免双重阴影的。请查看 AttachingActors#b_ShadowParented 来获得如何在内容中对父项进行投影。可以在代码中使用 PrimitiveComponent 的 SetShadowParent 方法来产生父项阴影。自发光失真
模块化阴影和场景中颜色的相乘,包括不能产生阴影的自发光光源。解决方法是使用 Modulate-Better(更好的模块化)阴影模式,这将会阻止模块化阴影影响任何通道中的的自发光组件大于 1 的像素。投射的阴影可以穿过几何体
在目前的实现中,模块化阴影会穿过几何体。这个现象的最显著情况必须通过认真的调整光源的位置来避免。通过手动地调整光源的位置来避免这种情况是非常困难的,但是通过使用光照环境可以使其变得非常容易。在某些情况下,这种现象可以通过使用 ModShadowFadeoutTime(模块化阴影淡出时间)来避免。在背面的阴影可以使用 Modulate-Better 阴影模式来避免。真正地消除这些反射失真的方法是使用正常阴影。然而,大多数情况下使用正常阴影消耗的性能要比模块化阴影高很多。对于这个有一个例外是: 主光源。主光源允许您使用一个投射正常阴影的光源从而减少性能消耗。