接触阴影(Contact Shadows)

此页面包含 UE4 接触阴影的总览。

Windows
MacOS
Linux
See Also

ContactShadow_Banner.png

为应用程序创建场景和角色时,有时需添加渲染的视觉深度。 添加 接触阴影 是改善场景视觉深度和保真度的有效方法。 因为提供了一个更为准确的阴影近似, 实现其他阴影算法难以达到的波状外形阴影。

为角色添加细节

为给定 点光源 启用接触阴影的一个使用情况是为角色渲染一个额外的细节级别(LOD)。 下图较好地展示了接触阴影为角色增添的效果。从右至左拉动比对滑条时, 您将注意到启用接触阴影的点光源半径中的角色上有更多额外细节, 而接触阴影关闭时则没有这些细节。

Contact Shadow Off

Light's Contact Shadow Length = 0.1

开启接触阴影后,渲染器便会以逐光源基础执行逐像素屏幕空间算法。 这意味着接触阴影算法是执行光计算通道, 执行场景深度渲染光线行进, 以确定被查询的像素是否将从启用接触阴影的点光源处进行遮蔽。

带接触阴影的场景

启用接触阴影的另一个使用情况:如果材质的像素着色器只支持一个灯光, 则无需计算其中的视差遮蔽映射阴影。 下图展示了启用和未启用接触阴影的视差遮蔽映射材质之间的对比。

ContactShadow_Comparison.png

需注意:视差遮蔽映射材质应输出像素深度偏移。

以下是接触阴影与视差遮蔽映射材质进行交互的实例。

image alt text

两个光源上的接触阴影长度为 0.1。

启用接触阴影

点光源上的接触阴影默认已禁用,因此点光源的接触阴影长度被初始化为 0。 启用接触阴影需要执行以下步骤:

  1. 首先将一个 点光源 拖入场景。

    CastShadows_Step1.png

  2. 点击新建点光源组件的展开箭头,展开 Details 面板的 Light 部分。

    点击查看全图。

  3. Contact Shadow Length 设为大于零的值即可启用接触阴影。

    点击查看全图。

将接触阴影的长度设为大于零的值后,渲染器将通过场景的深度缓存从像素的位置到光源进行光线追踪。 举一个典型的例子来说,将接触阴影长度的最大值设为 1,此处的 1 则代表光线遍历整个屏幕。 而将接触阴影长度的值设为 0.5 则意味着光线遍历半个屏幕。 注意:场景深度缓存中的获得的采样将保持不变,意味着增加接触阴影的长度时将出现更多噪点(穿帮)。 长度为 0.75 的接触阴影比长度为 0.1 的接触阴影生成的噪点更多。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback