Trying to mod shader to work with particle color over time

Hello,
Preface: I know nothing about shaders.

However, I have this shader that came from an asset pack that I like, but it doesn’t work with the particle color over time module. Some research says that the color must be _Color and it must be a vertex color (whatever that means), I’ve tried to modify the shader to match the examples to no avail, could anyone take a quick peek and let me know what exactly needs to change to get the color over time working? Much appreciated!

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'

Shader "FORGE3D/Billboard Nebula Custom"
{
    Properties
    {
        _CoronaNoise("Texture", 2D) = "black" {} 
        _Color("Color", Color) = (0.5,0.5,0.5,0.5)
        _EdgeMaskFalloff("Edge Mask Falloff", float) = 0
        _EdgeMaskPower("Edge Mask Power", float) = 0
        _MinFadeStart("Min Fade Start", float) = 0
        _MinFadeEnd("Min Fade End", float) = 0
        _MaxFadeStart("Max Fade Start", float) = 0
        _MaxFadeEnd("Max Fade End", float) = 0
    }

    Category
    {
   
       
       
           
        Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
        Blend One One
        AlphaTest Greater .01
        ColorMask RGB
        Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) }
        // Tags { "RenderType"="Opaque" }
        SubShader {   

        // Disable Dynamic Batching
        //Pass{}

        Pass {

            CGPROGRAM
             #pragma vertex vert
            #pragma fragment frag
          //  #pragma only_renderers opengl d3d9 d3d11
            #pragma glsl
         //   #pragma target 3.0
            #pragma multi_compile_particles
            #include "UnityCG.cginc"
           
           

            float4 _Color;

            float _EdgeMaskFalloff, _EdgeMaskPower;
            float _MinFadeStart, _MinFadeEnd;
            float _MaxFadeStart, _MaxFadeEnd;

            sampler2D _CoronaNoise;

       

            struct VertexInput
            {
                float4 vertex : POSITION;
                float3 normal : NORMAL;  
                float2 texcoord0 : TEXCOORD0;
            };

            struct VertexOutput
            {                   
                float4 pos : POSITION;
                float4 posWorld : TEXCOORD0;
                float3 normalDir : TEXCOORD1;             
                float2 uv : TEXCOORD2;  
            };

            VertexOutput vert (VertexInput v)
            {
                VertexOutput o;
                   o.normalDir = mul(float4(v.normal,0), unity_WorldToObject).xyz;              
                o.posWorld = mul(unity_ObjectToWorld, v.vertex);
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uv = v.texcoord0;
       
           
                return o;
            }

        

         


            float4 frag(VertexOutput i) : COLOR
            {
               
                float3 finalColor = tex2D(_CoronaNoise, i.uv.xy);

                float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz); 
                float viewDot = abs(dot(viewDirection, normalize(i.normalDir)));           
                viewDot = pow(viewDot, _EdgeMaskFalloff) * _EdgeMaskPower;
                viewDot = clamp(viewDot, 0 ,1);

                float dist = distance(_WorldSpaceCameraPos.xyz, i.posWorld.xyz);
                float MinFade = saturate((_MinFadeEnd - dist) / (_MinFadeStart -_MinFadeEnd));
                float MaxFade = saturate((_MaxFadeEnd - dist) / (_MaxFadeEnd - _MaxFadeStart));

               
                return float4(saturate(pow(finalColor * viewDot *_Color, 1.3) * 1.5 * MaxFade * MinFade), 1);

            
            }

            ENDCG   
        }
    }    
      
}
}

Your Vertex structs don’t contain any color information. You need to assign the vertex color from the mesh to a variable in your VertexOutput struct and then do something with it in the frag.

_Color is just a color property on your material, it won’t have anything to do with vertex color.