- Home /
Bad lighting on imported object.
Hello, so I made alittle toon shader with the help of some tutorials. and it works perfectly on a sphere, but I imported a gravestone that I made in blender and I get this.
I don't know how its coming up with that jagged look on the darker part of the gravestone. I'm not sure if this is something that needs to be corrected in blender, my shader or in unity import settings.
In blender I've checked the normal directions and they all look right.
These are my unity import settings for the gravestone.
And if you think it might be a shader issue here is my shader code.
Shader "Unlit/MyToonShader"
{
Properties
{
_MainTex("Texture", 2D) = "white" {}
_Color("Color", Color) = (1,1,1,1)
_Color2("Color2", Color) = (1,1,1,1)
_Ramp("Ramp Texture", 2D) = "white" {}
_CutOffPoint("Cut Off Point", Range(0,5)) = 2.5
}
SubShader
{
Tags{ "RenderType" = "Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float2 rampUV : TEXCOORD1;
float3 normal : NORMAL;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
float2 rampUV : TEXCOORD1;
float3 worldNormal : NORMAL;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float4 _Color;
float4 _Color2;
sampler2D _Ramp;
float _CutOffPoint;
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.worldNormal = UnityObjectToWorldNormal(v.normal); // Gives the fragement func the objects normal, and transforms it from object to world space
// because _WorldSpaceLightPos0 is in world space.
return o;
}
fixed4 frag(v2f i) : SV_Target
{
float3 normal = normalize(i.worldNormal); // normalized Object Normal.
float3 dirLight = normalize(_WorldSpaceLightPos0); // normalized light rotation direction.
float NdotL = 1 - dot(dirLight, normal); // Object Normal to Directional light dot product. // 1 - "inversed".
float cutOff = smoothstep(0, _CutOffPoint, NdotL); // Smooth Step
float3 ramp = tex2D(_Ramp, float2(cutOff, cutOff));
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv) * (ramp, ramp.r) * _Color;
return col;
}
ENDCG
}
}
}
I really appreciate any help I can get, let me know if I need to provide more information.
Thanks,
Your answer
Follow this Question
Related Questions
Blender model to Unity quality low (polygons visible with texture) 2 Answers
Blender files won't appear as meshes in Unity 2 Answers
Imported models looks weird. 1 Answer
3dsmax Import Problem 2 Answers
Import Project from Asset store 6 Answers