12 KiB
Ue4照明技术引导视频笔记(静态光照部分)
https://www.youtube.com/watch?v=jCsrWzt9F28&list=WL&index=7&t=0s https://forums.unrealengine.com/unreal-engine/events/107078-training-livestream-lighting-techniques-and-guides-jan-24-live-from-epic-hq?134388= https://cdn2.unrealengine.com/CommunityTab%2FEnglish%2F2017%2FJan+23%2FLiveStream_Lighting-11f85d1762b463154b5f53f7468e135f65955bed.zip https://wiki.unrealengine.com/LightingTroubleshootingGuide
Volume
Lightmass Importance Volume
用于提高指定区域内的LightMap烘焙效果(主要是间接照明),区域外的默认为低质量效果。
LightMass Character Indirect Detail Volume
提高区域内的间接光照缓存的密度(缓存点会更加密集)。
间接光照缓存
模型中光照选项
LightMass设置
解决LightMass漏光问题
1、提高间接光照的质量WorldSetting-》Indirect Lighting Quality
2、降低WorldSetting-》Indirect Lighting Smoothness的值(但是构建时间会增加)
3、尽量使用整块模型
地形阴影
远距离阴影(Far Shadow)
一般是方向光作用在地形上的阴影,使用的是Cascaded Shadow Maps。
相关选项有:
方向光源-》Cascaded Shadow Maps-》 Far Shadow Cascade Count(阴影精细程度)与Far ShadowDistance(显示距离)
可以通过show=》advanced=》ShadowFrustums显示阴影调试(只对方向光有效)。以此可以观察Cascaded的级数切换距离。
地形是默认开启Far Shadow的,Actor需要手动开启。
自发光物体
后处理空间中除了设置GI倍率还可以自定义GI的颜色。
讲了自发光材质的GI,这里有了个取巧的方式,通过PostProcessVolume绑定自发光物体来调整Gi,好尴尬
2017年的版本还是通过LPV来实现的GI。
LightMass Debug
在构建选项里有一个Use Error Coloring选项,可以用来标记UV不合格的物题,但在产品级质量构建中则不会显示这些Debug标记。
Lighting Info(位于构建按钮菜单中)
里面可以调整LightMap渲染密度选项、空间占用大小以及分辨率调整。
Ue4照明技术引导视频笔记(动态光照部分)
https://www.youtube.com/watch?v=nm1slxtF_qA
距离场光线追踪技术
首先需要开启距离场生成,在项目设置——渲染——灯光——勾选 生成模型距离场 选项。
级联阴影在显示远阴影时为了效果会增加阴影级数这样会增加消耗,而距离场阴影的消耗相对较小,所以会采样近距离级联远距离距离场阴影的配合方式。同时它可以解决因为屏幕空间渲染技术而导致的阴影失真的问题。另一个主要用处就是距离场AO了。或者可以使用距离场来写Shader。
模型距离场(在模型Asset设置中有个分辨率缩放选项)的分辨率会影响阴影效果(投射到别的物题上的阴影与自阴影)。从视频可以看出阴影缺少了很多细节而且并不正确。此时勾选Show——Visualize——MeshDistanceField,查看模型距离场,从而选择合适的分辨率对debug阴影有很大帮助。
如何开启
需要在灯光处勾选“Ray Tracing Distance Field Shadow”选项开启。
较为的使用场景
渲染树木植被等高面数、复杂物体的阴影。
植被渲染注意
对于树叶等需要双面渲染的物体,需要在模型设置中勾选Two-Sided Distance Field Generation,以生成正确的距离场。
级联阴影切换
可以对灯光中的Cascaded Shadow Maps——Dynamic Shadow Distance MoveableLight进行设置,来达到级联阴影与软阴影的切换(靠近物体会切换成级联阴影)
几个调试用命令
r.Shadow.MaxResolution 可选参数2562048默认2048
r.Shadow.MinResolution 可选参数16128默认32
r.Shadow.FadeResolution 可选参数642048默认64
r.Shadow.DistanceScale 可选参数0.52默认1
r.Shadow.RadiusThreshold 可选参数0.010.5默认0.03
r.Shadow.CSM.MaxCascades 可选参数116默认3
r.Shadow.CSM.TransitionScale可选参数02默认1
r.ShadowQuality 可选参数15默认5
r.LightFunctionQuality 可选参数02默认2
r.DistanceFieldShadowing TrueFalse默认True
r.DistanceFieldAO TrueFalse默认True
r.ParticleLightQuality 可选参数02默认1
其他注意事项
光源中的SourceRadius会对软阴影产生影响(学过光追的人都知道为什么)
胶囊阴影
因为也是一种软阴影方案,所以光源的LightSourceAngle选项也会对此产生影响。
如何启用
- 在角色Asset中指定ShaowPhysicsAsset。
- 在角色Asset的Lighting选项卡中勾选Capsule Direct Shadow或者Capsule Indirect Shadow
接触阴影(Contact Shadows)
ContactShadowLength参数大于0时就会开启,默认是关闭的。(视频使用值为0.02)
原理
将接触阴影的长度设为大于零的值后,渲染器将通过场景的深度缓存从像素的位置到光源进行光线追踪。举一个典型的例子来说,将接触阴影长度的最大值设为 1,此处的 1 则代表光线遍历整个屏幕。而将接触阴影长度的值设为 0.5 则意味着光线遍历半个屏幕。注意:场景深度缓存中的获得的采样将保持不变,意味着增加接触阴影的长度时将出现更多噪点(穿帮)。长度为 0.75 的接触阴影比长度为 0.1 的接触阴影生成的噪点更多。
应用场景
- 当前平台只支持一个光源,且需要使用Marching实现的视差Shader。
- 角色细节阴影与墙面植物(爬山虎)阴影。
级联阴影
级联阴影分为近阴影与远阴影。两者皆可以设置数量、过度距离以及过度参数(在光源中设置)。
当然想要真正显示远阴影则需要勾选物体中的Far Shadow选项。
其他技巧
天光(SkyLight)
天光也有距离场AO的选项,在调试时需要关闭别的光源进行调试。
HDRI Backdrop
https://docs.unrealengine.com/en-US/Engine/Rendering/LightingAndShadows/HDRIBackdrop/index.html
4.23处的新功能,对于CAD产品展示有很大帮助。
Wiki笔记
部分条目的解释有配图,我懒得贴了,所以推荐直接看原文。
问题解答
静态部分
为什么我的阴影死黑?
在光照条件下,深黑色阴影通常意味着没有填充光。这种情况经常发生在室外环境中,一个方向的光代表太阳。UE4有一个内置的方法来提供一个影响填充光的世界,我们把它称为天光。
不想生成光照贴图
- Rendering——Lighting——AllowStaticLighting确保引擎不会生成光照贴图。(项目级)
- 打开世界设置——Lightmass——Force No Precomputed Lighting。(关卡级)
双面渲染物体的阴影问题
- 在StaticMesh——Lighting——LightMassSetting中勾选UseTwoSidedLighting。(仅对静态光照)
- 在物体的材质选项中勾选TwoSided
灯光上出现X标记
因为有超过4个光源重叠在一起,这样会严重影响性能。动态光在该重叠区域会强制设为一个动态光源,而静态光源会在烘焙光照时弹出重叠提示。
动态部分
阴影不正确
方向光
Dynamic Shadow Distance Movable
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
Dynamic Shadow Distance Stationary
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
Num Dynamic Shadow Cascades
view frustum被分割成的级联的数量。更多的级联将导致更好的阴影分辨率,但会显著增加渲染成本。
Cascade Distribution Exponent
控制级联的分布,是离相机更近(高值)还是更远(低值)。值1表示转换将与分辨率成正比。
Cascade Transition Exponent
级联之间的过度参数,较低的数值产生会较生硬的过度,而较高的数值会产生较平缓的过度。
Shadow Distance Fadeout Fraction
阴影淡出参数。较高的值会使阴影显得较淡一些,而较低的值会使阴影显得较深一些。
Far Shadow
级联阴影的远阴影开关,可以解决当摄像机处于较远距离时,物体的阴影会消失的问题。
调整级联阴影以得到更好的效果
通过调整上述设置,可以很好地调整阴影的出血值和精度。下一节将尝试调整到最佳成都,以获得更好的精度与阴影。找到一种适合任何特定游戏的平衡将需要耗费时间、精力来进行大量测试。
对于所有的动态光源
Shadow Bias
控制阴影在场景中的精确程度。默认值是0.5,这是权衡了精度与性能的值。
Shadow Filter Sharpness
控制阴影边缘的锐化程度。
为什么可移动光源在较远时其遮挡关系会出错
为了解释这一点,我们首先需要了解Ue4的渲染优化方法。引擎根据场景深度来判断场景中Mesh的可见性(首先物体需要处于摄像机矩阵中),如果Mesh过于远离摄像机,Mesh将不会被渲染或是被遮挡。所以就会出现图中的现象。
你可能会注意到,当选择物体时,灯光恢复正常。这是预料之中的,因为它处于焦点状态。
解决方法是:在Mesh属性界面,调整Bounds Scale选项的大小。默认值设置为1.0。建议的调整范围为1.1、1.2左右,调整的量不宜过大,会影响性能与阴影质量。
可以viewport > Show > Advanced > Bounds 开启包围盒显示进行debug。
另一个解决思路就是使用聚光灯或者使用静态光烘焙光照贴图。
静态部分
你可以在世界设置中的LightMass调整以下参数以获得更好的效果: Indirect Lighting Quality设置成2或者更高。 Indirect Lighting Smoothness通常被设置为0.65~0.7之间。数值越低噪点会越多。
如何控制静态照明的全局照明效果?以及光线反弹的美妙之处
默认情况下,LightMass的光线反弹次数为3,我们可以在Settings > World Settings > LightMass 中修改反弹次数以获得更好的效果。
光线的第一次反弹所需的计算时间是最长的。之后的反弹对实际构建时间的影响较小,但对视觉效果的影响也要小得多。
解决阴影“脏”的问题
首先,这种现象的原因与GI中的间接光照有关。
以下使用默认场景来创建2个测试用的关卡,其中Mesh的光照贴图分辨率设为256,后期空间开启人眼自适应。
在WorldSettings——LightMass中,可以对以下参数进行设置:
Indirect Lighting Quality
控制间接光照的质量,以获得更佳的效果。
Indirect Lighting Smoothness
控制光照贴图中细节的平滑度。
Num Indirect Lighting Bounces
间接光照光线的反弹次数。
光照贴图分辨率为512 光照贴图分辨率为1024