ShaderGraph - Default Particle Shader | Unity

unity
shaders
particles

#1

Hi all, i’ve recently started studying particles and shadergraph in unity.
i’m trying to make a default particle shader, trying to achieve the same functions of the Default one, but so i can change the texture and some material options.

I can make it fade out like the base one, but i can’t really make it interact with particle system starting color, color over lifetime and color by speed.

I tried various connection to the emission channel, but no one seems to work.

Thanks for the help!


#2

You currently only send vertex color RED to the emissive. You need to merge/combine the RGB to a vector3 first


#3

Awesome it worked! Thank you!


#4

You shouldn’t be using the PBR Master node for this, you should be using the Unlit Master node. Most of the built-in particle shaders are not lit, and while the LWRP does come with lit particle shaders, the default one is not.

To replicate the default particle shader, it should look more like this:

Though, the LWRP unlit particle shader actually has a bug, and the above graph doesn’t exactly replicate the LWRP\Particles\Unlit shader when set to “Transparent, Alpha, Multiply”. You’d need to multiply the final color by the final alpha, which is totally wrong, so don’t do that.

The default particle texture is also kind of terrible since ideally the RGB should be solid white and the blurry blob shape should only exist in the alpha.


#5

Thank you! Great explanation.
What’s the difference between a PBR shader or an Unlit? the light reflections?


#6

The PBR Master node reacts to lighting, and the surface normal facing will affect this. This means just turning the camera can make lit particles go from being lit by a light and not. Sometimes this might be what you want.

The Unlit Master node ignores all lights in the scene and is only affected by fog.