Question by
supermarten · Feb 08, 2016 at 10:35 AM ·
shadershadowsverticessurface shaderdeformation
How to add correct shadows in vertex deforming shader
I've made a simple shader that deforms my mesh by moving the vertices, and also adds vertexcolors. Problem is the shadows that are cast by it are offseted and move around weirdly. Using the "addshadow" pragma instruction makes it break the light correctly and receive shadows, but the shadows casting is still wrong. I'm guessing I need to add some sort of shadow caster, but how do you do that, and is it even possible with the standard shader?
Here's my current shader:
Shader "Custom/Vertex colored animated test" {
Properties {
_Bend ("Bend", Range(-0.5,0.5)) = 0
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard vertex:vert addshadow
#pragma target 3.0
struct Input {
float2 uv_MainTex;
float3 vertexColor; // Vertex color stored here by vert() method
};
float _Bend;
void vert (inout appdata_full v, out Input o) {
UNITY_INITIALIZE_OUTPUT(Input,o);
o.vertexColor = v.color; // Save Vertex Color in Input for surf()
//bend vertex
v.vertex.y += v.vertex.x * v.vertex.y * _Bend;
v.vertex.x += v.vertex.y * v.vertex.y * _Bend;
}
void surf (Input IN, inout SurfaceOutputStandard o) {
o.Albedo = IN.vertexColor;
}
ENDCG
}
Fallback Off
}
Comment
Your answer
Follow this Question
Related Questions
How to cast terrain detail shadow? 0 Answers
Add hard shadows to a Toon Shader 0 Answers
Procedural mesh shader problem 0 Answers
Why I couldnt control alpha in Surface shader? 3 Answers
Shader for alpha fading 0 Answers