POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 37790|回复: 63
打印 上一主题 下一主题

我也说说TBDR与Deferred Shading

[复制链接]
跳转到指定楼层
1#
发表于 2013-1-10 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Vendicare 于 2013-1-10 15:46 编辑

看见有人争论PowerVR和G70的优劣,其中扯到了TBDR技术。虽然怎么说都有点关公战秦琼的意思,不过我还是忍不住也来谈谈TBDR和Deferred shading两者的区别和优劣。

Tile-based Deferred Rendering是个很老很老的东西了。借助别人说过100遍的话:

传统的3D显示芯片处理过程是先进行几何运算,然后读取、生成纹理等操作,然后通过深度测试决定像素是否可见,之后将可见像素进行必要的处理后输出到Framebuffer显存上,之后由RAMDAC读取显存经过数模转换输出到显示器上。这个过程中有一大缺点就是无论像素是否可见,都必须经过渲染,这将浪费大量填充率和带宽,这被称为overdraw。

  为了解决这一矛盾,PowerVR的TBR在几何运算后,将屏幕的像素分成了很多矩形小块,先经过每个小块的深度测试,测试小块是否可见决定小块中的像素是否应当被渲染,之后将需要被渲染的再交给渲染管线去处理,之后输出。这样一来,不可见的像素已经提前被剔去不用被渲染,很大程度上节省了带宽,减少了渲染管线的压力。

本质上TBDR就是一种Deferred shading然而TBDR有很多问题。

首先深度测试必须有人来做。不管是显卡还是CPU要想在渲染前检测景深肯定要进行计算,这部分计算的开销要么产生性能损失,要么产生电路开销。而且场景越复杂开销越惊人。(CPU蛋疼)

其次,为了检测像素是否被遮挡,state load非常频繁。而state load不利于访存,如果场景中多边形变多而且互相间关系复杂,TBDR造成的访存需求会成倍上升。带宽这东西绝大多数时间都是珍贵的,所以TBR技术一开始就没能跨过这道门槛。(带宽蛋疼)

TBDR要求需要将模型存进scene buffer里,对于现在游戏场景中随便就几千万个三角形的建模规模,要想保证不发生缓存溢出,基本上必须在显卡上集成个16M的SRAM才差不多有戏。这个晶体管数量随便就干翻HD4000了(夸张的说法,未考证,欢迎踢爆)。(缓存蛋疼)

使用TBDR的时候不能改变PS的Z值,这阻碍了很多光照特效的使用。要想作出好的效果就要不停地Disable buffered shading。编程开发工作量巨大无比。(程序员蛋疼)

最后回到主要矛盾上来,TBDR的主要受益人其实是TMU、其次是PS单元。然而TMU在很久很久以前就已经不是显卡的瓶颈了,统一渲染以后PS单元也可以灵活调配了。更为关键的是nvidia强推的Multi-Pass技术流行,这玩意在桌面领域迅速让TBDR完全没有任何存在的理由。在90年代末期的3D时代中,由于大家还在着力解决温饱问题,TBDR对于简单场景中运算资源的节约还是比较受人欢迎的。一如高粱这种农作物,当人民解决温饱问题后,没有人会再去缅怀高粱。PowerVR退出桌面是历史的选择,随着移动SOC处理能力的激进发展TBDR退出手机领域也只是时间问题。


Deferred Shading待续

2#
发表于 2013-1-10 10:41 | 只看该作者
真打算每天1主题吗?加油~话说昨天那个“沉默倡议”有点水吖……
回复 支持 反对

使用道具 举报

3#
发表于 2013-1-10 14:43 | 只看该作者
本帖最后由 huangpobu 于 2017-3-4 18:15 编辑

zishubuding
回复 支持 反对

使用道具 举报

4#
发表于 2013-1-10 14:57 | 只看该作者
学习一下!没想到当年的PowerVR的技术现在还在讨论。这个技术当年也只提到可以减小显存带宽开销,但是随着计算机图形技术的发展是不是还是那么有用就不知道了。其实从GF3、Radeon开始,NV与ATI各自都有自己的类似技术,大大减少了对显存带宽的依赖。当年最主要的测试是同分辨率下16bit与32bit色深的性能损失情况,以前GF2时代这个差值是很可观的,GF3之后就再也没有专门测试过。
回复 支持 反对

使用道具 举报

5#
发表于 2013-1-10 15:37 | 只看该作者
本帖最后由 66666 于 2013-1-10 15:37 编辑
huangpobu 发表于 2013-1-10 14:43
我说说我的理解,不一定对,大家可以讨论下。

首先的的确确是关公战秦琼,我的帖子第一点第一行加粗的字 ...

你就在那扯淡吧,powerVR是分块渲染,实际上每一块显示区域里面多边形数量都不一样,甚至差异很大(从几千到几十万乃至上百万)。做小很容易溢出,如果从显存总线走的话TBDR的高效率立马破产,做大了晶体管成本大家都知道很昂贵而且也会影响到shader部分占比重。

TBDR作为一个过渡的3D妥协技术在某些场合下确实效率很高,但是跟3D技术发展完全就是背道而驰。
回复 支持 反对

使用道具 举报

6#
发表于 2013-1-10 15:44 | 只看该作者
本帖最后由 huangpobu 于 2017-3-4 18:16 编辑
66666 发表于 2013-1-10 15:37
你就在那扯淡吧,powerVR是分块渲染,实际上每一块显示区域里面多边形数量都不一样,甚至差异很大(从几千 ...

zishubuding
回复 支持 反对

使用道具 举报

7#
发表于 2013-1-10 15:49 | 只看该作者
huangpobu 发表于 2013-1-10 15:44
你就在那扯淡吧,每一个Tile差别很大用得着你说?如果你继续使用这种风格的言辞,我也会毫不客气用同样风 ...

说到底TBDR就是一个低级3D技术阶段的花招而已,3D游戏发展越快TBDR就露陷的越快,别扯什么低功耗,谢谢。
回复 支持 反对

使用道具 举报

8#
发表于 2013-1-10 15:52 | 只看该作者
本帖最后由 huangpobu 于 2013-1-10 15:52 编辑
66666 发表于 2013-1-10 15:49
说到底TBDR就是一个低级3D技术阶段的花招而已,3D游戏发展越快TBDR就露陷的越快,别扯什么低功耗,谢谢。 ...

说到底顺序发射窄前端就是一个低级指令级并行阶段的花招而已,CPU发展越快顺序发射窄前端就露陷越快,别扯什么低功耗,谢谢。


大家全部把Atom给扔了吧。
回复 支持 反对

使用道具 举报

9#
发表于 2013-1-10 15:55 | 只看该作者
huangpobu 发表于 2013-1-10 15:52
说到底顺序发射窄前端就是一个低级指令级并行阶段的花招而已,CPU发展越快顺序发射窄前端就露陷越快,别扯 ...

你说的一点不错,所以intel新一代ATOM又改回了OOOE,IBM的power系列也是如此。

不合乎时代潮流的技术必然会被淘汰
回复 支持 反对

使用道具 举报

10#
发表于 2013-1-10 15:58 | 只看该作者
66666 发表于 2013-1-10 15:55
你说的一点不错,所以intel新一代ATOM又改回了OOOE,IBM的power系列也是如此。

不合乎时代潮流的技术必 ...

不合乎时代潮流的技术必然会淘汰,我无论何时都没有否认过这一点。

我也说了将来的图形渲染几何负载上升,TBDR没有应对办法自然会劣势。

那么您是否觉得从一开始Intel Austin团队就是一群弱智,居然弄顺序发射Atom?
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2013-1-10 16:02 | 只看该作者
本帖最后由 Vendicare 于 2013-1-10 16:03 编辑
huangpobu 发表于 2013-1-10 14:43
我说说我的理解,不一定对,大家可以讨论下。

首先的的确确是关公战秦琼,我的帖子第一点第一行加粗的字 ...

Deffered shading还没写,所以不要以为我打算批TBDR捧延迟渲染哈。中间有事出去忙了,回头再写。

关于缓存的问题,16MB是大了点,这是个理想状态。但是实际上要把TBDR在桌面上很好的用起来,缓存大小和这个没有数量级上的区别。原因如下:

1、TBDR不同于CPU上的缓存,其要为GPU片上数以百计的shader服务。而CPU上纵使现在缓存命中率高达98%、纵使现在的CPU每核心至少也能分到1M的缓存,提高缓存容量依然能够获得明显的性能提升。缓存大了肯定好

2、TBDR过程中多数都是随机访存,缓存替换算法想提高命中率很难

3、如果命中率低到一定程度,那么采用TBDR的速度就会绝对下降了。因为每次Rendering前进行判断的时间将足矣让你完成渲染工作。

-------------总的来说,对于简单的3D模型TBDR是有益的。但是在现今的模型复杂度下,TBDR比较鸡肋。
回复 支持 反对

使用道具 举报

12#
发表于 2013-1-10 16:03 | 只看该作者
本帖最后由 66666 于 2013-1-10 16:04 编辑
huangpobu 发表于 2013-1-10 15:58
不合乎时代潮流的技术必然会淘汰,我无论何时都没有否认过这一点。

我也说了将来的图形渲染几何负载上 ...

你这话深得我心,不错intel之前ATOM设计团队就是弱智,要不然上网本不会死的这么快这么彻底。

再补充一句,全美达也是弱智
回复 支持 反对

使用道具 举报

13#
发表于 2013-1-10 16:03 | 只看该作者
66666 发表于 2013-1-10 15:55
你说的一点不错,所以intel新一代ATOM又改回了OOOE,IBM的power系列也是如此。

不合乎时代潮流的技术必 ...

将来的rendering architecture想要实现cinamatic级别的画质,必然不同于现在。通用计算能力要更强,架构也要大改。

所以我也很想听一听您对不合乎时代潮流的开普勒是如何评价的。

另外借用隔壁帖某仁兄的话,我感觉您似乎完全没有把手持计算设备的图形市场放在眼里,如果您能拿mali或者其他架构来跟PowerVR做同一起跑线的对比,而不是拿奔驰车跟载重卡车比速度,根本没有这么多事情。
回复 支持 反对

使用道具 举报

14#
发表于 2013-1-10 16:09 | 只看该作者
看大有人说G70的功耗

我翻了一下,看到7900GT的功耗,内牛满面啊
http://www.xbitlabs.com/articles ... force7900gtx_6.html
回复 支持 反对

使用道具 举报

15#
发表于 2013-1-10 16:10 | 只看该作者
huangpobu 发表于 2013-1-10 16:03
将来的rendering architecture想要实现cinamatic级别的画质,必然不同于现在。通用计算能力要更强,架构也 ...

现在所有DX11游戏都或多或少的用到Compute Shader,通用计算能力高低看DX11游戏平均成绩就知道开普勒是不是不合潮流。

其次我在刚才那贴里面已经跟你说的很清楚了,我只关系谁实力强谁技术更先进,仅此而已。手持设备市场能卖的出去首先是靠集成度,其次靠价格,最后才是所谓性能功耗。现在手持市场大家包括intel和NV玩的都是主流市场淘汰的玩意,站在一个全是废物的基础上谈真是浪费时间浪费精力。
回复 支持 反对

使用道具 举报

16#
发表于 2013-1-10 16:21 | 只看该作者
Vendicare 发表于 2013-1-10 16:02
Deffered shading还没写,所以不要以为我打算批TBDR捧延迟渲染哈。中间有事出去忙了,回头再写。

关于 ...

唔。

1. 同样的道理也适用于z-cache,texture cache,等等一系列GPU cache. 这些也都要为大规模的shader服务。而且Tile过后局部性肯定有提升,流水线后端的处理会更快。

2. Tile过程中的内存访问模式我不太清楚。针对你主帖说的跨tile的三角形读取多次的问题,在cache加一个标记应该可以多次复用,避免多次访问内存。(这只是一个想法,具体效果如何要做评估才知道)。随机访存的话只要随机跳跃的步长在block size以内也能接受吧?(脑补的)。这些问题其实跟IMR或者DS面临的问题一样,实际工程中会有对应的办法解决或者缓解。

3. 同意。

现在的手机\平板上我认为TBDR是合适的,场景复杂度再上涨就吃亏,看那些厂家如何应对。
回复 支持 反对

使用道具 举报

17#
发表于 2013-1-10 16:23 | 只看该作者
aibo 发表于 2013-1-10 16:09
看大有人说G70的功耗

我翻了一下,看到7900GT的功耗,内牛满面啊

说出来就不好玩了,这种小学等级的计算题居然有人还真不会做
回复 支持 反对

使用道具 举报

18#
发表于 2013-1-10 16:31 | 只看该作者
66666 发表于 2013-1-10 16:10
现在所有DX11游戏都或多或少的用到Compute Shader,通用计算能力高低看DX11游戏平均成绩就知道开普勒是不 ...

争了这么久我已经理解您喜欢高性能、前瞻性的东西。按照定律推算手持市场要发展十年(性能翻6~8倍甚至更多)才能入您的法眼,然而届时我不知道您的眼光是不是又变得更高了。您是做移动图形开发对性能极度不满呢,还是做桌面图形的想找低端的东西秀一下优越感?总之给我的感觉非常不好。

另外手持设备市场我不认为功耗应该排最后。事实上我觉得这些因素都很重要,难以排出放之四海而皆准的座次。
回复 支持 反对

使用道具 举报

19#
发表于 2013-1-10 16:42 | 只看该作者
aibo 发表于 2013-1-10 16:09
看大有人说G70的功耗

我翻了一下,看到7900GT的功耗,内牛满面啊

考虑制程的进步再去除片上电路显存之类的功耗应该会降低很多吧  
回复 支持 反对

使用道具 举报

20#
发表于 2013-1-10 16:52 | 只看该作者
aibo 发表于 2013-1-10 16:09
看大有人说G70的功耗

我翻了一下,看到7900GT的功耗,内牛满面啊

7900GT、7950GT、7900GTX都是完整规格的G71。7800GTX才是G70的。G71的功耗很不错吖……
回复 支持 反对

使用道具 举报

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

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-11-21 17:06

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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