公司游戏项目,手机运行严重发烫,耗电量飞快。在暂时无法做其他美术性和技术性优化的情况下,我写了这个公司内部文档,并做了个实验,今天干脆公布出来,希望对大家有用。

--官方文档:

Unity - Scripting API: OnDemandRendering

--Youtube讲解:

https://www.youtube.com/watch?v=RYgWn6jbteY

youtube上的极端实验结果:

好,现在我们来做一下实验,看把渲染帧率从60,动态降低到12左右,手机耗电量会降低多少,温度是否能降低。

第一次测试:
我们把如下代码挂到场景中任意一个游戏体,设置渲染帧率60的情况下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;


public class Change_Frame : MonoBehaviour
{

// 目标帧率
public int FrameRate = 60;


// Start is called before the first frame update
void Start()
{
//QualitySettings.vSyncCount = 0;
Application.targetFrameRate = FrameRate;
// 降低帧率
// If there isn't any input then we can go back to 12 FPS (every 5 frames).
// OnDemandRendering.renderFrameInterval = 5;
}

// Update is called once per frame
void Update()
{

}
}
开始测试,手机电量为78%,测试开始时间,8:27,如下:

结束测试,手机电量为72%,测试结束时间,8:42,如下:

第一次测试结论:

测试时长:15分钟,耗电量6%,手机明显发热,略烫手,肯定是40度以上。

第二次测试:
我们把代码改一下,其实就是取消OnDemandRendering.renderFrameInterval = 5; 的注释,把渲染帧率设置为12:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;


public class Change_Frame : MonoBehaviour
{

// 目标帧率
public int FrameRate = 60;


// Start is called before the first frame update
void Start()
{
//QualitySettings.vSyncCount = 0;
Application.targetFrameRate = FrameRate;
// 降低帧率
// If there isn't any input then we can go back to 12 FPS (every 5 frames).
OnDemandRendering.renderFrameInterval = 5;
}

// Update is called once per frame
void Update()
{

}
}
开始测试,手机电量为71%,测试开始时间,9:00,如下:

结束测试,手机电量为72%,测试结束时间,8:42,如下:

第二次测试结论:

测试时长:15分钟,耗电量3%,手机不怎么发热,感觉在室温左右,总之肯定低于36度。

结论:
使用OnDemandRendering可以动态调整渲染帧率。 渲染帧率的下降,无疑会对耗电量、功耗、发热量产生积极影响。

多说一句,其实Adaptive Performance方案,我个人理解,也是通过:感知硬件状况,比如温度、功耗等等,然后通过调节渲染帧率、调节LOD水平,去达到一个动态的功能和功耗的平衡。就是三星那个项目,有着非常可观的性能和较低的功耗。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/chenggong2dm/article/details/125106939

Unity性能优化-降低功耗,发热量,耗电量之OnDemandRendering篇的更多相关文章

  1. Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译

    本文是Unity官方教程,性能优化系列的第三篇<Optimizing garbage collection in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...

  2. Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译

    本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...

  3. Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译

    本文是Unity官方教程,性能优化系列的第二篇<Diagnosing performance problems using the Profiler window>的简单翻译. 相关文章: ...

  4. Unity 性能优化(力荐)

    开始之前先分享几款性能优化的插件: 1.SimpleLOD : 除了同样拥有Mesh Baker所具有的Mesh合并.Atlas烘焙等功能,它还能提供Mesh的简化,并对动态蒙皮网格进行了很好的支持. ...

  5. Unity性能优化(1)-官方教程The Profiler window翻译

    本文是Unity官方教程,性能优化系列的第一篇<The Profiler window>的简单翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻 ...

  6. Unity性能优化的N种武器

    贴图: l  控制贴图大小,尽量不要超过 1024 x1024: l  尽量使用2的n次幂大小的贴图,否则GfxDriver里会有2份贴图: l  尽量使用压缩格式减小贴图大小: l  若干种贴图合并 ...

  7. Unity性能优化专题---腾讯牛人分享经验

    这里从三个纬度来分享下内存的优化经验:代码层面.贴图层面.框架设计层面. 一.代码层面. 1.foreach. Mono下的foreach使用需谨慎.频繁调用容易触及堆上限,导致GC过早触发,出现卡顿 ...

  8. Unity性能优化-DrawCall

    1. DrawCall是啥?其实就是对底层图形程序(比如:OpenGL ES)接口的调用,以在屏幕上画出东西.所以,是谁去调用这些接口呢?CPU.比如有上千个物体,每一个的渲染都需要去调用一次底层接口 ...

  9. Unity性能优化——LOD技术

    LOD,中文名多层次细节,是游戏中最常用的技术,它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算.今天我们来实现使用它来做一个简单的优化例子. ...

  10. Unity性能优化之特效合并

    特效合并,意思是说将粒子所用的零碎图片,以shader为单位合并成一张图集,好处就是可以降低draw call.试想,合并前每个粒子使用一个material,而每一个material就要占用一个dra ...

随机推荐

  1. Java线程池实现原理与源码解析(jdk1.8)

    为什么需要线程池?线程池能够对线程进行统一分配,调优和监控:- 降低资源消耗(线程无限制地创建,然后使用完毕后销毁)- 提高响应速度(无须创建线程)- 提高线程的可管理性 Java是如何实现和管理线程 ...

  2. 深入解析 Spring AI 系列:分析 Spring AI 可观测性

    今天我们将讨论之前略过的可观测性部分的代码.在这里,我想简单说明一下,当时这部分代码属于必须编写的固定模板,因此在最初的讨论中我们直接跳过了它.虽然这部分代码乍看之下可能显得比较复杂,但实际上它的核心 ...

  3. 个人数据保全计划:从印象笔记迁移到joplin

    前言 最近在探索各种现代化的笔记工具时,刚好用上了Joplin这款应用,尽管界面没那么好看,但开源.支持markdown.功能完善,而且还支持很多导入方法(事实上很多开源笔记都支持). 其中的导入功能 ...

  4. 阻止(禁止)textare回车换行

    <van-field v-model="form.messageCont" rows="3" label="口号" autosize ...

  5. 从生活案例理解滑动窗口最大值:一个超直观的思路讲解|LeetCode 239 滑动窗口最大值

    LeetCode 239 滑动窗口最大值 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 更多干货,请关注公众号[忍者算法],回复[刷题清单]获取完整题解目录 ...

  6. Ceph的crush算法与一致性hash对比介绍

    本文分享自天翼云开发者社区<Ceph的crush算法与一致性hash对比介绍>,作者:l****n 首先,我们先回顾下一致性hash以及其在经典存储系统中的应用. 一致性hash的基本原理 ...

  7. 彰显科技硬实力!天翼云论文在国际顶刊JoCCASA发表!

    近日,由天翼云科技有限公司云网产品事业部混合云团队完成的论文<Multivariate Time Series Collaborative Compression for Monitoring ...

  8. CF1326G 题解

    题意: 蛛网树是一颗平面树,满足点是该树的凸包的顶点上等价于其是叶子. 给定一个平面树,求有多少种对点集的划分,使得每个划分出来的集合都是蛛网树. Solution 考虑树形 dp.设 \(f_u\) ...

  9. Nginx - [02] 安装部署&配置

    官网下载地址:http://nginx.org/en/download.html 001 || 安装[windows] 解压之后,在命令提示符窗口启动nginx.exe 在浏览器访问80端口:loca ...

  10. Ai 系列 —— DeepSeek 初步介绍

    DeepSeek 初步使用介绍 背景 Ai 正在慢慢在改变我们的生活,比如老一辈可能已经在用豆包(字节跳动推出的AI聊天机器人) 前端开发,某些公司内部已在使用图生文(设计稿生成前端代码) 网上也有许 ...