unity 自定义渲染管线

 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新建我们的二进制文件, 在渲染设置中成我们的二进制文件

unity 自定义渲染管线_第1张图片unity 自定义渲染管线_第2张图片

 

3.Custom Render Pipeline

新建一个我们自定义的类,继承RenderPipeline,重写Render方法,该方法是主要的自定义渲染方法,在2019版本中,unity附加了调用渲染的一系列API。

在Render方法中,第一个参数类型为ScriptableRenderContext,是渲染过程中的一个管理器,第二个参数是所有的摄像机,包括Scene视图下的摄像机。

所有的自定义渲染命令都是通过CommandBuffer对象来缓存,然后集中给ScriptableRenderContext提交。

渲染命令包括 1.设置渲染目标 2.绘制天空盒子 3.执行裁剪过程 4.执行过滤过程 5.绘制场景准备 6.执行管线

unity 自定义渲染管线_第3张图片

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在自定义渲染下无法使用除非自己添加支持原生的渲染管线

你可能感兴趣的:(unity,unity)