Glow / Bloom Particle Shader [SOLVED]

[SOLVED] The final shader code I used is here: // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT lice - Pastebin.com

Hi everyone,
I’ve got a problem/question about shaders - which is a subject I’m new to. What I basically want to achieve is a glowing particle Shader/Material couple. I tried a couple of things but could not get the exact effect… Below I provide 2 images. The second sample (with white glowing particles) is the exact effect I want which is a shader I acquired from here: ios - Adding bloom (glow) effect to shader (Unity game engine) - Stack Overflow (Stack Overflow link). Both shaders were used on the same particle system with the exact same properties (size, emission, speed etc.)

So what I need is a shader to have the effect on the second sample but also works and looks like the Particle/Additive(Soft) shader.

First sample: Particle/Additive(Soft) shader

93179-sample1.jpg

Second sample: ios - Adding bloom (glow) effect to shader (Unity game engine) - Stack Overflow (the shader in the answer called “Glow”)
93180-sample2.jpg

TL;DR: I need the effect on the second shader to be on the shader 1.

Any help would be greatly appreciated. Thanks in Advance to anyone who would be willing to help :slight_smile:

Just including the original Paricles/Additive(Soft) code for convenience.

The issue with the shader from that Stackoverflow answer is the alpha blending mode “Blend SrcAlpha OneMinusSrcAlpha” which is used in the traditional “particle alpha blended” shader. For “additive” blending result, you change the blend mode to either “Blend One One” or “Blend SrcAlpha One”. Also preferably change “ZWrite On” to “ZWrite Off”. Shader receives color from renderer component via the “COLOR” semantic (all-caps).

The following code is modified from the official Particles/Additive shader, hence the copyright comment in the beginning:

// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)

Shader "Particles/Additive Intensify" {
Properties {
	_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
	_MainTex ("Particle Texture", 2D) = "white" {}
	_InvFade ("Soft Particles Factor", Range(0.01,3.0)) = 1.0
    _Glow ("Intensity", Range(0, 127)) = 1
}

Category {
	Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
	Blend SrcAlpha One
	ColorMask RGB
	Cull Off Lighting Off ZWrite Off
	
	SubShader {
		Pass {
		
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#pragma target 2.0
			#pragma multi_compile_particles
			#pragma multi_compile_fog

			#include "UnityCG.cginc"

			sampler2D _MainTex;
			fixed4 _TintColor;
			half _Glow;
			
			struct appdata_t {
				float4 vertex : POSITION;
				fixed4 color : COLOR;
				float2 texcoord : TEXCOORD0;
				UNITY_VERTEX_INPUT_INSTANCE_ID
			};

			struct v2f {
				float4 vertex : SV_POSITION;
				fixed4 color : COLOR;
				float2 texcoord : TEXCOORD0;
				UNITY_FOG_COORDS(1)
				#ifdef SOFTPARTICLES_ON
				float4 projPos : TEXCOORD2;
				#endif
				UNITY_VERTEX_OUTPUT_STEREO
			};
			
			float4 _MainTex_ST;

			v2f vert (appdata_t v)
			{
				v2f o;
				UNITY_SETUP_INSTANCE_ID(v);
				UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
				o.vertex = UnityObjectToClipPos(v.vertex);
				#ifdef SOFTPARTICLES_ON
				o.projPos = ComputeScreenPos (o.vertex);
				COMPUTE_EYEDEPTH(o.projPos.z);
				#endif
				o.color = v.color * _TintColor;
				o.color.rgb *= _Glow;
				o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
				UNITY_TRANSFER_FOG(o,o.vertex);
				return o;
			}

			sampler2D_float _CameraDepthTexture;
			float _InvFade;
			
			fixed4 frag (v2f i) : SV_Target
			{
				#ifdef SOFTPARTICLES_ON
				float sceneZ = LinearEyeDepth (SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos)));
				float partZ = i.projPos.z;
				float fade = saturate (_InvFade * (sceneZ-partZ));
				i.color.a *= fade;
				#endif
				
				fixed4 col = 2.0f * i.color * tex2D(_MainTex, i.texcoord);
				UNITY_APPLY_FOG_COLOR(i.fogCoord, col, fixed4(0,0,0,0)); // fog towards black due to our blend mode
				return col;
			}
			ENDCG 
		}
	}	
}
}