- Home /
How to make projector/light shader "alpha enabled"?
I'm using a projector to project a series of images which need to be fade in and fade out in order to look as a smooth animation. I'm wondering how would I inject alpha possibilities into this shader.
cheers,
i got it working i just had to call it like this: float newFadedAlpha; Renderer rend = GetComponent(); Color color = new Color(.5F, .5F, .5F, newFadedAlpha); rend.material.SetColor("_TintColor", color);
Answer by Daedin · May 14, 2015 at 08:02 PM
I've slightly tinkered with the standard Projector/light shader of unity 5, and this is what I use:
Shader "Projector/Light" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_ShadowTex ("Cookie", 2D) = "" {}
_FalloffTex ("FallOff", 2D) = "" {}
}
Subshader {
Tags {"Queue"="Transparent"}
Pass {
ZWrite Off
ColorMask RGB
Blend DstColor One
Offset -1, -1
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct v2f {
float4 uvShadow : TEXCOORD0;
float4 uvFalloff : TEXCOORD1;
UNITY_FOG_COORDS(2)
float4 pos : SV_POSITION;
};
float4x4 _Projector;
float4x4 _ProjectorClip;
v2f vert (float4 vertex : POSITION)
{
v2f o;
o.pos = mul (UNITY_MATRIX_MVP, vertex);
o.uvShadow = mul (_Projector, vertex);
o.uvFalloff = mul (_ProjectorClip, vertex);
UNITY_TRANSFER_FOG(o,o.pos);
return o;
}
fixed4 _Color;
sampler2D _ShadowTex;
sampler2D _FalloffTex;
fixed4 frag (v2f i) : SV_Target
{
fixed4 texS = tex2Dproj (_ShadowTex, UNITY_PROJ_COORD(i.uvShadow));
texS.rgb *= _Color.rgb;
texS.a = (1.0-texS.a);
fixed4 texF = tex2Dproj (_FalloffTex, UNITY_PROJ_COORD(i.uvFalloff));
// Added multiplication by _Color.a here
fixed4 res = texS * texF.a * _Color.a;
UNITY_APPLY_FOG_COLOR(i.fogCoord, res, fixed4(0,0,0,0));
return res;
}
ENDCG
}
}
}
Answer by jhuynh_isobar · Sep 02, 2016 at 07:52 PM
Thanks, this made a great projector light, but I can't seem to access the alpha channels to fade it out. I tried a fading script in c# but it doesn't alter the alpha channel. Do I need to alter the shader in some way to do that?
Hey! I haven't touched Unity for more than a year, so unfortunately I won't be able to help here.
If I understand what you mean, when you change the alpha channel of the input Color, there is no impact on the result?
Your answer
Follow this Question
Related Questions
which shader to use for dualsided alpha cutout with light cookie enabled? 1 Answer
Modify Light Projector Shader to be Additive 0 Answers
Revealing invisible objects with a projector 0 Answers
Depth mask with alpha / adding alpha to frag grabpass shader 0 Answers
Shader with "alpha" parameter no longer writes to Z-Buffer 2 Answers