Created
January 19, 2015 15:21
-
-
Save fadookie/4f323ab3d9e4c95c3cca to your computer and use it in GitHub Desktop.
Hacked version of Unity's Additive Particle shader w/ a parameter to enable B&W rendering with a weird worm tail bug. Used in http://gamejolt.com/games/other/raney2/45350/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Shader "eliotlash/Particles/Additive B&W" { | |
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 | |
_BWEffectOn ("B&W Effect On", Range(0, 1)) = 0 | |
} | |
Category { | |
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } | |
Blend SrcAlpha One | |
AlphaTest Greater .01 | |
ColorMask RGB | |
Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) } | |
SubShader { | |
Pass { | |
CGPROGRAM | |
#pragma vertex vert | |
#pragma fragment frag | |
#pragma multi_compile_particles | |
#include "UnityCG.cginc" | |
sampler2D _MainTex; | |
fixed4 _TintColor; | |
uniform fixed _BWEffectOn; | |
struct appdata_t { | |
float4 vertex : POSITION; | |
fixed4 color : COLOR; | |
float2 texcoord : TEXCOORD0; | |
}; | |
struct v2f { | |
float4 vertex : SV_POSITION; | |
fixed4 color : COLOR; | |
float2 texcoord : TEXCOORD0; | |
#ifdef SOFTPARTICLES_ON | |
float4 projPos : TEXCOORD1; | |
#endif | |
}; | |
float4 _MainTex_ST; | |
v2f vert (appdata_t v) | |
{ | |
v2f o; | |
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); | |
#ifdef SOFTPARTICLES_ON | |
o.projPos = ComputeScreenPos (o.vertex); | |
COMPUTE_EYEDEPTH(o.projPos.z); | |
#endif | |
o.color = v.color; | |
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); | |
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 finalCol = 2.0f * i.color * _TintColor * tex2D(_MainTex, i.texcoord); | |
fixed lum = Luminance(finalCol.xyz); | |
return _BWEffectOn ? fixed4(lum, lum, lum, 1) : finalCol; | |
} | |
ENDCG | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment