- Home /
Question by
Barterbly · Aug 30, 2018 at 11:49 PM ·
shader programmingshader writingnormal map
How to add a normal map to custom shader which blends material on edges,Adding normal map to bump shader type
Hello,
I'm trying to add normal map to our custom shader. Original shader looks like this:
Shader "Road" {
Properties {
_AlphaMul ("Alpha Mult", Range(0.0,2.0)) = 0.0
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
}
SubShader {
Tags { "Queue" = "Geometry+10" "RenderType"="Opaque" }
LOD 200
Pass {
ZWrite On
ColorMask 0
}
CGPROGRAM
#pragma surface surf Lambert decal:blend vertex:vert
sampler2D _MainTex;
fixed4 _Color;
fixed _AlphaMul;
struct Input {
float2 uv_MainTex;
fixed alpha;
};
void vert (inout appdata_base v, out Input o) {
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.uv_MainTex =
o.alpha = (0.5 - abs(v.texcoord.x - 0.5)) * 4;
}
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Alpha = IN.alpha;//c.a * _AlphaMul;
}
ENDCG
}
Fallback "Legacy Shaders/Diffuse"
}
After my modifications, it looks like this:
Shader "Road2" {
Properties{
_AlphaMul("Alpha Mult", Range(0.0,2.0)) = 0.0
_Color("Main Color", Color) = (1,1,1,1)
_MainTex("Base (RGB) Trans (A)", 2D) = "white" {}
_BumpMap("Normal Map", 2D) = "bump" {}
}
SubShader{
Tags{ "Queue" = "Geometry+10" "RenderType" = "Opaque" }
LOD 200
Pass{
ZWrite On
ColorMask 0
}
CGPROGRAM
#pragma surface surf Lambert decal:blend vertex:vert
#pragma target 3.0
sampler2D _MainTex;
fixed4 _Color;
fixed _AlphaMul;
struct Input {
float2 uv_MainTex;
float2 uv_BumpMap;
fixed alpha;
};
void vert(inout appdata_base v, out Input o) {
UNITY_INITIALIZE_OUTPUT(Input,o);
//o.uv_MainTex =
o.alpha = (0.5 - abs(v.texcoord.x - 0.5)) * 4;
}
sampler2D _BumpMap;
void surf(Input IN, inout SurfaceOutput o) {
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Alpha = IN.alpha;//c.a * _AlphaMul;
}
ENDCG
}
Fallback "Legacy Shaders/Diffuse"
}
But as a result, i'm getting white texture with no blend. How this should be correctly done?
Comment