- Home /
Get a Normal Map to work with World Space Shader?
I'm using a World space shader I found in my game and I'm wanting to be able to add a normal map texture to the shader allowing my materials to show the normal detail however I can't seem to get it to work correctly. I'm also trying to add a Spec map but am running into errors and don't know shader code well enough to correct it. Here's the code below if anyone could help me out. The error I'm getting is 'surf': output parameter 'o' not completely initialized
Shader "Diffuse - Worldspace" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB)", 2D) = "white" {}
_Emission ("Emission (RGB)", Color) = (1,1,1,1)
_NormalMap ("Normal (RGB)", 2D) = "normal" {}
_SpecMap ("Specular (G)", 2D) = "specular" {}
_Rotation ("Rotation", Float) = 1
_Scale ("Texture Scale", Float) = 1.0
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
fixed4 _NormalMap;
sampler2D _SpecMap;
fixed4 _Emission;
fixed4 _Color;
float _Scale;
struct Input
{
float3 worldNormal;
float3 worldPos;
};
void surf (Input IN, inout SurfaceOutput o)
{
float2 UV;
fixed4 c;
float4 n;
float3 s;
if(abs(IN.worldNormal.x)>0.5)
{
UV = IN.worldPos.zy; // side
c = tex2D(_MainTex, UV* _Scale);
s = tex2D(_SpecMap, UV* _Scale);
}
else if(abs(IN.worldNormal.z)>0.5)
{
UV = IN.worldPos.xy; // front
c = tex2D(_MainTex, UV* _Scale);
s = tex2D(_SpecMap, UV* _Scale);
}
else
{
UV = IN.worldPos.zx; // top
c = tex2D(_MainTex, UV* _Scale);
s = tex2D(_SpecMap, UV* _Scale);
}
o.Albedo = c.rgb * _Color;
o.Specular = s;
o.Normal = n.rgb;
o.Emission = _Emission;
float3 worldNormal = WorldNormalVector(IN, o.Normal);
}
ENDCG
}
Fallback "VertexLit"
}
Your answer
Follow this Question
Related Questions
Modify a vector 2 in pbr shader using c# 1 Answer
Standard shader looks incorrect on mobile (weird colors) 1 Answer
What keyword string should I add to enable/disable when changing shader properties ? 1 Answer
Material doesn't have a color property '_Color' 4 Answers
HDRP Lit Shader: How to disable Transparency "Blend preserve" through script? 0 Answers