惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
GRAHAM CLULEY
V
V2EX
WordPress大学
WordPress大学
博客园 - Franky
Last Week in AI
Last Week in AI
博客园 - 司徒正美
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
V
Visual Studio Blog
C
CERT Recently Published Vulnerability Notes
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
Attack and Defense Labs
Attack and Defense Labs
腾讯CDC
The Hacker News
The Hacker News
Hugging Face - Blog
Hugging Face - Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
J
Java Code Geeks
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
A
Arctic Wolf
量子位
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
雷峰网
雷峰网
博客园_首页
Google Online Security Blog
Google Online Security Blog
Spread Privacy
Spread Privacy
罗磊的独立博客
H
Hacker News: Front Page
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
TaoSecurity Blog
TaoSecurity Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
IT之家
IT之家
The Cloudflare Blog
爱范儿
爱范儿
博客园 - 叶小钗
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell

UNITY

刚才清理废纸篓的时候发现一封没看的 unity 邮件, 这是以后不让用 Unity 开发国外版本的游戏了? 逼着使用腾讯的 Tuanjie 引擎吗? Tuanjie 打出来的包好像会强加水印啥的. - V2EX 中国区用户的海外 Unity 资源商店的访问权限将于 2026 年 3 月 31 日终止 有哪个头显是能实时连接 Unity 编辑场景的? - V2EX unity 国区账号如何下载 unity 商店资源? - V2EX unity 可以做三维建模 vr 效果吗 - V2EX gaia pro 问题请教 - V2EX Cursor 等一众 AI 编程工具目前和 Unity 游戏开发的结合怎么样了? Unity 游戏开发想用 AI 提高生产率目前都有什么比较好的方案或者工具? - V2EX Unity 股价只剩三年前的 10%了(200USD=>20USD)会不会被哪个大公司收购? - V2EX Unity 6 现在国区不让下载了 - V2EX Unity 答疑,任何问题都可以 - V2EX 当我用 Unity 开发游戏的时候有什么场景下要使用“栈”操作? - V2EX 为什么 Unity 自带的资源加密功能是中国版特供的? - V2EX Unity 远程开发岗位,感兴趣小伙伴看过来 - V2EX unity 2D 像素精灵的生成有推荐的方法吗? - V2EX 远程 Unity 开发工程师(英国) - V2EX 求推荐点 Unity 入门教程 - V2EX 请教个语音听写的问题 - V2EX Unity 打包后出现 "trial version" - V2EX 有没老哥用 m2 开发 unity 的 - V2EX 如何看待 Unity 新出的每次安装收费? - V2EX 为什么 Unity 的定价策略增加了对安装量的限制? - V2EX unity 将于 2024 年 1 月调整收费模式 - V2EX [Unity 离奇 Bug] 游戏在编辑器内运行 ok,构建出的 exe 却不能在本机正常运行 - V2EX 3 维空间中,求过原点的直线的方向向量? - V2EX 求推荐资源 - 俯瞰视角场景设计相关 - V2EX 震惊,有个框架竟然能快速让 Unity 新手制作可热更游戏!竟然可以让老项目快速对接具备热更性质! - V2EX 大佬们 学习 Unity 遇到的两个问题求助 - V2EX 有人对 unity 的 photon 组件熟悉的嘛,想有偿咨询几个问题 - V2EX 用 Unity3d 来做跨平台开发是不是很好? - V2EX 对于 U3D Stopwatch ElapsedTick 的疑惑 - V2EX 有偿提供 unity 虚拟面试~ - V2EX 问一下各位大哥关于买网络授课是否有必要的问题 - V2EX 请问通过 unity WebGL 能播放 rtmp,可以实现吗? - V2EX [UnityTips] 一种仿 Minecraft 物品合成的思路 - V2EX ShaderLab 入门实践 - V2EX Unity 热更新 之 如何使用 AST 转换 C# -> Lua - V2EX 怎么通过 Unity 使用 Vulkan API & 移动端 Vulkan GPU 大 PK - V2EX Unity3D 实用技巧 - 快速学会模型合理导入 Unity3D 引擎 - V2EX Unity3D 实用技巧 - 从实践中总结经验(1) - V2EX [HDRP] PBR Lit shader(一.基础用法篇) - V2EX 如何将 Unity 以库形式集成到原生 iOS 和 Android 应用 - V2EX 如何在 Timeline 中创建自定义轨道? - V2EX 写给 Unity 开发者的 iOS 内存调试指南 - V2EX Unity3D 常用插件汇总 - V2EX 在 Unity 实现游戏命令模式 - V2EX Unity ECS(一)了解 ECS 与 DOTS - V2EX 使用 Unity 制作游戏 AI - V2EX 零基础入门 Unity Shader(二) - V2EX 如何实现存储和加载游戏数据 - V2EX
按需渲染如何改善移动端性能? - V2EX
unn · 2020-02-20 · via UNITY

大多数时候,项目并不需要一直保持最高帧率渲染,尤其是在移动平台上。过去,Unity 开发者们常使用 Application targetFrameRate 或 Vsync (垂直同步)来限制引擎的渲染速度。这种方法在影响渲染的同时,还会对其他部分的运行速率造成一些影响。而新的按需渲染 API 允许开发者将渲染频率从整体中独立出来调整。

什么是按需渲染? 按需渲染可以在降低渲染帧数的同时,让其他部分系统依旧以高频率运行。它在移动端的用处最大。省去部分渲染可以大幅提升性能、降低能耗,同时应用依旧可以对触控事件作出及时响应。 按需渲染的使用场景? 在以下几个情景中,降低帧率通常是更好的选择:

  1. 菜单(即应用入口或暂停菜单):菜单通常是一个较为简单的场景,不需要高频率的渲染。即使将菜单渲染速率降低,应用依旧可以在未渲染的帧上接受到指令输入。降低渲染速率后,我们就能降低能耗,通过限制 CPU 频率来防止设备温度过高,UI 互动也能依旧平滑。

  2. 回合制游戏(如象棋):在回合制游戏中,玩家需要思考下一步行动,等待对手的行动。这段时间游戏内的活动较少,我们可以降低帧率来减少不必要的能耗、延长电池寿命。

  3. 静态内容:在应用中,在大部分时间都处于静态的内容上,比如车内用户界面,可以适当地降低帧率。

  4. 性能控制:如果想要控制能耗和设备温度,在延长电池寿命的同时又不限制 CPU 性能,尤其是使用了Adaptive Performance包的情况下,可以通过调整渲染速率来实现目标。

  5. 机器学习和 AI:减少 CPU 在渲染上的工作量,可以让应用的机器学习和 AI 处理有些许的性能提升。

按需渲染支持哪些平台? 所有平台! Unity 2019.3 的按需渲染功能支持所有平台(详情请见系统要求部分)和渲染 API (包括内置渲染管线 Built-in Render Pipeline、通用渲染管线 URP 和高清渲染管线 HDRP )。 如何使用按需渲染呢? 按需渲染的 API 包含在 UnityEngine.Rendering 命名空间中,由三种属性组成。OnDemandRendering.renderFrameInterval 该 API 是最重要的部分。我们可以用它来取得或设置渲染帧间隔,确定帧率。 渲染帧间隔是确定 Application.targetFrameRate 及 QualitySettings.vSyncCount 间隔的要素。 打个比方,我们将 Application.targetFrameRate 设置为 60,将 OnDemandRendering.renderFrameInterval 设置为 2,则系统会每隔一帧渲染一次,最终帧率便为 30fps。 ☞OnDemandRendering.effectiveFrameRate 该属性会给出应用渲染帧率的估算值。 估算值根据 OnDemandRendering.renderFrameInterval、Application.targetFrameRate 和 QualitySetting.vSyncCount 的数值,以及显示器刷新频率计算得出。请注意这只是个估算值,并不一定是实际表现;当 CPU 同时在处理其他脚本、物理模拟、网络传输等等进程时,效率难免会降低,应用的渲染速度也可能变慢。 ☞OnDemandRendering.willThisFrameRender 该 API 会告知当前帧是否会被渲染到屏幕上。我们可以在不渲染的帧上执行一些吃 CPU 性能的进程,比如复杂的数学运算、加载资源或生成预制件。 注意事项

  • 虽然帧的渲染速率降低了,但事件依旧会以平常的步调被传入脚本,意味着在未渲染的帧上一样会收到指令输入。

  • 为了防止输入延迟的出现,我们建议在输入指令时调用 OnDemandRendering.renderFrameInterval = 1,让按钮、移动动作等能及时响应。

  • 未渲染帧上的脚本写入、物理模拟、动画等繁重的进程并不受益于按需渲染,这使得 CPU 使用率会出现起伏,带来些许 CPU 和能耗的改善。

示例 在下方例子中,菜单上使用了按需渲染将帧率限制在了 20fps,直到有指令输入。

using UnityEngine;
using UnityEngine.Rendering;

public class Menu : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        QualitySettings.vSyncCount = 0;
        Application.targetFrameRate = 60;
     // When the Menu starts, set the rendering to target 20fps
        OnDemandRendering.renderFrameInterval = 3;
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButton(0) || (Input.touchCount > 0))
        {
            // If the mouse button or touch detected render at 60 FPS (every frame).
            OnDemandRendering.renderFrameInterval = 1;
        }
        else
        {
            // If there is no mouse and no touch input then we can go back to 20 FPS (every 3 frames).
            OnDemandRendering.renderFrameInterval = 3;
        }
    }
} 

image

百讲不如一练,在文章的最后向各位提供一个展示按需渲染不同使用情景的示例项目

原文链接:https://connect.unity.com/p/an-xu-xuan-ran-ru-he-gai-shan-yi-dong-duan-xing-neng?app=true

欢迎戳上方原文链接,下载 Unity 官方技术社区 app,在线技术答疑,发现更多资源干货!