上一节从项目的目录结构和示例场景的内容分析了UPR渲染管线项目的基本组成。接下来分析了URP的主要机制,并将它们与内置的前向渲染管道进行了比较,以比较它们的差异。按照顺序,本节首先分析URP渲染管线的相机策略。
1:URP渲染管线重新定义相机
与内置的前向渲染管线相比,UPR 渲染管线首先重新定义了相机策略。下面我们来看看相机机制相对于前向渲染管线的核心变化(为了更好的显示,我把URP的相机属性面板做成了两行并放大了),如图1.2-1和1.2- 2比较:
(图1.2-1)URP渲染管线相机面板参数,从左到右,从上到小
(图1.2-2)URP渲染管线相机面板参数,从左到右,从上到小
对比上图unity 摄像机视野范围,我们发现UPR摄像头明显多于前向渲染管线。同时进行了分类,使整个配置的属性更加清晰。我们先来解释一下相机的几个核心变化:
(1) Multi-Camera 共存机制:取消了前向渲染管线中的每个Camera 完全相同,基于Depth 确定绘制顺序,而不是基于base-overlay 模式的Camera 共存机制。在URP中,它由一个基础相机和N个叠加相机组成。叠加相机放置在基础相机的堆栈列表中橙光游戏,叠加相机按照列表中的顺序绘制,渲染性能更好。
(2)Camera后处理机制:上一节分析了URP示例场景中的Post-process Volume节点单独取出进行后处理控制,分为全局和局部,一个bool类型的属性配置“Post -process”在相机上提供。, 配置后处理是否有效。前向渲染管线的内置摄像头没有考虑这样的机制,允许开发者通过脚本实现后处理,接口重载。
(3) 抗锯齿算法:URP渲染管线提供可选的FXAA和SMAA,内置正向渲染管线提供抗锯齿算法如MXAA。
(4) 其他渲染控件更加灵活:比如URP引入了是否渲染阴影的开关。与内置渲染管线相比,阴影控制更加灵活。阴影可以在低端机上关闭,在高端机上开启unity 摄像机视野范围,比较适合手游开发。.
…
仍然有一些非常不同的地方。建议大家对比分析一下Camera的属性面板。
2 如何基于URP渲染管线实现多摄像头
如何在一个场景中使用多个相机,首先我们创建一个基础相机。base camera就是将Camera组件上的Render Type设置为Base。如图1.2-3所示:
(图 1.2-3)URP Base 摄像头配置
首先绘制Base相机,场景中只有一个Base相机有效。如果要多台相机共存,我们需要创建一个Overlay模式的相机(可以添加组件或者复制其他相机)并添加到Base Camera Stack List中,在相机上添加这个Overlay模式。这样就渲染出了多机位效果,如图1.2-4、1.2-5所示:
(图 1.2-4)创建叠加相机
(图1.2-5)将创建好的Overlay camera放入Base camera的Stack
最后游戏策划,多机位的绘图画面就可以出现在屏幕上了。如图1.2-6所示:
(图1.2-6)URP多机共存
最后,更多的相机属性参数、相关功能和使用说明可以看Camera组件下的脚本组件“通用附加相机”的代码,可以对URP的Camera组件有更深入的了解。