Welp. This is the last problem I've been having with lighting in There Came an Echo, so time to bribe people and see if anyone can solve it.
The following shader is what I use to make geometry "invisible", but still take light and shadows. It works, but only partially: colored light sources still appear as white on the surface, and they don't vary according to intensity of the light (unless the intensity is 0).
If anyone can solve this problem and have the shader correctly respond to colored lights, I will give them a free copy of There Came an Echo *and* the official soundtrack when the game is released in 2014. For srs.
Also I will love you forever. And if there are any lurkers out there, you can send me an E-mail at
iridium@playiridium.com.
Here's the Unity shader code:
Code:
Shader "Custom/Matte Shadow" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader {
Tags {"Queue"="AlphaTest" "RenderType"="TransparentCutout"}
LOD 200
Blend Zero SrcColor
Offset 0, -1
CGPROGRAM
#pragma surface surf ShadowOnly alphatest:_Cutoff fullforwardshadows
fixed4 _Color;
struct Input {
float2 uv_MainTex;
};
inline fixed4 LightingShadowOnly (SurfaceOutput s, fixed3 lightDir, fixed atten) {
fixed4 c;
c.rgb = s.Albedo*atten;
c.a = s.Alpha;
return c;
}
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = _Color;
o.Albedo = c.rgb;
o.Alpha = 1.0f;
}
ENDCG
}
Fallback "Transparent/Cutout/VertexLit"
}