延迟着色渲染路径

原文链接:https://docs.unity3d.com/Manual/RenderTech-DeferredShading.html

        这一篇详细介绍了延迟着色渲染路径。请看维基百科:延迟着色(链接见原网页)来获取技术概况的介绍。


概况

        当使用延迟着色时,对于一个游戏物体可以被多少光照所作用没有限制。所有的光照使用逐像素计算,这意味着它们都可以与法线贴图等相交互。另外,所有光照都可以有缓存和阴影。

        延迟着色具有优势,其处理光照的开销与光照照射到的像素成比例。这取决于场景中光照值的大小,不论它照射了多少个游戏物体。因此,可以通过使光照变小提高性能。延迟着色也是高度一致的和行为可预测的。每个光照的影响都是逐像素计算的,所以没有光照计算会拆分大的三角面。

        劣势方面,延迟着色并不真正支持抗失真,并且也不能处理半透明游戏物体(它们使用正向渲染)。其也不支持网格渲染器接收阴影的标记,并且剔除遮罩仅仅以有限方式支持。您最多只能使用四个剔除遮罩。也就是说您的剔除遮罩层必须至少包含所有的层减去四个任意的层,所以32个层中必须要设置28个层。否则,您会得到图形的假象。


要求

        它需要支持多渲染目标(MRT)的显卡,Shader Model 3.0(或更高版本),并且支持深度渲染纹理。在2006年后生产的大多数PC显卡支持延迟着色,以GeForce 8xxx,Radeon X2400,Intel G45开头。

        在移动平台,延迟着色不被支持,主要是由于使用MRT格式(一些支持MRT的GPU也只是支持非常有限的位计算)。

        请注意:当使用正交投影时不支持延迟着色。如果摄像机的投影模式改成正交,那此摄像机也会退到正向渲染。


性能考虑

        延迟着色的实时光照渲染开销不取决于场景的复杂性,而是与被此光照照射到的像素数量成比例。所以小的点光源或是聚光灯渲染的消耗是非常低的,而且如果它们完全或者部分的被场景中的游戏物体遮挡,那么它们的消耗会更低。

        当然,有阴影的光照比没有阴影的光照性能消耗要高得多。在延迟着色中,投射阴影的游戏物体始终需要被投射阴影的光照渲染一次或更多次。更进一步说,开启阴影的光照shader的渲染开销要比不使用阴影的更高。


实现细节

        有不支持延迟着色shader的物体在延迟着色完成后,使用正向渲染路径。

        几何Buffer(g-buffer)中的渲染目标(RT0-RT4)的默认布局列在了下面。数据类型被放在每个渲染目标的不同通道中。使用的通道显示在圆括号中。

·RT0, ARGB32格式:漫反射颜色(RGB),遮挡(A)。

·RT1, ARGB32格式:高光反射颜色(RGB),粗糙度(A)。

·RT2, ARGB2101010格式:世界空间法线(RGB),未使用(A)。

·RT3, ARGB2101010(非HDR)或ARGBHalf(HDR)格式:自发光+光照+光照贴图+反射探头buffer。

·深度+模板buffer。

        所以默认的g-buffer布局是160位/像素(非HDR)或是192位/像素(HDR)。

        如果混合光照使用阴影遮罩或距离阴影遮罩模式,则要使用第五个目标:

·RT4,ARGB32格式:光照遮挡值(RGBA)。

        那么这样g-buffer布局是160位/像素(非HDR)或是192位/像素(HDR)。

        如果硬件不支持五个并发渲染目标,那么使用阴影遮罩的物体将回退到正向渲染路径。当摄像机不使用HDR时,自发光+光照buffer(RT3)会被对数的编码来提供比通常可能的ARGB32纹理更大的动态范围。

        请注意,当摄像机使用HDR渲染时,没有为自发光+光照buffer(RT3)创建单独的渲染目标。而是把摄像机渲染到的(也就是说,其被传递到图片效果)作为RT3使用。


G-Buffer pass

        G-buffer pass渲染每个游戏物体一次。漫反射和高光颜色,表面平滑,世界空间法线和自发光+环境光+反射+光照贴图被渲染到G-buffer纹理中。G-buffer纹理被设置为全局shader属性以便后面的shader调用(CameraGBufferTexture0 .. CameraGBufferTexture3 名字)。


光照pass

        光照pass基于g-buffer和深度计算光照。光照在屏幕空间中计算,所以其执行花费的时间是基于场景复杂度。光照被添加到自发光buffer。

        不通过摄像机近截面的点光源和直射光作为3D图形来渲染,并进行深度测试来决定是否在场景中启动。这使得部分或完全被遮挡的点光源或直射光渲染的代价非常低。平行光和平通过近截面的点光源和直射光被作为全屏四边形来渲染。

        如果一个光照启用阴影,那么这些阴影也将在这个pass中进行渲染和应用。请注意阴影不是免费的,阴影投射器需要被渲染,并且一个更复杂的光照shader必须被应用。

        唯一可用的光照模型是Standard。如果想用一个不同的模型,您可以更改光照pass shader,通过将修改版本的Internal-DeferredShading.shader文件从内置shader文件夹中放置到Assets文件夹下的Resources文件夹中。然后到Edit->Project Settings->Graphics窗口,选择Deferred下拉框中的Custom Shader。然后选择看起来是您正在使用的shader的shader选项。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容