【Unity】URP渲染管线下代码获取相机的Volume Mask属性

1. 引用URP的命名空间

using UnityEngine.Rendering.Universal;

2. 获取摄像机

这里可以使用公有拖拽或者私有赋值的方式。
如果使用拖拽,则:

public Camera URPCam;

在这里插入图片描述

使用赋值方式,先定义该相机,在Awake时为其赋值(此处以主摄像机为例):

private Camera URPCam;

private void Awake()
{
    
    
	URPCam = Camera.main;
}

3.通过URP扩展获取Volume Mask属性

var volumeMask = URPCam.GetUniversalAdditionalCameraData().volumeLayerMask;

附 层级的相关代码

1.只渲染某一层

volumeMask = 1<<7; //只渲染第七层
volumeMask = 1<<8; //只渲染第八层
volumeMask = (1<<7)+(1<<8); //只渲染第七层和第八层

2.渲染所有层

volumeMask = -1; //对应everything

3.任何层都不渲染

volumeMask = 0; //对应nothing

4.在原来基础上添加某一层

volumeMask |= (1 << 10); //在原来的基础上增加第10层

5.在原来基础上剔除某一层

volumeMask &= ~(1 << 10); //在原来的基础上剔除第10层

6.渲染除某层外的所有层

volumeMask = ~(1 << 10); //渲染除第10层之外的其他所有层

Reference

  1. The Universal Additional Camera Data component
  2. Class UniversalAdditionalCameraData

猜你喜欢

转载自blog.csdn.net/qq_41084756/article/details/128094244