1.Rendering模块简介
2.Rendering中各参数功能的含义
3.Draw Call和设置渲染状态
1.Rendering模块简介
1).Rendering(渲染)模块用于显示渲染一帧时的数据量(比如: 批次数, 顶点数等)2).在游戏中如果出现以下问题, 可以重点观察这里的内容a.DrawCall过高导致CPU性能问题(卡顿, 掉帧)b.中低端手机上发热严重, 掉电快c.开启大量实时光照, 粒子, 动态对象后出现掉帧d.画面复杂卡顿, 简单不卡顿
2.Rendering中各参数功能的含义
Rendering(渲染)分析窗口显示有关CPU和GPU渲染相关的统计信息

a.Batches Count(批处理数)该帧内批处理数量(Draw Call次数), 值越高, CPU压力越大; 推荐合批优化b.SetPass Calls Count(SetPass调用次数)该帧内用于渲染游戏对象的着色器渲染通道(Pass)调用次数, 即每帧需要切换Shader/材质状态的次数; 值越高, CPU状态切换开销大; 尽量减少材质和渲染通道Pass的数量c.Triangles Count(三角形数量)该帧内渲染了多少个三角形(所有网格顶点组成的面), 影响GPU处理负荷, 特别是在移动端需控制数量d.Vertices Count(顶点数量)该帧内渲染了多少个顶点(所有网格顶点数量), 影响GPU顶点处理性能
可以将CPU在每帧里的工作时间想象成一块固定的, 有限的时间预算(比如, 为了达到60帧, 帧只有约16.6毫秒); 这块预算需要分配给两个主要部门:a.游戏逻辑(Game Logic)执行脚本, 比如处理玩家输入, AI行为, 物理计算, 游戏状态更新等b.渲染准备(Rendering Preparation)准备Draw call(设置状态, 提交数据...)


a.Dynamic Batching(动态批处理), Static Batching(静态批处理)(Instancing)GPU Instancing(同一网格多个实例共享)- Batched Draw Calls: 合并为批处理的DC数- Batches: 批处理数- Triangles: 三角形数- Vertices: 顶点数- Time: 处理时间b.Used Textures该帧使用的Unity纹理数量和纹理使用的内存量 c.Render Textures该帧使用的渲染纹理数量和内存量d.Render Textures Changes该帧将一个或多个渲染纹理设置为渲染目标的次数e.Used Buffers从CPU内存上传到GPU显存的所有缓冲区数据的总大小, 包括Vertex Buffers(顶点缓冲区), Index Buffers(索引缓冲区)等f.Vertex Buffer Upload In FrameCPU在该帧上传到GPU的几何体数量(顶点, 法线, 纹理数据)g.Index Buffer Upload In FrameCPU在该帧上传到GPU的三角形索引数据(索引数据定义了顶点如何连接形成三角形)h.Shadow Casters该帧中投射阴影的游戏对象数量, 如果一个物体受到多个光源影响, 那么每个光源产生的阴影都算在内
3.Draw Call和设置渲染状态
a.Draw CallCPU向GPU发出的一个命令, 大概是: 嘿GPU, 我现在给你一堆数量(顶点, 纹理, 着色器等), 请你按我设置的渲染状态(材质, 混合模式等), 将它们画到屏幕上b.SetPass Calls- 它是引擎为了绘制物体而切换渲染状态的次数- 渲染状态表示渲染一个物体前, GPU需要知道如何来渲染它
