SlideShare a Scribd company logo
1 of 57
Download to read offline
UE4 VR内容的优化
为什么VR效率慢
• VR需要更高的帧率
• VR需要更大的渲染分辨率
• VR 需要畸变色差纠正
• VR需要双目立体
• VR需要传递传感器信息
通用的思路
思考在优化之前的
• 在设计上就考虑到优化
• 做加法多余减法
• 尽量在渲染代码完整稳定以后进行优化
• 制定Budget,原型的快速迭代
• 对内容制作者进行前期培训
制定目标
执行
寻找瓶颈
开始优化
目标配置
寻找瓶颈
寻找原因
创建测试环境
暂停游戏
跑单独游戏
测试多次
确保帧数不封顶,比如关闭垂直
同步,设置最高帧数限制
找原因
Stat FPS
Stat unit
找原因
Draw Calls
找原因
CPU Render 瓶颈?
找原因
SceneRendering
找原因
影响DRAW CALL数量的因素
• 同屏看到的Actor数量
• 每个Actor 设置复杂度
• 材质ID数(or Section; Mesh elements)
• 每个Actor上的渲染属性数量
• 灯光和Actor的投影属性
• 粒子的发射器个数
找原因
• 单个Actor:Num(Elements)+Num(light)+Num(Elements)*1
• 单个Particles的Draw call数计算:
PC: Num(Emitter)*Num(Material pass)
Mobile: Num(Emitter)*Num(Material pass)*Num(Sprites)
DRAW CALL的简单计算
找原因
InitViews
找原因
r.VisualizeOccludedPrimitives 1
找原因
ToggleDebugCamera
找原因
Stat particles
找原因
Statistics
找原因
Property Matrix
找原因
• Showflag.staticmeshes
• Showflag.HUD
• Showflag.particles
• Showflag.skeletalmeshes
排除法
找原因
GPU 瓶颈?
找原因
影响GPU渲染效率和非常多
• 分辨率
• 面数密度太高,高到一个三角面小于2*2的像
素,这个往往发生在远处物体
• 投影
• 点处理:点太多;点动画的SHADER太复杂,
Tessellation太复杂,太多UV通道,太多SG
• 材质复杂度
• 计算遮挡关系
• 延迟灯光
• 后期
找原因
GPU Profiler
找原因
Viewmode
找原因
Stat Engine
找原因
找原因
Showflag.
Showflag.Translucency
Showflag.ambientocclusion
Showflag.dynamicshadows
Showflag.decals
找原因
一些最常见原因的总结
• 测试环境不合适,灯光没有build
• Actor或者材质ID太多
• 面太多,没有任何的LOD设置
• 各种动态投影
• 灯光类型随意,参数凶狠
• 没有合理的设置CULL的条件
• 透明太多
• 各种高级后期处理
执行
• 从最容易最立竿见影的着手
• 最小化图像质量的妥协
修改参数设置
优化内容
•减少数量: 删,合并,LOD, cull
•降低质量
•创造性作假
执行优化
找原因
分辨率
HMD SP
渲染参数优化设置
r.SeparateTranslucency=0
r.HZBOcclusion=0
r.FinishCurrentFrame=1
r.MotionBlurQuality=0
r.PostProcessAAQuality=3
r.BloomQuality=1
r.EyeAdaptationQuality=0
r.AmbientOcclusionLevels=0
r.SSR.Quality=1
r.DepthOfFieldQuality=0
r.SceneColorFormat=2
r.SSSSS=0
r.TranslucencyVolumeBlur=0
r.TranslucencyLightingVolumeDim=4
r.MaxAnisotropy=8
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.FastBlurThreshold=0
showflag.decals=0
r.SSR.MaxRoughness=0.1
r.compileshadersfordevelopment=0
r.rhicmdbypass=0
r.TiledReflectionEnvironmentMinimumCount=10
r.FinishCurrentFrame 0
r.EarlyZPass 1
r.HZBOcclusion 0
HMD SP XXX
Postprocess 优化设置
Scene color:
Fringe intensity 0
Grain intensity 0
Color grading intensity 0
Bloom intensity 0
LPV 0
Ambient occlusion 0
DOF Method Gaussian,其他参数 全部 0
Motion blur all 0
AA FXAA
SSR 0 MAX roughness 0.01
Ambient cubemap 0
关于CULL
执行优化
找原因
旋转后物体的Bounding box变的很大
关于HLOD
执行优化
减少Draw call和面数,甚至优化材质
执行优化
关于材质
执行优化
关于粒子
执行优化
灯光
使用静态灯光
减少重叠
执行优化
透明物体光照模型
执行优化
阴影
关闭阴影,减少投射阴影灯光的数量
关闭物体投射阴影的设置
减小阴影的质量: r.Shadow.MaxResolution
减少被投射物体的面数
执行优化
阴影
CAPSULE SHADOWS
创造性作假
执行优化
创造性作假
执行优化
假投影
创造性作假
执行优化
假投影
创造性作假
执行优化
烘培材质
创造性作假
执行优化
假反射
更多
最小化物体element数量
合并物体
透明材质很慢,因为overdraw,mask其次,不透明最快
硬边,UV分界多,导致点数大量增加
点处理中动画物体上要高于静态物体
Morph和worldpositionofffset这种点shader动画很费,尤其贴图lookup增加的时候
Tessellation很慢,可以预处理好,及分好了面再倒入
太大的物体分一下,有利于cull
小贴图可以让材质变得更快
除非物体在视野里不会变小,比如天空,否则不要试图去关掉mip
理解Shading模式的花费,unlit是最便宜的,lit其次,其他会更费
理解材质节点的花费,sin, power, cos, divide, noise等都比较费; multiply, add, subtract, clamp等都很便宜
灯光除非必要,否则都用static
区域灯光比普通的灯光要费
调整很小物体的被画的距离,他们往往可以比较早的被cull掉
减面。经常查看wireframe试图,看哪些模型在视图里已经是实线了,需要减面或者制作LOD, simplygon
减少动态或者stationary灯光的重合,可以通过合并灯光,减小灯光的范围
了解不同灯光的花费, 点光源>直射光>聚光灯; 影子的花费根据灯光和物体的张角和距离来
设计场景的时候就需要考虑到物体的遮挡关系,避免大而全的视野(即同时看到很多物体)
避免使用LPV动态GI
不需要投影的物体都关掉投影选项
Decal是很费的,它的消耗取决于全屏能看到的数量和像素,以及他覆盖到的范围
Disable occlusion culling, 有的时候禁掉它会比使用它快。 场景里的物体大部分时候始终能被看到,比如格斗类的游戏,比如棋类游戏
后期优化首选项:Scene color fringe; ambient cubemap, image based lens flares; LPV off; Grain intensity, DOF off, ssr off, or roughness 0.01; Motion blur off
执行优化
引擎已经提供的针对VR的优化
Done:
Deferred Input update:HMD & Touch controller
Instanced Stereo Rendering
HMD Distortion Mask
Latest SDK
Upcoming:
Multi-GPU support
Muti-resolution rendering
etc
HMD Distortion Mask
Oculus ~0.25 - 0.3 ms
Vive ~0.3 - 0.4 ms
PSVR ~1.0 ms
Deferred Input update:HMD & Touch controller
Instanced Stereo Rendering
CPU: 1.5ms
GPU: 0.75ms
谢谢

More Related Content

Similar to VR CONTENT OPTIMIZING UE4

淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化丁 宇
 
05.wls调优
05.wls调优05.wls调优
05.wls调优Meng He
 
网站前端代码静态检查工具研究
网站前端代码静态检查工具研究网站前端代码静态检查工具研究
网站前端代码静态检查工具研究pop2008
 
实时渲染动画时代的来临
实时渲染动画时代的来临实时渲染动画时代的来临
实时渲染动画时代的来临Epic Games China
 
编写可阅读的代码
编写可阅读的代码编写可阅读的代码
编写可阅读的代码LC2009
 
面向对象设计七大原则
面向对象设计七大原则面向对象设计七大原则
面向对象设计七大原则zoorz
 
Simple Rule Agile China 2009
Simple Rule   Agile China 2009Simple Rule   Agile China 2009
Simple Rule Agile China 2009JohnnLi
 
天猫大促性能测试实践 耿电
天猫大促性能测试实践 耿电天猫大促性能测试实践 耿电
天猫大促性能测试实践 耿电drewz lin
 
淘宝搜索前端优化
淘宝搜索前端优化淘宝搜索前端优化
淘宝搜索前端优化Frank Xu
 
网站前端代码静态检查工具综述
网站前端代码静态检查工具综述网站前端代码静态检查工具综述
网站前端代码静态检查工具综述pop2008
 
姚彤 从360手机卫士的研发经历看大型移动应用开发
姚彤 从360手机卫士的研发经历看大型移动应用开发姚彤 从360手机卫士的研发经历看大型移动应用开发
姚彤 从360手机卫士的研发经历看大型移动应用开发Trinea Trinea
 
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Poy Chang
 
Scrum敏捷开发示例
Scrum敏捷开发示例Scrum敏捷开发示例
Scrum敏捷开发示例Xiaoyan Chen
 
移动互联网上的微视频处理与分发
移动互联网上的微视频处理与分发移动互联网上的微视频处理与分发
移动互联网上的微视频处理与分发drewz lin
 
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)jalamar
 
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)LetAgileFly
 
Ceph Day Shanghai - Ceph in Chinau Unicom Labs
Ceph Day Shanghai - Ceph in Chinau Unicom LabsCeph Day Shanghai - Ceph in Chinau Unicom Labs
Ceph Day Shanghai - Ceph in Chinau Unicom LabsCeph Community
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构isnull
 

Similar to VR CONTENT OPTIMIZING UE4 (20)

淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
05.wls调优
05.wls调优05.wls调优
05.wls调优
 
网站前端代码静态检查工具研究
网站前端代码静态检查工具研究网站前端代码静态检查工具研究
网站前端代码静态检查工具研究
 
实时渲染动画时代的来临
实时渲染动画时代的来临实时渲染动画时代的来临
实时渲染动画时代的来临
 
编写可阅读的代码
编写可阅读的代码编写可阅读的代码
编写可阅读的代码
 
面向对象设计七大原则
面向对象设计七大原则面向对象设计七大原则
面向对象设计七大原则
 
Simple Rule Agile China 2009
Simple Rule   Agile China 2009Simple Rule   Agile China 2009
Simple Rule Agile China 2009
 
天猫大促性能测试实践 耿电
天猫大促性能测试实践 耿电天猫大促性能测试实践 耿电
天猫大促性能测试实践 耿电
 
淘宝搜索前端优化
淘宝搜索前端优化淘宝搜索前端优化
淘宝搜索前端优化
 
网站前端代码静态检查工具综述
网站前端代码静态检查工具综述网站前端代码静态检查工具综述
网站前端代码静态检查工具综述
 
BDD in .NET
BDD in .NETBDD in .NET
BDD in .NET
 
姚彤 从360手机卫士的研发经历看大型移动应用开发
姚彤 从360手机卫士的研发经历看大型移动应用开发姚彤 从360手机卫士的研发经历看大型移动应用开发
姚彤 从360手机卫士的研发经历看大型移动应用开发
 
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定Angular Conf 2018 - 原來 Angular 可以這樣玩設定
Angular Conf 2018 - 原來 Angular 可以這樣玩設定
 
Jasmine
JasmineJasmine
Jasmine
 
Scrum敏捷开发示例
Scrum敏捷开发示例Scrum敏捷开发示例
Scrum敏捷开发示例
 
移动互联网上的微视频处理与分发
移动互联网上的微视频处理与分发移动互联网上的微视频处理与分发
移动互联网上的微视频处理与分发
 
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
 
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
 
Ceph Day Shanghai - Ceph in Chinau Unicom Labs
Ceph Day Shanghai - Ceph in Chinau Unicom LabsCeph Day Shanghai - Ceph in Chinau Unicom Labs
Ceph Day Shanghai - Ceph in Chinau Unicom Labs
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
 

VR CONTENT OPTIMIZING UE4