有兴趣可查看之前写的标准渲染管线的版本

适配了URP渲染管线,并增加了抛弃第一次采样的数据(涉及Shader编译会影响采样数据)

可设置隔帧采样不影响游戏运行

一般在游戏启动进登录界面时可以开始,Camera设置为场景相机

注意:

Maximum Sample Counter和Draw Times Per Batch不宜设置太高,否则可能出现在UPR或者UWA报告中看到DrawCall和面数超高的情况

Mesh最好在500面左右

using Logic;
using Sirenix.OdinInspector;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;
using UnityEngine.Rendering;public class GPUPerformanceTest : MonoBehaviour
{public Camera Camera;public Material Material;public Mesh Mesh;RenderTexture texture;float startTestTime;int sampleCounter;int skipCounter;public int skipSample = 1; // 丢弃采样,第一次渲染可能涉及shader编译,会影响统计数据public int maximumSampleCounter = 5;public int DrawTimesPerBatch = 100;public int BatchCountPerFrame = 1;public int FrameTimeMS = 10;public int DelayFramePerTest = 5;public float ScoreScale = 1;public float ScoreAdjust = 0;//public int MaximumDrawCount = 5000;long elapsedMS;[HideInInspector]public float TestScore = 0;// 性能测试评分private int _TotalDrawTimes = 0;private long _TotalDrawMilliseconds = 0;int delayFrameCounter;public bool RunOnStart = true;public Action OnComplete;enum TestState{Waiting,Tasting,Delaying,Completed,Freeze,}TestState State;private void Awake(){State = TestState.Waiting;}private void Start(){if (RunOnStart){StartTest();}}[Button]public void StartTest(){sampleCounter = 0;skipCounter = 0;delayFrameCounter = 0;startTestTime = Time.realtimeSinceStartup;if (!this.gameObject.activeSelf){this.gameObject.SetActive(true);}State = TestState.Tasting;Common.Log.Info("Performance test begin-------------");}private void OnEnable(){//texture = RenderTexture.GetTemporary(Camera.pixelWidth, Camera.pixelHeight, 0, UnityEngine.Experimental.Rendering.GraphicsFormat.R16G16B16A16_SFloat);RenderPipelineManager.endCameraRendering += RenderPipelineManager_endCameraRendering;}void TestDrawMesh(){long milliseconds = 0;int draw_times = 0;var stopwatch = Stopwatch.StartNew();for (int n = 0; n < BatchCountPerFrame; ++n){{for (int i = 0; i < DrawTimesPerBatch; ++i){CommandBuffer commandBuffer = new CommandBuffer();Vector3 look = this.Camera.transform.TransformDirection(Vector3.forward);Vector3 pos = this.Camera.transform.position + look.normalized * 10;RenderTargetIdentifier targetIdentifier = new RenderTargetIdentifier(texture);commandBuffer.DrawMesh(Mesh, Matrix4x4.TRS(pos, Quaternion.identity, Vector3.one), Material);Graphics.ExecuteCommandBuffer(commandBuffer);draw_times++;}}if (stopwatch.ElapsedMilliseconds > FrameTimeMS){break;}//             if (_TotalDrawTimes >= MaximumDrawCount)//             {//                 break;//             }}stopwatch.Stop();milliseconds = stopwatch.ElapsedMilliseconds;_TotalDrawTimes += draw_times;_TotalDrawMilliseconds += milliseconds;}private void RenderPipelineManager_endCameraRendering(ScriptableRenderContext arg1, Camera arg2){if (State != TestState.Tasting)return;TestDrawMesh();sampleCounter++;if (skipCounter < skipSample){skipCounter++;sampleCounter = 0;_TotalDrawTimes = 0;_TotalDrawMilliseconds = 0;}if (sampleCounter >= maximumSampleCounter)//if (_TotalDrawTimes >= MaximumDrawCount){State = TestState.Completed;}else{delayFrameCounter = 0;State = TestState.Delaying;}}private void Update(){switch (State){case TestState.Delaying:{if (delayFrameCounter >= DelayFramePerTest){State = TestState.Tasting;}delayFrameCounter++;}break;case TestState.Completed:{TestScore = 1.0f * _TotalDrawTimes / Mathf.Max(1, _TotalDrawMilliseconds);TestScore = TestScore * ScoreScale + ScoreAdjust;Common.Log.Info($"Performance test draw mesh time(MS): {_TotalDrawMilliseconds}, draw times: {_TotalDrawTimes}, score: {TestScore}. ({Time.realtimeSinceStartup - startTestTime}s");State = TestState.Freeze;OnComplete?.Invoke();}break;case TestState.Freeze:{this.gameObject.SetActive(false);}break;}}private void OnDisable(){RenderPipelineManager.endCameraRendering -= RenderPipelineManager_endCameraRendering;//RenderTexture.ReleaseTemporary(texture);}
}

Unity 检测手机性能,区分高中低端机型(URP)相关推荐

  1. Unity 检测手机性能,区分高中低端机型

    项目中针对高中低端机型需做不同的适配,如低端机型不开启全屏泛光,降低阴影质量,关闭抗锯齿效果等等.首先我在项目中用到的测试机都安装上安兔兔并进行跑分,当然这个跑分不是给游戏用,而是我们先确定手机是什么 ...

  2. Android区分高低端机型

    一.背景 某些APP项目中需要针对高中低端安卓机型做不同的适配,例如:特效的开关.动画效果的调整等.怎么在项目中对Android进行高低端机型的区分?接下来的内容会进行分析. 二.区分标准 区分的标准 ...

  3. unity3d 优化 高中低端机 机型分类

    unity 开发移动端游戏众多, 此文章为优化考虑, 对不同的手机分类为高中低端, 分类标准如下 Android 需要综合架构(这问题自己想).核心数(代码请在blog里找).主频(代码请在blog里 ...

  4. Unity针对高低端机型的优化

    1.为什么要区分高低端机型 我们在制作游戏项目时,画质和流畅度都是非常重要的.市面上的游戏设备百花齐放,各大厂商推出不同型号.不同性能的设备来满足大众的需求. 一款游戏的画质和流畅度是决定游戏能否畅销 ...

  5. 芯片短缺蔓延至手机市场:骁龙888短缺 三星中低端机型生产受阻

    近日,据国外媒体报道,自2020年下半年以来,芯片短缺问题就成为半导体行业的主旋律.如今,芯片短缺问题日益严重,包括汽车.手机.游戏机.PC在内的产业相继受到影响. 据悉,高通是HTC.索尼.诺基亚. ...

  6. android 主流机型排行,安卓手机性能排行:华为Mate40 Pro仅排第四,第一名无可撼动...

    对于现在的智能手机市场,很多人都说其实性能已经足够使用,甚至已经处于性能过剩的阶段,但事实上这个说法也不完全对,如果买手机只是单纯地用来上网.看视频,聊天等常用功能,其实骁龙845都完全够用,但是如果 ...

  7. android 主流机型排行,安卓手机性能排行:小米10 Pro第八,第一名果然是它

    原标题:安卓手机性能排行:小米10 Pro第八,第一名果然是它 时间终于来到了9月份,不出意外的话,万众期待的iPhone 12系列和华为Mate 40系列将于本月正式亮相,而随着这两款手机的发布,意 ...

  8. 可以检测手机帧率和温度的软件_主流手机芯片性能排行,看看哪款可以满足你!...

    " 选购手机时,手机性能也是需要关注的一大要点,手机性能会影响到流畅度.游戏体验等,其中手机芯片性能起到决定性作用.目前5G手机所采用的芯片非常多,我们一起来了解下主流5G手机芯片性能,可以 ...

  9. Unity手游性能蓝皮书

    作为游戏行业的服务商,UWA不仅为游戏开发者提供高效的性能优化工具,也致力于为行业提供更全面.更具体的信息和服务.为此,UWA今天发布2020-2021年度手游蓝皮书,从测试机型分布.引擎各模块开销. ...

最新文章

  1. CMake结合PCL库学习(1)
  2. 网站发布问题及使用Web Deployment Projects
  3. PostgreSQL字符集问题
  4. php对提交数据转码,如何使用php程序实现媒体转码消息的接收
  5. TODO:Go语言goroutine和channel使用
  6. Spark _17 _SparkShuffle、HashShuffleManager、SortShuffleManager
  7. 5 压缩上传图片_推荐一个干净纯粹的网站,专注图片压缩、pdf相关操作
  8. 少儿编程100讲轻松学python(七)-pycharm怎么删除项目
  9. soapui自带的webservice实例 MockService
  10. 一个完美网站的101项指标.第一部分.概述
  11. 采用nettcp绑定的wcf宿主到iis7
  12. Ajax学习笔记-get请求参数-3
  13. mega linux教程,LINUX 安装MegaRAID Storage Manager (MSM)安装使用教程
  14. 虚拟机ip地址怎么设置
  15. 15个经典面试问题及回答思路,知乎上转疯了!
  16. 工业互联网大数据之数据管理与治理的简易理解
  17. Stm32F4以太网远程固件升级BootLoader踩过官方的坑
  18. 03 循环、字符串、列表、元祖、字典
  19. NFT国内化的“数字藏品” 国内互联网龙头的入局
  20. B站网页视频加速设置

热门文章

  1. [SDOI2009]虔诚的墓主人
  2. 图片怎么缩小到300k?如何将图片缩小到300k以内?
  3. (干货)备战2021年软考中级网络工程师-04知识产权与标准化
  4. 让图片说出声音来(利用讯飞API实现图片转文字和文字转语音)
  5. 你为你的BLOG找了经纪人了吗?
  6. 视频局部区域的马赛克处理
  7. 记录一次有点意思的阿里云服务器被黑的经历
  8. java预研项目_YAML预研文档
  9. 接口测试及接口抓包常用的测试工具有哪些?
  10. arm架构linux系统平板电脑推荐,x86平板电脑排行_X86平板电脑推荐成垃圾,ARM架构平板电脑品牌是王道...