先上图:
启示一:
粒子生命周期Color控制的是Vertex Color的值,所以要想让使用这个Shader的粒子能够控制生命周期的颜色,需要使用Vertex Color节点与Color节点和SampleTexture2D节点相乘。
启示二:
节点SceneDepth在Eye选项下是基于视角的原始深度值,也就是基于摄像机空间的位置的Z坐标的绝对值,不是0,1范围内的深度值。ScreenPosition使用Raw选项时,A分量是当前渲染内容的Z坐标的绝对值,由于是粒子系统,该渲染应该是处于透明渲染阶段,如果该像素点深度检测通过,说明A分量小于对应原始深度值,可以根据两者的差值影响该像素的透明值。
启示三:
如果使用Lit形式的ShaderGraph模板,粒子会受到灯光影响,由于粒子总是朝向摄像机,这可能导致从不同的方向观察粒子时亮度明显变化,所以使用了Unlit模板的粒子,这里只让环境光来影响粒子的亮度,本来以为应该使用Ambient节点的Color/Sky输出来与颜色相乘,但是这个Ambient节点不按我的理解输出,总是输出0,根本没法用。谷歌上搜索了一下国外的帖子,有人说Baked GI节点输出的亮度是环境光的亮度,我试了一下,用这个与原色相乘,果然正确!这咋回事呢?有大神给科普一下吧,不胜感激!