士郎 Unity3D 渲染密度及渲染屏占比统计工具

28
回复
3049
查看
打印 上一主题 下一主题
[ 复制链接 ]
排名
1
昨日变化

7581

主题

8126

帖子

3万

积分

Rank: 16

UID
1231
好友
186
蛮牛币
9938
威望
30
注册时间
2013-7-29
在线时间
3916 小时
最后登录
2019-4-19

活力之星原创精华达人突出贡献奖财富之证游戏蛮牛QQ群会员蛮牛妹VIP

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本文基于 UWA Day 2018 《Unity引擎移动游戏性能优化全解析》提出的通过渲染密度和渲染屏占比进行完善的方法

1. 待解决问题

在建模过程中,有一些模型由于整体体积较大或者结构复杂,常常需要更多的面片数和顶点数,然而在实际游戏界面中,这些模型的实际出现内容并没有那么多,在相机中的实际视觉占比较低。这时我们需要在基本不影响整体视觉效果的同时选择并优化模型。一种可行的做法是选取实际屏幕空间里像素数目相对于模型面片数和顶点数较多的模型,适当减少面片数和顶点数,从而优化渲染,提高性能。本插件通过等间隔截取样本帧并统计各个模型在相机中的平均像素,实现了统计像素数与模型顶点数和模型大小的比,二者数值较大则考虑优化,方便了建模优化


2. 实现思路
在某帧中对视野中所有Render进行染色,不同Render染不同颜色,截图并根据颜色统计对应Render所占像素数,最终对于所有采样帧数据取均值,得到每一个Render的平均像素数。之后获取模型顶点数和模型大小信息,计算相关数据即可



图一 染色图示意

实现步骤:


  • 获取 Renderers

因为不在相机视野中的物体显然无需统计,所以只需获取视锥体里的 Renderers 即可。这里使用 CalculateFrustumPlanes + TestPlanesAABB 和 Layer 简单过滤一次


  • 替换 Material 及颜色



现在赋予每个 Renderer 以Unlit/Color 材质,将其按照编号 index 赋予相应的颜色,指定相应转换公式

  • 渲染截屏



将相机设为黑色背景色,然后使用 RenderTexture 配合 camera.Render 渲染即可;记得渲染完成后将相机的相关属性还原

  • 统计像素

将贴图拷回内存,遍历像素然后将颜色重新映射回 index 即可



  • 统计模型及材质信息

一方面统计每个模型的 Mesh 数目和顶点数目和对应的平均屏幕空间像素,另一方面统计每个材质的大小和其平均屏幕空间像素。这部分需要注意的是不同 Renderer 可能使用相同的 Mesh 或 Texture。最后输出到指定 .csv 文件即可



图二 输出统计信息


3. 细节优化


  • 统计的时候利用 Texture2D. GetPixels32(),性能会有优势
  • 这里我们并不需要精确统计像素个数,所以为了性能考虑,可降低截图分辨率,避免卡顿
  • 跳帧统计,不需要每帧执行带来编辑器负担


  • 知乎@半匪君子



7日久生情
1577/5000
排名
1840
昨日变化

11

主题

278

帖子

1577

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
252607
好友
5
蛮牛币
14284
威望
0
注册时间
2017-11-5
在线时间
556 小时
最后登录
2019-4-19

一掷千金

沙发
2018-11-2 16:54:34 只看该作者
7日久生情
2690/5000
排名
2230
昨日变化

1

主题

1717

帖子

2690

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
119154
好友
0
蛮牛币
2773
威望
0
注册时间
2015-8-21
在线时间
342 小时
最后登录
2019-4-19
板凳
2018-11-4 13:39:26 只看该作者
谢谢楼主大大。
4四处流浪
483/500
排名
15907
昨日变化

0

主题

224

帖子

483

积分

Rank: 4

UID
220417
好友
0
蛮牛币
120
威望
0
注册时间
2017-5-3
在线时间
213 小时
最后登录
2019-3-6
地板
2018-11-7 10:33:19 只看该作者
谢谢分享谢谢分享
3偶尔光临
274/300
排名
11817
昨日变化

0

主题

104

帖子

274

积分

Rank: 3Rank: 3Rank: 3

UID
269725
好友
0
蛮牛币
378
威望
0
注册时间
2018-2-27
在线时间
88 小时
最后登录
2019-4-18
5#
2018-11-12 15:08:59 只看该作者
感谢楼主分享
排名
28925
昨日变化

1

主题

14

帖子

48

积分

Rank: 1

UID
275840
好友
0
蛮牛币
496
威望
0
注册时间
2018-4-6
在线时间
21 小时
最后登录
2018-11-21
6#
2018-11-15 09:00:20 只看该作者
哇塞 好厉害的样子
3偶尔光临
264/300
排名
11658
昨日变化

0

主题

64

帖子

264

积分

Rank: 3Rank: 3Rank: 3

UID
164231
好友
0
蛮牛币
8
威望
0
注册时间
2016-8-25
在线时间
116 小时
最后登录
2019-4-18
7#
2018-11-16 14:37:57 只看该作者
66666666666666666666666666666
5熟悉之中
509/1000
排名
6482
昨日变化

3

主题

164

帖子

509

积分

Rank: 5Rank: 5

UID
5952
好友
1
蛮牛币
309
威望
0
注册时间
2013-10-19
在线时间
134 小时
最后登录
2019-4-21
8#
2018-11-21 18:01:56 只看该作者
6666666666666666
排名
34881
昨日变化

0

主题

9

帖子

22

积分

Rank: 1

UID
300238
好友
0
蛮牛币
47
威望
0
注册时间
2018-10-16
在线时间
5 小时
最后登录
2018-12-3
9#
2018-11-22 09:14:56 只看该作者
5熟悉之中
897/1000
排名
2967
昨日变化

0

主题

189

帖子

897

积分

Rank: 5Rank: 5

UID
264326
好友
0
蛮牛币
9787
威望
0
注册时间
2018-1-14
在线时间
212 小时
最后登录
2019-4-20
10#
2018-11-27 19:32:30 只看该作者
排名
21326
昨日变化

0

主题

49

帖子

84

积分

Rank: 2Rank: 2

UID
49997
好友
1
蛮牛币
53
威望
0
注册时间
2014-10-20
在线时间
13 小时
最后登录
2019-1-28
11#
2018-11-30 23:23:54 只看该作者
66666666666666
排名
21326
昨日变化

0

主题

49

帖子

84

积分

Rank: 2Rank: 2

UID
49997
好友
1
蛮牛币
53
威望
0
注册时间
2014-10-20
在线时间
13 小时
最后登录
2019-1-28
12#
2018-12-1 13:30:28 只看该作者
感谢楼主分享
7日久生情
3116/5000
排名
228
昨日变化

3

主题

206

帖子

3116

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
40098
好友
0
蛮牛币
14306
威望
0
注册时间
2014-8-15
在线时间
837 小时
最后登录
2019-4-21
QQ
13#
2018-12-1 16:05:52 只看该作者
跟我念“站长妹纸萌萌哒!
排名
21326
昨日变化

3

主题

26

帖子

92

积分

Rank: 2Rank: 2

UID
251742
好友
0
蛮牛币
1259
威望
0
注册时间
2017-10-31
在线时间
39 小时
最后登录
2019-4-10
14#
2018-12-5 13:51:44 只看该作者
哇塞 好厉害的样子
排名
21326
昨日变化

3

主题

26

帖子

92

积分

Rank: 2Rank: 2

UID
251742
好友
0
蛮牛币
1259
威望
0
注册时间
2017-10-31
在线时间
39 小时
最后登录
2019-4-10
15#
2018-12-5 13:52:51 只看该作者
哇塞 好厉害的样子
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则