RenderObject
RenderObject是什么
前面讲到过在URP渲染管线下,可以对自定义管线的渲染配置文件添加一些RendererFeatures来实现对渲染管线的修改(见之前的博客URP屏幕后处理)。扩展RendererFeatures是需要我们写代码来实现的,那有没有更简单不需要写代码就能实现管线自定义呢?有,那就是RenderObject。
从上图可以看到,RenderObjects可以针对不同的物体在不同的阶段进行渲染。
Event | 什么阶段进行渲染 |
Queue | 渲染对象是否是透明物体 |
LayerMask | 渲染对象所在层级 |
Light Mode Tags | 调用Shader的光照模型标签 |
Material | 指定的材质 |
Depth | 通过深度指定渲染对象 |
Stencil | 通过模板指定渲染对象 |
Camera | 通过相机指定渲染对象 |
在Built-in管线下,想要修改物体的渲染时机只有通过修改材质的RenderQueue等级,或者添加新的Pass通道(会打断合批),不仅修改权限较小,而且还有性能浪费。现在在URP下,我们通过增加RenderObjects就可以轻易的实现管线的自定义渲染顺序。