Unity 2017.3针对相机的DynamicResolution (比如UI分辨率不变,改变3D场景分辨率 来提高性能)

Unity 2017.3引入了动态分辨率API,允许在GPU负载增加时动态调整渲染目标分辨率以维持帧率。通过Camera的allowDynamicResolution标志和FrameTimingManager,开发者可以在CPU或GPU性能下降时,智能调整比例以保持性能稳定。此外,文章提供了多个资源链接作为参考,包括使用CommandBuffer实现类似效果的方法。
摘要由CSDN通过智能技术生成

在之前一种优化方式是改变 :屏幕分辨率    https://docs.unity3d.com/2017.3/Documentation/ScriptReference/Screen-resolutions.html     

 

在 Unity 2017.3 中增加了API :  

https://docs.unity3d.com/2017.3/Documentation/ScriptReference/Camera-allowDynamicResolution.html   

https://docs.unity3d.com/Manual/DynamicResolution.html     

Camera的动态分辨率设置,该设置允许您动态缩放单个渲染目标,以减少GPU上的工作负载。在app的帧速率降低的情况下,您可以逐渐缩小分辨率以保持一致的帧率。如果性能数据表明由于app受GPU限制,帧率将会下降,Unity会触发此缩放。您还可以通过脚本控制缩放来手动触发缩放。

          上图的勾选设置 , 是为渲染目标添加一个标记 :DynamicallyScalable  https://docs.unity3d.com/ScriptReference/RenderTextureCreationFlags.DynamicallyScalable.html   , 

            相机还具有 相机还具有allowDynamicResolution标志   ,您可以使用该标志来设置动态分辨率。 

代码更改 分辨率:

//分辨率更改 
ScalableBufferManager.ResizeBuffers(0.5f,0.5f);
 //更新RenderTexture
Graphics.Blit(_tex,_renderTexture);

  https://docs.unity3d.com/ScriptReference/ScalableBufferManager.html    

f:id:esakun:20181217173031g:平原

ScalableBufferManager.ResizeBuffers更改分辨率后,useDynamicScale将清除渲染纹理内容,因此必须完成渲染纹理更新。Unity FrameTimingManager允许您检测CPU或GPU性能何时开始下降。因此,您可以使用FrameTimingManager计算新的所需宽度和高度比例来将帧速率保持在所需范围内,

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值