游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2353

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 853|回复: 6

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

[复制链接]  [移动端链接]
排名
3
昨日变化

6973

主题

7498

帖子

2万

积分

Rank: 16

UID
1231
好友
185
蛮牛币
10467
威望
30
注册时间
2013-7-29
在线时间
3583 小时
最后登录
2018-11-16

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

发表于 2018-11-2 10:39:51 | 显示全部楼层 |阅读模式

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

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

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

1. 待解决问题

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


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


1.jpg
图一 染色图示意

实现步骤:


  • 获取 Renderers

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


  • 替换 Material 及颜色



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

  • 渲染截屏



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

  • 统计像素

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



  • 统计模型及材质信息

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

3.jpg

2.jpg

图二 输出统计信息


3. 细节优化


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


  • 知乎@半匪君子




跟我念“站长妹纸萌萌哒!”我说站长,你说YO!爱你们么么哒~
回复

使用道具 举报

6蛮牛粉丝
1199/1500
排名
2330
昨日变化
1

10

主题

183

帖子

1199

积分

Rank: 6Rank: 6Rank: 6

UID
252607
好友
5
蛮牛币
3112
威望
0
注册时间
2017-11-5
在线时间
420 小时
最后登录
2018-11-17
发表于 2018-11-2 16:54:34 | 显示全部楼层
[发帖际遇]: RyeCat 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

7日久生情
2226/5000
排名
2698
昨日变化
12

1

主题

1430

帖子

2226

积分

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

UID
119154
好友
0
蛮牛币
2430
威望
0
注册时间
2015-8-21
在线时间
281 小时
最后登录
2018-11-18
发表于 2018-11-4 13:39:26 | 显示全部楼层
谢谢楼主大大。

回复

使用道具 举报

4四处流浪
420/500
排名
18164
昨日变化
3

0

主题

209

帖子

420

积分

Rank: 4

UID
220417
好友
0
蛮牛币
131
威望
0
注册时间
2017-5-3
在线时间
179 小时
最后登录
2018-11-14
发表于 2018-11-7 10:33:19 | 显示全部楼层
谢谢分享谢谢分享

回复 支持 反对

使用道具 举报

3偶尔光临
150/300
排名
14780
昨日变化
1

0

主题

55

帖子

150

积分

Rank: 3Rank: 3Rank: 3

UID
269725
好友
0
蛮牛币
234
威望
0
注册时间
2018-2-27
在线时间
45 小时
最后登录
2018-11-17
发表于 7 天前 | 显示全部楼层
感谢楼主分享

回复

使用道具 举报

排名
28039
昨日变化
6

1

主题

14

帖子

47

积分

Rank: 1

UID
275840
好友
0
蛮牛币
166
威望
0
注册时间
2018-4-6
在线时间
20 小时
最后登录
2018-11-18
发表于 4 天前 | 显示全部楼层
哇塞 好厉害的样子
[发帖际遇]: 13930292545 捡了钱没交公 蛮牛币 降了 3 . 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

3偶尔光临
222/300
排名
11264
昨日变化
2

0

主题

50

帖子

222

积分

Rank: 3Rank: 3Rank: 3

UID
164231
好友
0
蛮牛币
13
威望
0
注册时间
2016-8-25
在线时间
88 小时
最后登录
2018-11-17
发表于 3 天前 | 显示全部楼层
66666666666666666666666666666
[发帖际遇]: fjq168 被钱袋砸中进医院,看病花了 2 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表