POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 37377|回复: 63

我也说说TBDR与Deferred Shading

[复制链接]
发表于 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待续

 楼主| 发表于 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比较鸡肋。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-10 18:20 | 显示全部楼层
huangpobu 发表于 2013-1-10 16:03
将来的rendering architecture想要实现cinamatic级别的画质,必然不同于现在。通用计算能力要更强,架构也 ...

开普勒其实并不是一个成功的架构35亿晶体管的GK104战胜30亿晶体管的GTX580更多的是靠超强的TMU和ROP。

由于GTE效能不济,3倍的SP米有换来应有的性能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-10 20:11 来自手机 | 显示全部楼层
huangpobu 发表于 2013-1-10 19:54
"手机平板是消费电子,消费电子的吸引力不是靠的芯片有多牛逼,运算速度有多快,而是看应用体验和服务。" ...

我想说:这么比较没什么参考意义.........
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-10 20:36 来自手机 | 显示全部楼层
huangpobu 发表于 2013-1-10 20:11
我也这样想,我很早就说了奔驰车和载重卡车没办法比较什么的。如果不是咄咄相逼,我懒得去比。

我觉得tbdr和功耗没必然联系,而且我又觉得按照目前的势头,不出3年手机领域也不用tbr了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-10 21:26 来自手机 | 显示全部楼层
huangpobu 发表于 2013-1-10 21:16
你不是认为TBDR可能导致访内存更多么?如果访内存更多而不是cache就是一个功耗上的劣势。

我看了一下S ...

额,我觉得你看问题极端了。

tbr本身会产生额外的运算和访存,但是如果能奸杀渲染运算的话也不会额外的费电。再说sram工作起来也不省电阿。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-10 21:39 来自手机 | 显示全部楼层
huangpobu 发表于 2013-1-10 21:31
SRAM当然不是省油的灯,但是也可以通过很多手段优化,比如我说的way-predicted,一下子砍个70%功耗。(当 ...

不过看目前的移动gpu发展速度,Tbr出局只是时间问题了,而且不会很久
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-10 21:52 来自手机 | 显示全部楼层
eDRAM 发表于 2013-1-10 21:22
应该不是GTE效能不济吧~~主要是GK104流处理器的频率太低了 GTX580的流处理器主频都跑到1.6Ghz以上的 GK10 ...

各种因素都有,但是频率是开普勒省电的关键。提频之后也没法消灭580 tri ski
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 08:08

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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