Question by
Freshchris01 · Sep 04, 2015 at 12:49 PM ·
shadergraphicsshadowvertex shader
Receive Shadows after vertex transfrmation
Hy, I want to implement a low poli water in my game. At first I was creating a new mesh every frame which was very inperformant. Then i decided to write a vertex shader for that. Now this works and i have moving vertices. The problem is that the mesh now doesn't recieve dynamic shadows. It just shows up the shadow before giong to play mode and doesn't change it. Then I found "Tags {"LightMode" = "ShadowCaster"}". Now a dynamic shadow show up, and the vertices are transforming, but the material of my mesh doesn't change. Am I completly missing something? Here is my shadercode
Shader "Custom/Water2" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Scale("Scale", float) = 1
_Speed("Speed", float) = 1
_Frequency("Frequency", float) = 1
}
SubShader {
//Tags { "RenderType"="Opaque" }
//Tags {"LightMode" = "ShadowCaster"}
LOD 200
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows vertex:vert
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _MainTex;
float _Scale, _Speed, _Frequency;
struct Input {
float2 uv_MainTex;
};
fixed4 _Color;
void vert(inout appdata_full v){
half offsetvert = (v.vertex.x * v.vertex.x) + (v.vertex.z * v.vertex.z);
half value = _Scale * sin(_Time.w * _Speed + offsetvert * _Frequency);
v.vertex.y += value;
}
void surf (Input IN, inout SurfaceOutputStandard o) {
o.Albedo = _Color;
}
ENDCG
}
FallBack "Diffuse"
}
The picture below shows the transformed vertex and the static (not transforming )material.
Thanks for your help! [1]: /storage/temp/53446-question-shader.png
question-shader.png
(237.2 kB)
Comment