在URP中有两种类型的相机。
1.一个基本相机,最普通的渲染屏幕或者RT。(通用相机,必须要有,可用于后期效果)
2.一种是叠加式相机,可以在一个基本型相机上叠加多个覆盖式相机。(不能单独使用,必须在正向渲染中,不能单独用于后期效果)
叠加相机只能使用如下属性(其他信息也能在代码中操作,但是不会有效果):
- Projection
- FOV Axis
- Field of View
- Physical Camera properties
- Clipping plans
- Renderer
- Clear Depth
- Opaque Texture
- Depth Texture
- Render Shadows
- Culling Mask
- Occlusion Culling
相机列表
当前版本中,2D渲染和VR多通道渲染,暂不支持叠加相机。以后会支持。
基本相机+叠加相机为相机堆栈
相机堆栈的输出,可以用于后期处理等等
合成一个相机堆栈时,URP执行了几个优化,如优化渲染顺序减少overdraw。
不要过多的排序,引起过多的overdraw。
代码操作:
UniversalAdditionalCameraData mainData = Camera.main.GetUniversalAdditionalCameraData();
mainData.renderType = CameraRenderType.Base;
mainData.cameraStack.Add(m_overlay1);
//mainData.cameraStack.Remove(m_overlay1);
界面操作:
多基本相机的多屏幕渲染。
创建多个基本相机,覆盖式相机可以共用于多个基本相机。并通过ViewportRect来设置在屏幕中的位置
RT
这个和以前一样
URP中,摄像机的clear取决于摄像机的渲染类型。
基本相机:
根据背景类型属性,在循环渲染的开始,可以清除它的颜色缓存区到天空盒颜色,一个纯色,或者未初始化的颜色缓冲区。
颜色buff:
注意:未初始化的颜色缓冲区的内容根据平台会有所不同。在某些平台上,有可能来自前一帧的数据,有可能包含未初始化的内存。最好选择一个颜色缓冲区,除非你纠结清除操作带来的成本。
深度buff:
每次循环渲染开始,清除深度缓冲。
覆盖式相机:
颜色buff:
它的颜色来自之前相机列表中这个相机的颜色缓冲区。
深度buff:
这个取决于ClearDepth,如果勾选,则清除深度缓冲区并将颜色绘制到任何现有颜色之上。如果不勾选,则在绘制缓冲区之前对深度进行测试。