死神并不是全能的神,他也有自己的烦恼。比如说——自己使命的意义。
除了满足二维平面输出对坐标变换的要求之外,Rasterizer(光栅化)最大的意义,便在于减轻流水线后续的无效渲染的压力。事实上死神每次挥舞镰刀时,支撑它的除了使命感所带来的麻木的平静之外,就只剩下这个了。但现在,死神开始怀疑自己是不是真的可以为后续单元的工作大幅减轻压力了。
Z轴闭塞检查
光栅化操作,是发生在模型完全建立,并且完成基本光照及蒙皮纹理之后的操作环节。由于透视固有的视线前后遮蔽问题,建立好的模型存在很多看不到的部分,光栅化过程对Z值得判断,可以将这些看不到的部分剔除掉,表面上看,极大的减轻了后续的渲染压力。
光照纹理操作
死神是清醒的,他注意到了一个细节——光栅化操作,是发生在模型完全建立,并且完成基本光照及蒙皮纹理之后的操作环节。
完成基本光照的图形
由于缺乏足够有效的流水线前Z检查手段,Z-culling无法有效减轻无效光照操作负担的问题,已经成了困扰整个光栅化过程的最大难题。光栅化操作确实可以有效的提升后续的大部分纹理和像素操作的有效率,但对于闭塞Z光照的问题,Rasterizer本身似乎还无能为力,后续的流水线单元依旧承受着极大地无效光照操作的负担。以生命为代价来达成的目的最终无法完美的实现,这让死神颇有些耿耿于怀。
Deferred Shading过程
好在人们也意识到了问题的存在。为了解决无效光照操作的问题,Deferred Shading技术出现了,它将光照操作的步骤直接转移到整个流水线后端的MRT(多目标渲染)里。虽然这还不能从根本上彻底消灭无效渲染,而且Deferred Shading本身还有诸如运算要求极高等许多问题有待解决,但随着技术的进步以及DX11中引入的Compute Shader所提供的运算能力的助益,Deferred Shading已经开始越来越多的发挥自己重要的作用了。
由Deferred Shading实现的1000光源效果
望着新加入的伙伴,死神释然了。再一次找到自己使命的意义,让他能够更加平静的去面对世界的毁灭以及生命的消逝,因为他知道,自己这么做是有意义的。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博