How to make mesh-render mode particles fade out?

I have a particle system that is emitting chunks of rock. These are of course are meshes, using the mesh rendering mode under particle settings, and use a mobile diffuse for performance.

These rocks land on the ground- but then dissappear instantly when they hit the end of their lifetime. I would prefer for them to fade out instead.

The alpha option in color over lifetime doesn’t work, because they are being shaded by a mobile shader and not just the color over lifetime thing in the particle window. Does anyone know of a method to make them fade out?

You need to use a shader that supports Vertex Coloring. Then the shuriken colors will apply to the particle meshes. I think there’s a vertex-colored diffuse shader, but not sure if there’s one for mobile. You might need to look at both and combine the code to make one that works well for mobile.

So there is a difference between the alpha value defined by “Color over Time” and the alpha a shader is defining. “Color over time” in Unity’s particle system sets the values for a vertex. What you want is to take that vertex alpha and apply it in the shader (as the shader ultimately defines the color/alpha). Here is some example code describing what to do and not do:

struct Input {
    ​float4 vertexColor : COLOR; //vertex color set by Color over Lifetime
};

void surf (Input IN, inout SurfaceOutput o) {
    //o.Alpha = _Color.a;   // This will not make the particle's alpha appear to change when rendered
    ​o.Alpha = IN.vertexColor.a; // This will
}

There is other shader code missing here but the point is you have to get the alpha from the vertex being updated by the particle system and apply it in the shader.