如何让手游更省带宽,耗电量更少?TBR渲染架构解析!

如何让手游更省带宽,耗电量更少?渲染或是其中一个可突破的点。本文中,腾讯游戏学院专家Hailong将从为大家解析TBR渲染架构的特点。

什么是TBR?

全称是Tile Based Rendering,主要用在移动设备(手机、平板)上的一种渲染架构,渲染时将屏幕分割成小块,分别渲染。每块大小为16×16 或32×32等(不同产品各不相同),特点是省带宽,耗电小。

与之对应的是IMR(Immediate Mode Rendering),提交的每个渲染要求都会立即开始,这是一种简单而又粗暴的思路,优点缺点都非常明显,如果不用为性能担忧,这种方式会很省事。

片上缓存(On-Chip Buffer)

TBR设备在GPU内部集成有很小的片上缓存(On-Chip Buffer),片上缓存,在渲染时会先将一个Tile内的图像先渲染到片上缓存,然后在拷贝到主显存中。而IMR渲染则是直接由GPU操作显存。片上缓存相比于显存中的Frame Buffer具有更快的访问速度,但是只有很小的存储空间(16×16像素或32×32像素)。

与IMR相比,TBR在GPU上多出一块片上缓存。

IMR与TBR在渲染流程上的对比(红色阴影表示带宽消耗热点)

由上图可以看出,IMR和TBR在带宽消耗上有比较大的差异,左侧的IMR渲染时,Depth Test和Alpha Test等由于需要频繁访问显存,导致有很大的带宽消耗。而右侧的TBR渲染方式由于Depth Test和Alpha Test都只需要跟片上缓存交互即可,避免了和显存之间的带宽消耗。

Tiling(分块)

为了能够按照逐个Tile渲染,在一帧的绘图指令全部提交完成并经过顶点运算后后,会在记录下每个Tile中对应的Triangle List。并保存在FrameBuffer中,等待光栅化时从FrameBuffer读取相应的Tile的TriangleList进行处理。

Resove和Restore

由于GPU的片上缓存的存储空间非常有限,因此渲染完成一个Tile之后,需要将结果复制到FrameBuffer中,这个过程称作Resove。

如果一帧内需要多遍渲染时,在对Tile进行渲染的时候往往需要从FrameBuffer中将对应Tile中旧的数据读取到片上缓存,这个过程称为Restore。

Resove和Restore会导致大量的带宽消耗,需要尽量避免。

如果在渲染过程中需要频繁的切换FrameBuffer,要注意调用顺序,避免浪费带宽。

会导致Resove+Restore的OpenGL ES调用。

eglSwapBuffers

glBindFramebuffer

glTexImage2D,glTexSubImage2D,

glBufferData,glBufferSubData

glCopyTexImage2D ,glCopyTexSubImage2

glReadPixels()

(参考:Adreno_Developer_Guide.pdf第38页)

实例:为什么在Unity中使用Grap Pass实现屏幕扭曲非常慢?

由于Unity中的Grap Pass是插在渲染过程中的,每渲染一次,会调用一次glBufferSubData,会导致Resorve和Restore。

可能做的优化:

等场景全部渲染完之后再在最上层叠加一个扭曲效果。

跟其他后处理合并处理。

实例:关于后处理

每个后处理会导至少增加一次Resorve。

可能的优化:

将多种后处理效果放在一个shader中可以减少Resove发生次数。

某些效果低分辨率可以减少带宽。

实例:实时阴影

Shadow map方式实现的实时阴影,需要首先将摄像机放在光源处,将场景深度渲染到一张纹理上,因此除了draw call的增加外,带宽的增加也很多。

可能的优化:

使用更小的RT。

如果能接受的话,可以尝试镇魔曲中影子的做法,即将主角压扁,用黑色纹理渲出来。

减少带宽消耗的建议

1、减少顶点数和图片尺寸。

2、图片压缩(ETC,ATC,PVRTC等)。

3、除界面外,几乎所有贴图都建议生成Mipmap(减小带宽消耗,增加缓存命中)。

4、尽量减少Resove和Restore,尽量减小RenderTexture的尺寸。

全屏后处理

实时阴影(shadow map)

扭曲

实时反射

5、优化Shader。

使用低精度浮点数

TBR特有的两个OpenGL ES扩展

1、Framebuffer Fetch

允许Shader中直接访问片上缓存中当前的颜色和深度。

可以用来实现高效的Color Grading、高度雾之类。

2、Pixel Local Storage

允许在片上缓存中存储和读取自定义的数据格式,大小为每像素128字节或256字节。

可以用来实现高效的延迟光照渲染(在片上缓存中保存G-Buffer)。

原文地址:https://www.cnblogs.com/dyf214/p/12155789.html

时间: 2024-10-10 01:26:57

如何让手游更省带宽,耗电量更少?TBR渲染架构解析!的相关文章

如何更高效的使用MVP以及官方MVP架构解析

转载请标明出处: http://blog.csdn.net/dantestones/article/details/51445208 Android mvp 架构的自述中我简单的介绍了mvp,以及怎么写mvp.我自己也将mvp运用到了项目中,其实mvp并没有固定的写法,正确的去理解架构的思想,都可以有自己独特的mvp写法.git上也有很多例子,比如google的android-architecture,simple哥的Android 源码设计模式解析与实战中也有mvp的讨论.这里参考了simpl

为测试赋能,腾讯WeTest探索手游AI自动化测试之路

作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处.  WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传统的APP,手游画面纯OPENGL绘制无可识别控件,且界面动画多.随机性大.举个例子,拿新手引导来说,手游中新账号试玩会有一系列的新手引导,当新手引导过程通过之后,后面就不会再出现,但当账号升级到一定等级,又会出现新玩法的新手引导.且手游的版本迭代非常快,平均1-2周就会出一个版本,界面也经常发生变

手游市场竞争激烈,联运趋势明显

如果将2013年比作手游元年的话,经历了2014年的疯狂增长,整个手游已经开始趋于理性,2015年不可避免的进入大面积的洗牌期.现今为止,整个移动互联网市场活跃移动设备已经突破9亿台,市场已从增量市场进入存量市场,人口红利已经消失,手游的进入门槛和开发成本将大幅提高. 1.手游的玩法将更呈多样化 2015年将是手游市场走向更加成熟的一年,市场走向成熟的标志在于细分市场的逐步完善.从14年Q4各类游戏数量占比可以看出,卡牌和休闲益智类游戏虽然占比依旧较高,但与其他类型游戏的差异已不太明显,手游市场

失去风投追棒的手游 靠众筹能翻身吗?

随着智能移动终端兴起,作为移动应用重要分支的手游,已经演变成为全民娱乐狂欢中不可或缺的"硬菜".市场规模.营收/利润.用户基数等早已完爆页游,甚至在某些指标上直逼端游.但近来,很多手游团队.企业却渐渐失去源动力--资金的支持,风险投资越来越难获得.由此,有部分手游团队开始将目标瞄准众筹,只是这能让它们翻身吗? ***!手游渐失风投信赖 以往手游能够凭借高收益的特性,吸引风险投资的注意力,大量热钱的涌入也造就了手游市场的繁荣.但正所谓最强点亦是最弱处,手游的火爆,造成激烈竞争态势.原本出

手游App山寨破解的三宗罪:背后产生灰色的产业链!

2013年手游行业的规模与收入均实现了大幅增长,发展势头强劲.权威数据显示,我国移动游戏市场实际销售收入从2012年的32.4亿猛增到2013年的112.4亿元,同比增长了246.9%,手游用户从2012年的8900万迅速增长到2013年的3.1亿,增长幅度高达248.5%.巨大的用户数和迅猛的用户增长速度正使我国成为手机游戏大国. 然而,在手游高速发展的同时,由于监管.审核等方面存在着漏洞,手机游戏软件被破解后注入恶意代码.盗取用户财产.窃取用户设备信息的现象屡见不鲜.如今,种类繁多的手游Ap

UWA发布 | 2017 Unity手游体检蓝皮书 — ARPG篇

报告目录: 一.ARPG手游总体性能开销分析 二.ARPG手游CPU模块性能开销分析 三.ARPG手游内存模块性能开销分析 四.ARPG手游资源管理分析 五.UWA对于ARPG手游研发团队的建议 一.ARPG手游总体性能开销分析 iOS设备的CPU性能普遍高于Android设备,Android设备的CPU均值主体范围为12.4~66.2 ms,iOS设备的CPU均值主体范围为7.0~57.5 ms. 我们选择了测评次数最多的四款机型来进行统计,这四款机型分别是红米2.红米Note2.华为6Plu

手游App山寨破解的三宗罪:背后已成产业链

2013年手游行业发展势头开始越显强劲,手游开发者的规模与收入均实现了大幅增长.但是,在手游高速发展的同时,由于手游行业的快速的发展,一些问题,例如手游App破解.盗版也日益凸显.手机游戏软件被破解后注入恶意代码.盗取用户财产.窃取用户设备信息的现象屡见不鲜.如今,种类繁多的手游App市场,繁华背后暗藏多重隐患,致使手游App背上了"吸金炸弹"的罪名. <2048>引发的"连锁反应" <2048>是一款现象级的游戏,其在全球的风靡程度甚至超越

【小松教你手游开发】【unity系统模块开发】热更

现在的手游项目如果没个热更新迭代根本跟不上, 特别是像我们项目做mmo的更是需要经常改动代码. 而现在的项目一般会选择用lua的方式实现热更新 不过我们项目由于历史原因没有使用,用的是另外一种方案 在项目里的所有GameObject都不挂脚本(NGUI脚本就通过代码的方式挂上),自己写的脚本都不继承Mono并打成dll,然后通过一个启动脚本去打开这些dll. 不过这样就有个问题,ios不能热更... 不管怎么样,先来讲讲这种方案要怎么做. 首先有两部分,一部分是打包,一部分是解包. 而包又分为资

腾讯首度公开S级手游品质管理方法

引言 在最新的手游市场占有率统计中,腾讯游戏稳稳占据一半江山,目前仍以每月一到两款的速度推出新品,在如此复杂多变.响应要求极高的市场环境下,能持续推出高质量产品并保持高效迭代更新,不得不让人感慨腾讯游戏研发及运营能力的强大.我们都知道,任何一个产品出厂前都应该有个合格的标签,用来证明产品质量要求达标,那么作为游戏上线前的质检员,腾讯游戏质量管理部门是如何快速.有效地完成游戏产品质量检测的呢? 通过本文你将会了解到,腾讯游戏上线前需要做一系列的测试,涵盖前后台性能.安全防护.网络适配.机型兼容.功