Language:
Page Info
Engine Version:
Share
此中文页面内容对应的英文页面有后续更新,如需浏览最新文档可切换至英文页面浏览。

可延展性参考

利用延展性设置可对诸多功能的质量进行调整,以保持游戏在不同平台和硬件上的最佳性能。

可延展性设置

通过工具栏中的 Settings 菜单即可在编辑器中访问可延展性设置。Engine Scalability Settings 包含 BaseScalability.ini 文件中定义的常用设置的快捷方式;Material Quality Level 设置整体材质精度。

分辨率缩放

虚幻引擎 4 可在低分辨率下渲染场景,并将图片放大至所需的分辨率。2D 用户界面通常消耗性能较低,且分辨率不高,因此虚幻引擎 4 并不将此技术应用到 UI。上采样通道存在些许消耗,但这点付出通常来说是值得的。

SC_00007.png

左:50% 无抗锯齿,中:50% 带抗锯齿,右:100%(无分辨率缩放)带抗锯齿

使用柔和的输入图像有助于上采样步骤。这意味着此可延展性选项从另一个可延展性选项中受益:抗锯齿精度。

此设置可通过 r.ScreenPercentage 控制台变量访问。其从 10-100 中选取一个数值,-1 也等于 100%。

可视距离

可基于物体到观察者之间的距离进行剔除。所有物体均默认为非距离剔除(所需最大绘制距离为 0)。在设计师指定的数值之上,有一个类似于乘数器的整体可延展性设置(r.ViewDistanceScale)。下图是一些草地物体(所需最大绘制距离为 1000):

SC_00006.png

左:r.ViewDistanceScale 0.4,中:r.ViewDistanceScale 0.7,右:r.ViewDistanceScale 1.0(默认)

抗锯齿

上图从左至右:r.PostProcessAAQuality 从 0 到 6。它们反映的是 View -> Scalability Options -> AA 设置中的 LowMediumHighEpic 选择。

使用 r.PostProcessAAQuality 控制台命令可对抗锯齿精度等级进行调整,无视所使用的抗锯齿方法(快速近似抗锯齿或临时抗锯齿)。无论使用哪种抗锯齿方法,r.PostProcessAAQuality 数值为 0 则将禁用此效果。快速近似抗锯齿数值 2、4 和 6 的效果显示于上图中;可以看到随数值增加,锯齿边缘的平滑效果越来越好。大于 6 的数值不产生效果。

对于临时抗锯齿而言,效果的填充速度和精度(使用的较高数值)两者之间存在和权衡。临时抗锯齿 r.PostProcessAAQuality 2 执行速度较快,但效果中的锯齿将会比较明显。r.PostProcessAAQuality 4 执行速度较慢,但不会出现锯齿。

后期处理 - sg.PostProcessQuality

上图从左至右为 sg.PostProcessQuality 数值从 0 到 3 的效果。

View -> Engine Scalability Settings -> Post Processing 选项中可调整后期处理效果的精度,可结合 BaseScalaiblity.ini 文件(放置在 [UE4_InstallPath]/Engine/Config 文件夹内)中的设置使用。Low 设置等于 sg.PostProcessQuality 0,Epic 设置等于 sg.PostProcessQuality 3。

sg.PostProcessQuality 0

sg.PostProcessQuality 1

r.MotionBlurQuality=0
r.BlurGBuffer=0
r.AmbientOcclusionLevels=0
r.AmbientOcclusionRadiusScale=1.7
r.DepthOfFieldQuality=0
r.RenderTargetPoolMin=300
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.EyeAdaptationQuality=0
r.BloomQuality=4
r.FastBlurThreshold=0
r.Upscale.Quality=1
r.Tonemapper.GrainQuantization=0
r.MotionBlurQuality=3
r.BlurGBuffer=0
r.AmbientOcclusionLevels=1
r.AmbientOcclusionRadiusScale=1.7
r.DepthOfFieldQuality=1
r.RenderTargetPoolMin=350
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.EyeAdaptationQuality=0
r.BloomQuality=4
r.FastBlurThreshold=2
r.Upscale.Quality=2
r.Tonemapper.GrainQuantization=0

sg.PostProcessQuality 2

sg.PostProcessQuality 3

r.MotionBlurQuality=3
r.BlurGBuffer=-1
r.AmbientOcclusionLevels=2
r.AmbientOcclusionRadiusScale=1.5
r.DepthOfFieldQuality=2
r.RenderTargetPoolMin=400
r.LensFlareQuality=2
r.SceneColorFringeQuality=1
r.EyeAdaptationQuality=2
r.BloomQuality=5
r.FastBlurThreshold=3
r.Upscale.Quality=2
r.Tonemapper.GrainQuantization=1
r.MotionBlurQuality=4
r.BlurGBuffer=-1
r.AmbientOcclusionLevels=3
r.AmbientOcclusionRadiusScale=1.0
r.DepthOfFieldQuality=2
r.RenderTargetPoolMin=400
r.LensFlareQuality=2
r.SceneColorFringeQuality=1
r.EyeAdaptationQuality=2
r.BloomQuality=5
r.FastBlurThreshold=7
r.Upscale.Quality=3
r.Tonemapper.GrainQuantization=1

阴影 - sg.ShadowQuality

上图从左至右为 sg.ShadowQuality 数值从 0 到 3 的效果。

View -> Engine Scalability Settings -> Shadows 选项中可调整动态阴影的精度,可结合 BaseScalaiblity.ini 文件(放置在 [UE4_InstallPath]/Engine/Config 文件夹内)中的设置使用。Low 设置等于 sg.ShadowQuality 0,Epic 设置等于 sg.ShadowQuality 3。

sg.ShadowQuality 0

sg.ShadowQuality 1

r.LightFunctionQuality=0
r.ShadowQuality=0
r.Shadow.CSM.MaxCascades=1
r.Shadow.MaxResolution=512
r.Shadow.RadiusThreshold=0.06
r.Shadow.DistanceScale=0.6
r.Shadow.CSM.TransitionScale=0
r.LightFunctionQuality=1
r.ShadowQuality=2
r.Shadow.CSM.MaxCascades=1
r.Shadow.MaxResolution=1024
r.Shadow.RadiusThreshold=0.05
r.Shadow.DistanceScale=0.7
r.Shadow.CSM.TransitionScale=0.25

sg.ShadowQuality 2

sg.ShadowQuality 3

r.LightFunctionQuality=1
r.ShadowQuality=5
r.Shadow.CSM.MaxCascades=2
r.Shadow.MaxResolution=1024
r.Shadow.RadiusThreshold=0.04
r.Shadow.DistanceScale=0.85
r.Shadow.CSM.TransitionScale=0.8
r.LightFunctionQuality=1
r.ShadowQuality=5
r.Shadow.CSM.MaxCascades=4
r.Shadow.MaxResolution=1024
r.Shadow.RadiusThreshold=0.03
r.Shadow.DistanceScale=1.0
r.Shadow.CSM.TransitionScale=1.0

纹理 - sg.TextureQuality

现代的渲染引擎需要更多的 GPU 内存(纹理、网格体、GBuffer、深度缓冲、阴影贴图)。其中一部分随屏幕分辨率缩放(如 GBuffer),另外一部分随特定精度设置缩放(如阴影贴图)。剩余的大量内存被已用纹理所占据(通常已压缩并流动)。可设置流动系统执行严格管理(较小的池尺寸、剔除掉未使用的纹理)或在 mip 层级计算中的细节程度。这将影响图像质量、纹理流动穿帮可见度和游戏运行流畅度(更新需要大量内存转移)。基于不同媒介(如快速或慢速硬盘驱动/固态硬盘)将出现不同结果。从 DVD/Blu-Ray 流出将出现较大延迟,应尽量避免。

纹理精度还会影响纹理过滤模式(r.MaxAnisotropy)。限制各向异性采样数量将减少纹理带宽,带无法节省纹理内存。

sg.TextureQuality 0

sg.TextureQuality 1

r.Streaming.MipBias=2.5
r.MaxAnisotropy=0
r.Streaming.PoolSize=200
r.Streaming.MipBias=1
r.MaxAnisotropy=2
r.Streaming.PoolSize=400

sg.TextureQuality 2

sg.TextureQuality 3

r.Streaming.MipBias=0
r.MaxAnisotropy=4
r.Streaming.PoolSize=700
r.Streaming.MipBias=0
r.MaxAnisotropy=8
r.Streaming.PoolSize=1000

此功能的效果主要取决于游戏和硬件。如纹理数量不多、全分辨率 mip map 加载和使用时未耗尽虚幻引擎 4 为纹理分配的内存池,高低设置之间(在各向异性设置变更之外)并无实际视觉差异。

特效 - sg.EffectsQuality

View -> Engine Scalability Settings -> Effects 选项中可调整多种不同类型特效的精度,可结合 BaseScalaiblity.ini 文件(放置在 [UE4_InstallPath]/Engine/Config 文件夹内)中的设置使用。Low 设置等于 sg.EffectsQuality 0,Epic 设置等于 sg.EffectsQuality 3。

sg.EffectsQuality 0

sg.EffectsQuality 1

r.TranslucencyLightingVolumeDim=24
r.RefractionQuality=0
r.SSR=0
r.SceneColorFormat=3
r.DetailMode=0
r.TranslucencyVolumeBlur=0
r.MaterialQualityLevel=0
r.TranslucencyLightingVolumeDim=32
r.RefractionQuality=0
r.SSR=0
r.SceneColorFormat=3
r.DetailMode=1
r.TranslucencyVolumeBlur=0
r.MaterialQualityLevel=1

sg.EffectsQuality 2

sg.EffectsQuality 3

r.TranslucencyLightingVolumeDim=48
r.RefractionQuality=2
r.SSR=0
r.SceneColorFormat=3
r.DetailMode=1
r.TranslucencyVolumeBlur=1
r.MaterialQualityLevel=1
r.TranslucencyLightingVolumeDim=64
r.RefractionQuality=2
r.SSR=1
r.SceneColorFormat=4
r.DetailMode=2
r.TranslucencyVolumeBlur=1
r.MaterialQualityLevel=1

细节模式

Rendering 类目下,每个放置的 Actor 均拥有一个 Detail Mode 属性。此设置将定义 Actor 渲染的最低细节层级。

SC_00008.png

可通过控制台变更可延展性模式:

r.DetailMode 1

r.DetailMode 0 为低细节、r.DetailMode 1 为中等细节、r.DetailMode 2 为高细节模式。

SC_00005.png

通过此操作可轻松禁用贴图、细节物体、灯光或单个粒子效果。只可在不影响游戏进程的物体上进行此操作,否则网络游戏进程、游戏存储或一致性均会出现问题。

材质精度等级

ScaleR_ViewMatQual.png

材质可使用精度切换材质表现禁用一些对最终效果存在细微影响且消耗极大的材质部分。如要查看此效果,须切换至低精度模式。

无论 Material Quality Level 设为低或高,都将决定针对此材质进行评估的表现(低或高引脚)。如无输入,默认引脚将填入高或低(或两者同时填入)。设为高后,此材质包含 2 个消耗相对较高的 Perlin noise 操作。

此范例主要为展示 Material Switch 节点。因为 Noise 节点消耗极高,因此非常适合此例;但注意不要滥用此节点,因为通过其他消耗较低的方式也可达成此效果。

Material Quality Level -> Low

Material Quality Level -> High

SC_Closeup.png

SC_MirrorComplexity.png

在上图中,Shader Complexity 模式表明高质量材质的消耗比其他着色器更高,深绿色即代表消耗更高的着色器。

使用精度切换将使更多着色器被编译(着色器置换)。

此功能无法用于远距离 LOD,因为无法同时拥有两个精度等级。此功能可减少:

  • 着色器置换(如:禁用模糊图层)

    • 使用 Shader Complexity(在编辑器中按下 Alt+8)模式和指令数验证优化。

  • 纹理查找(如:无细节凹凸贴图)。

  • 内存带宽(如:使用更少纹理)。

    • 需对实际硬件进行剖析,以便验证。

多数材质编辑器输出只影响像素着色器。世界位置偏移和所有曲面细分输出影响其他的着色器类型。像素着色器在占据屏幕较大部分时(如天空盒)才会出现较大的消耗;而其他着色器只在物体未被剔除时(在画面中,未隐藏在不透明物体后)才具有作用。

骨骼网格体 LOD 偏差

SC_Skeletal.png

骨骼网格体可拥有静态 LOD 模型。通过控制器变量 r.SkeletalMeshLODBias 可对 LOD 层级产生整体偏差。基于首个或第二个 LOD 的精度,可能需要将此选项纳入可延展性设置中。此处可延展性设置在基于距离的 LOD 之上。