1.Pass简介
2.Tags之LightMode
3.渲染状态
1.Pass简介
在URP中, Pass的执行顺序并不是严格按照Shader中编写的Pass顺序, 而是由URP管线根据每个Pass的LightMode Tag来调度
执行; URP管线在渲染过程中会定义多个渲染阶段(例如: 前向渲染、阴影投射、深度预处理等), 每个阶段会收集所有Shader
中具有对应LightMode的Pass, 然后按照URP内部定义的顺序执行
2.Tags之LightMode
a.UniversalForward
这是URP的主通道, 用于渲染所有受到光照影响的物体
b.SRPDefaultUnlit
用于渲染不受光照影响的物体
c.ShadowCaster
用于渲染物体到阴影贴图中, 当物体需要投射阴影时, URP会调用这个Pass来生成阴影信息
d.DepthOnly
用于渲染物体的深度信息到深度纹理(_CameraDepthTexture)
e.Universal2D
用于URP的2D渲染器(Render 2D)
3.渲染状态
1).渲染剔除
a.Cull Back 剔除背面, 默认的方式
b.Cull Front 剔除正面
c.Cull Off 不剔除
2).ZTest 深度测试
a.Less
当前片元的深度值小于深度缓冲中的值时通过测试(默认值)
b.Greater
当前片元的深度值大于深度缓冲中的值时通过测试
c.LEqual
当前片元的深度值小于或等于深度缓冲中的值时通过测试
d.GEqual
当前片元的深度值大于或等于深度缓冲中的值时通过测试
e.Equal
当前片元的深度值等于深度缓冲中的值时通过测试
f.NotEqual
当前片元的深度值不等于深度缓冲中的值时通过测试
g.Always
始终通过深度测试
3).ZWrite 深度写入是否打开
a.On 开启深度写入
b.Off 关闭深度写入
注: "UPR渲染管线中, 天空盒一般是在不透明物体之后渲染的"

4).Blend
渲染状态中的Blend(混合)用于控制如何将"当前片元的颜色与已有颜色缓冲中的颜色进行混合"
在URP(Universal Render Pipeline)中, 默认的混合状态通常是不混合("即Blend Off")
a.语法

b.混合因子


c.常见的使用混合情况
- 半透明物体 "Blend SrcAlpha OneMinusSrcAlpha"
如玻璃、水、烟雾等,需要将当前片元的颜色与背景颜色混合, 以产生透过物体看到后面的效果; 通常使用
- 加法混合(Additive Blending) "Blend One One"
常用于光晕、粒子效果等, 这种混合模式会让颜色相加, 使得颜色变亮
- 乘法混合(Multiplicative Blending) "Blend DstColor Zero 或 Blend Zero SrcColor"
用于暗化或阴影效果
- 预乘Alpha(Premultiplied Alpha) "Blend One OneMinusSrcAlpha"
用于处理已经乘以Alpha的纹理, 可以避免边缘黑边
