Tiled Based Deferred Shading与Forward+
Tiled Based流程
1.将屏幕分成小块,每个小块为一个视锥体
2,(depth bounds)在每一个视锥体中,根据ZBuffer得到每个Tile的MinZ和MaxZ,用MinZ到MaxZ这片区域对光做交点测试(使用compute shader)
因此不需要光体积,点光源只需要position和range,spotlight也用球来做剔除bound
3.(light culling)剔除后,每个Tile里面的光的index写入list,得到tile个光源index的list
4.之后进行color pass
Depth Bounds
在每个tile的视锥体里取得maxZ和minZ,需要用到compute shader
每次采样多个深度比一个要节省时间( Parallel Reduction)
Light Culling
Advancements in Tiled-Based Compute Rendering里面介绍了两种剔除方法,一种是视锥体剔除,一种是AABB剔除,AABB剔除结果好一些
短视锥体AABB精度更高
在深度不连续( Depth Discontinuities)也就是minZMaxZ相距太远导致中间有很多没有照到物体的光源,一般会出现在物体边缘部分(最坏情况是物体边界到farplane),如果计算会浪费,需要被剔除掉,剔除方法文中介绍有2.5D Culling,和halfZ,还有改良halfZ
2.5D Culling
缺点:
先进行上面的lightculling,将视锥体外的光剔除
将minZmaxZ构造的depth bounds分成32份,每份里进行1+light个 Depth mask & Depth mask
之所以是32份是因为用一个32bit的Depth mask
首先把物体写入一个Depth mask,32块,如果有一块里包含物体,就为1否则为0
再对每个光写入Depth mask,与物体的Depth mask进行&操作,这样就知道光是否照到物体,而且知道照到哪块物体了,,可以剔除掉中间没有用的光源了
优化与测试
得出结论改良HalfZ和AABB是最性能最好的
并且可以把块变小,用16x16与32x32作对比,32x32虽然会增加colornpass消耗,但是会减少culling时间,整体还是比16x16时间短
Tiled Based Deferred Shading
Tiled Based Deferred Shading流程
1.生成GBuffer
2.将GBuffer分tile,每个tile用cs计算出depth bound
3.进行light cull,得到light index list
4.color pass,使用GBuffer信息,用该fragment所在tile的light index list进行绘制
TBDS好处
传统Deferred每一个光照要绘制整个光照体积,光源多了也很消耗,
TBDS通过分块与光源进行求交测试,不需要像传统Deferred一样绘制光体积还要深度测试和stencil pass了
Forward+
Forward+流程
1.ZPrePass(为了获取深度进行depth bound,但是ZPrePass也会辅助硬件进行earlyZ)
2.将ZBuffer分tile,每个tile用cs计算出depth bound
3. 进行light cull,得到light index list
4.同forward一样,。每个物体走FS,用该fragment所在tile的light index list进行绘制
Forward+好处
可以用多个光源,不必再多一个光源就要全部绘制一遍,在光源照不到的部分就不需要绘制
需要ZPrePass来提前生成ZBuffer,比Deferred带宽要少,
Forward+比传统Deferred要快
详细性能分析请看龚大这篇文章
参考:
1. Forward+: Bringing DeferredLighting to the Next Level
2. A 2.5D Culling for Forward+
3. Advancements in Tiled-Based Compute Rendering
4.Forward框架的逆袭:解析Forward+渲染
----by wolf96 2019/1/1
Clustered Shading
TBS只解决了不透明物体的光照问题,因为半透明物体不写入深度,如果有半透明物体在bound前面,就无法绘制其光照
这样的话需要用Clustered Shading来解决透明物体的光照问题
Clustered Shading也有一个好处是不需要ZprePass
Clustered Deferred Shading流程
1.生成GBuffer
2.将GBuffer分cluster/slice
3.分配光照给每个cluster,得到light index list
4.color pass,使用GBuffer信息,用该fragment所在cluster(通过world pos来获取是哪个cluster)的light index list进行绘制
参考:
1.http://www.cse.chalmers.se/~uffe/clustered_shading_preprint.pdf
2.http://www.diva-portal.org/smash/get/diva2:839812/FULLTEXT02.pdf
---- Add by wolf96 2019/2/19
Tiled Based Deferred Shading与Forward+相关推荐
- Directx11进阶教程之Tiled Based Deffered Shading
前言 很多游戏中存在大量的点光源(PointLight),环境艺术家为了让游戏模拟现实的氛围,一个场景下放下上千个点光源(PointLight)毫不奇怪. 下面介绍下传统的渲染管线大量点光源的表现. ...
- Tile based Rendering 二 tbr and tbdr 优化建议tiled based deferred rendering
http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-TileBasedArchitectures.pdf tbr 和tbdr ...
- Directx11进阶教程之Cluster Based Deffered Shading
前言 很多游戏中存在大量的点光源(PointLight),环境艺术家为了让游戏模拟现实的氛围,一个场景下放下上千个点光源(PointLight)毫不奇怪. 在上一章中 Directx11进阶教程之T ...
- Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)
Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置: http://blog.csdn.ne ...
- Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】
Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置: http://blog.csdn.ne ...
- OpenGL 延迟着色法Deferred Shading
OpenGL 延迟着色法Deferred Shading 延迟着色法Deferred Shading简介 G缓冲 延迟光照处理阶段 结合延迟渲染与正向渲染 更多的光源 计算一个光源的体积或半径 真正使 ...
- Learn OpenGL 笔记6.9 Deferred Shading(延迟着色)
到目前为止,我们进行照明的方式称为forward rendering前向渲染或forward shading前向着色.我们渲染对象,根据场景中的所有光源对其进行照明.我们为场景中的每个对象分别为每个对 ...
- Deferred Shading VS Deferred Lighting
鉴于传统的Forward Rendering对于多光源渲染时的低效问题,各种Deferred Rendering的方法被提出并且广泛使用.比如Deferred Shading以及其之后的Deferre ...
- Deferred Shading
Deferred Shading 到目前为止,本书中所使用的渲染方法都是forward rendering,本质上来说是指独立渲染场景中的每一个objects,对于每一个object都要使用light ...
最新文章
- Spring Cloud(五)断路器监控(Hystrix Dashboard)
- vue 分模块打包 脚手架_vue-cli分模块独立打包
- 网站设计师必备50教程
- mysql隔离级别 举例_mysql的事务隔离级别举例
- 剑指Offer面试题:4.从尾到头打印链表
- 黄金连分数(java大法好)
- 算法练习一:求最小公倍数
- ajax上传图片的本质
- Anaconda中使用图形化界面创建虚拟环境
- HTML5 — 知识总结篇《V》【a元素】
- C语言贪吃蛇用VC2022
- java sybase 驱动_Java连接Sybase数据库
- H264三种码率控制方法(CBR, VBR, CVBR)
- php元换成万元,元换算成万元公式(元换算成万元换算器)
- GO Web编程---网上书店(1)
- SEP12.1.2现在支持自动卸载其他某些杀毒软件
- 被企业微信吓到了吗?离做到极致还早
- BNET创始人刘建军:BNET破解当今通信网络三大痛点
- 淘宝拼多多都在卖 iPhone,苹果为什么还继续开店?
- 弄了一整天,终于把打印自定义纸张大小搞定了(上)--IT man