1。Unity SRP 即 Unity Scriptable Rendering Pipeline(可编程渲染管线),是Unity 2018的新功能,使开发者可以通过脚本按需构建自己的渲染过程。
自定义渲染管线分为三个部分:
1.Custom Render Pipeline Asset 用来制作渲染管线的二进制文件。
2.Custom Render Pipeline 用来具体渲染的代码脚本
3.Shader 编写自定义渲染管线的着色器脚本
Unity官网:https://unity.com/cn/srp
2.Custom Render Pipeline Asset
新建一个我们自定义的类,继承RenderPipelineAsset,重写CreatePipeline()方法,该方法主要与接下来讲的第二部分关联。
然后在unity新建我们的二进制文件, 在渲染设置中成我们的二进制文件
3.Custom Render Pipeline
新建一个我们自定义的类,继承RenderPipeline,重写Render方法,该方法是主要的自定义渲染方法,在2019版本中,unity附加了调用渲染的一系列API。
在Render方法中,第一个参数类型为ScriptableRenderContext,是渲染过程中的一个管理器,第二个参数是所有的摄像机,包括Scene视图下的摄像机。
所有的自定义渲染命令都是通过CommandBuffer对象来缓存,然后集中给ScriptableRenderContext提交。
渲染命令包括 1.设置渲染目标 2.绘制天空盒子 3.执行裁剪过程 4.执行过滤过程 5.绘制场景准备 6.执行管线
4.Shader
自定义渲染管线的Shader跟之前的没什么不同,只是Shader内的Pass里的Tags中“LightMode”不同,需要自定义名字,然后通过第二部分Render去获得该shader渲染。 不再是unity自定义的正向渲染。这样就跟我们自定义的渲染管线联系了起来。
在Render中可以通过New ShaderPassName(“name”)来获取,通过不同的设置对象也有的通过new ShaderTagId (“name”)来获取。
自定义渲染总结
优点是功能强大,可以用c#控制,可以灵活定义自己的渲染实现更高的效果,媲美UE4渲染
缺点是依赖更新的API。比如很多2019版本unity的渲染API在2018版本就没有。无法与系统原生的渲染 共存,即原生的shader在自定义渲染下无法使用除非自己添加支持原生的渲染管线