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 -

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


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

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 {
			#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;

			struct v2f {
				float4 vertex : SV_POSITION;
				fixed4 color : COLOR;
				float2 texcoord : TEXCOORD0;
				float4 projPos : TEXCOORD2;
			float4 _MainTex_ST;

			v2f vert (appdata_t v)
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.projPos = ComputeScreenPos (o.vertex);
				o.color = v.color * _TintColor;
				o.color.rgb *= _Glow;
				o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
				return o;

			sampler2D_float _CameraDepthTexture;
			float _InvFade;
			fixed4 frag (v2f i) : SV_Target
				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;
				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;