随着Unity3D 2018的面世,Scriptable Rendering Pipeline,也就是可编程渲染管线这项新技术变得家喻户晓。官方在推出这项技术的时候,着重强调了他的各种优点,而笔者总结了一下官方的解释,认为SRP有以下三个优点:简单,简单和简单。
这第一个简单,笔者认为,SRP的诞生大大降低了萌新学习渲染管线的难度曲线斜率。如果使用OpenGL或DirectX,学习C/C++和底层API调用还是小事,可若要编写完整的渲染管线,一些对老鸟来说都很有挑战性的工作就赤裸裸的摆在了萌新们的面前,比如各种剔除,LOD,排序的实现并将其并行化,以利用尽可能多的CPU核心,同时还要注意一些十分繁琐的事情,比如数据结构的时间复杂度,对CPU缓存的友好程度等等。因此,从零开发一款游戏引擎的渲染管线是极难的,这也是为什么当前市场对于引擎工程师的要求是非常苛刻的。而SRP的出现对萌新们来说是一个福音,将繁琐的过程进行高级封装,在学习的过程中可以由浅入深,由零化整,不至于在某个或某些细节上卡太久。我们完全可以在了解了整个绘制过程之后,再考虑学习图形API以了解每个Unity中的调用分别是如何实现的。
第二个简单,笔者认为,SRP的诞生同时也降低了老司机们的工作难度。在当前市场人才稀缺的情况下,老司机们常需要作为“巨神阿特拉斯”扛起开发的整片天,一般来讲工作压力大且开发节奏飞快。本人虽不算老司机,但也有幸在国内某大厂的技术美术岗上“体验”过一把一人当两人用的工作节奏。本来在快乐的写些小工具,做些测试,这时,对面的美术和策划一拍即合,强行达成共识,并且用邪魅的眼神朝引擎组或TA组几个可怜蛋们看了一眼,并且提出了一个一定要魔改渲染管线才可以实现的图形效果需求。如果是Unreal Engine的项目,可能这几周就得花时间在改源码编译引擎上了,而如果是Unity的项目,怕是要用Graphics, GL, CommandBuffer这些触碰底层的API强行给当前的管线加料,有时候甚至要把一些官方的实现绕开,而渲染管线这种底层功能又会涉及到一些与项目组其他同事的合作问题……唔。。不说能否实现,数星期之后老司机们的肝是否还健在这都是个问题。而SRP的出现则确实的解决了这个痛点,通过一些如Culling,DrawPass这样的封装,让管线编程像搭积木一样,三言两语就实现完毕,把繁杂的,重复性高的活留给引擎,把关键的,决定性的和影响项目效果的把握在自己手里,这是SRP的另一个设计目的。