● 谁将光赐予我们?
作为寒霜2引擎制作的出发点和重点照顾对象,PC平台获得了最为完美和丰富的寒霜2引擎特性支持。PC平台的DirectX 11硬件可以很好的满足寒霜2引擎的光照系统需求,尤其是Deferred Shading的需求,因为DirectX 11中引入了重要的shader模式——Compute Shader。
寒霜2引擎广泛采用了Compute Shader来加速光照操作
Compute Shader与传统shader最大的不同在于几何关联性的问题。传统shader必须对应某种几何过程,比如Vertex、Texture或者Z-buffer,这样做的好处在于可以在图形过程中将shader自动对应到操作上,但坏处也是显而易见的——所有程序员,不管你是搞理论物理的眼镜轮椅男还是写算数函数的图形门外汉,要想利用传统GPU的通用计算性能都必须要掌握GLSL和HLSL,了解图形处理过程以及整个图形流水线的特点,甚至还可能要跑去学点fortran什么的这让程序员们对硬件运算能力的使用变得非常困难。于是在DirectX 11中,微软彻底取消了Compute Shader与几何过程的关联。
取消了几何关联性的Compute Shader是史上第一个完全开放的数学指令型shader,Compute Shader可以透过树结构和延迟操作快速执行任意过程,实现跨指令的数据共享等诸多功能。同时Compute Shader还可以利用自己数学代码的身份,在不干扰图形过程执行的前提下方便而且随意的插入图形处理中任何一个需要数学运算的过程。
使用Compute Shader加速Deferred Shading
当寒霜2引擎在PC平台上被执行时,Compute Shader可以很方便的直接插入到常规的载入操作之后,Pixel Shader指令除了多了一段数学代码之外没有任何变化,执行所需的PASS也基本上不变。在处理完前面的G buffer LOAD以及Z/Depth LOAD之后,硬件透过Compute Shader代码直接开始运算场景中每个光源背后所导致的数学运算,甚至连光照模型的二维化都可以通过Compute Shader来进行。透过Compute Shader带来的运算能力的方便调用,PC平台拥有强大运算能力的GPU处理Deferred shading的效率暴增至原来的几十甚至数百倍,能够面对的总光源数被快速的放大,这所带来的直接结果就是场景中同时出现光源数量的激增。
由于光源多的用不完,可以大胆使用颗粒光照的战地3爆炸效果极其出色
根据DICE官方的数据,寒霜2引擎在支持DirectX 11的PC平台上最多可以实现超过2000个光源的复杂光照体系,如此数量的光源甚至已经多到无需再考虑复杂的慢散反折射路径及由此产生的次生光源,只需要直接在光线与物体交互并可能生成次生光源的地方直接添加新的广元即可,其所能够实现的特效极其惊人。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博