- Home /
Shader: Correct directional lightmap decoding in custom lighting function
I'm trying to get custom lighting as seen in these examples to work with my shaders. I can't, however, seem to get beyond rudimentary lightmap functionality to work - directional lightmaps should give bump/spec on my lightmapped objects, right?
Bump doesn't show for me with the shader below. It's copied almost verbatim from the examples, I only added a bumpmap slot.
If line 10 is changed to "Lambert" rather than "Standard", it works.
Any ideas?
Shader "Test/ShaderTestLM1" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_BumpMap ("Bumpmap 1", 2D) = "bump" {}
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Standard
half4 LightingStandard (SurfaceOutput s, half3 lightDir, half atten) {
half NdotL = dot (s.Normal, lightDir);
half4 c; c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * atten * 2);
c.a = s.Alpha;
return c;
}
inline fixed4 LightingStandard_SingleLightmap (SurfaceOutput s, fixed4 color) {
half3 lm = DecodeLightmap (color);
return fixed4(lm, 0);
}
inline fixed4 LightingStandard_DualLightmap (SurfaceOutput s, fixed4 totalColor, fixed4 indirectOnlyColor, half indirectFade) {
half3 lm = lerp (DecodeLightmap (indirectOnlyColor), DecodeLightmap (totalColor), indirectFade);
return fixed4(lm, 0);
}
inline fixed4 LightingStandard_StandardLightmap (SurfaceOutput s, fixed4 color, fixed4 scale, bool surfFuncWritesNormal) {
UNITY_DIRBASIS
half3 lm = DecodeLightmap (color);
half3 scalePerBasisVector = DecodeLightmap (scale);
if (surfFuncWritesNormal)
{
half3 normalInRnmBasis = saturate (mul (unity_DirBasis, s.Normal));
lm *= dot (normalInRnmBasis, scalePerBasisVector);
}
return fixed4(lm, 0);
}
struct Input {
float2 uv_MainTex;
float2 uv_BumpMap;
};
sampler2D _MainTex;
sampler2D _BumpMap;
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
o.Normal = UnpackNormal ( tex2D( _BumpMap, IN.uv_BumpMap ) );
}
ENDCG
}
Fallback "Additive"
}
Your answer
Follow this Question
Related Questions
Mobile BEAST lightmapping shader/lighting question 0 Answers
Static+Real Time lighting in Angry Bots Demo 1 Answer
Light mapping does not map some of my objects 1 Answer
Shadows and ambient occlusion post processing don't work... until I click on the shader 1 Answer
what does LightingLambert_DirLightmap()? 0 Answers