涵盖知识点:Depth Fade(软粒子)、粒子顶点着色、粒子消融、 扩展——软粒子消融、深度图、深度写入、透明通道渲染顺序

unity URP 粒子不在模型前_贴图

开启深度写入以及无软粒子(深度渐变)效果如上图,自身遮挡自身情况是开启深度写入导致,粒子与其他物体(地面)造成的切割感是没有实现深度渐变(非软粒子)表现。

关闭深度写入后,自身粒子贴图不会遮挡其他自身粒子贴图了。

unity URP 粒子不在模型前_unity URP 粒子不在模型前_02

假设我们在制作了一个深度写入的粒子(红色骷髅头)我们会看到并不会遮挡住之前深度写入关闭的(白色骷髅头),观察说明只会在自身粒子之间进行遮挡。(透视视角)

我猜测是因为这个红色骷髅头也是透明通道原因,透明物体在Unity里是从后往前渲染的,也就是白色骷髅头肯定不会被红色骷髅头挡住。(除非将红色骷髅头这个粒子着色器改成非透明通道)

unity URP 粒子不在模型前_深度图_03

验证猜测(将红色骷髅头改成非透明通道)会挡住白色骷髅头。

unity URP 粒子不在模型前_ASE_04

 顶点着色如下图,因为粒子系统的Color为顶点着色服务的,所以得出下图,不然你改粒子颜色是无效的。

unity URP 粒子不在模型前_unity URP 粒子不在模型前_05

 软粒子如下图,其实就是Depth Fade的效果,因为自身粒子是会被非粒子深度写入物体遮挡的。 

unity URP 粒子不在模型前_深度图_06

unity URP 粒子不在模型前_贴图_07

额外知识:消融+粒子

unity URP 粒子不在模型前_深度图_08

unity URP 粒子不在模型前_学习_09

unity URP 粒子不在模型前_ASE_10

 (注意要用透明通道 Alpha Blend操作)

 我们需要一个粒子变量去控制Dissolve参数(消融程度),采用了粒子alpha这个参数,只需

unity URP 粒子不在模型前_unity URP 粒子不在模型前_11

unity URP 粒子不在模型前_深度图_12

 

unity URP 粒子不在模型前_学习_13

我们会得到反向的消融(为此要进行一减操作)

unity URP 粒子不在模型前_学习_14

unity URP 粒子不在模型前_ASE_15

正向消融

这里我们还没加上软粒子效果,加上入下表现:

unity URP 粒子不在模型前_深度图_16

unity URP 粒子不在模型前_深度图_17

 软粒子Depth Fade是依托在深度图的,如果有些项目没有开启深度图,那么软粒子效果便会没有