- 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
![](https://koobas.hobune.stream/wayback/20220613081119im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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