shader_type spatial; //frag shader variables uniform vec4 albedo : hint_color; uniform float alpha : hint_range(0.0, 1.0); uniform float normal_speed : hint_range(0.0, 1.0); uniform float normal_map_scale : hint_range(0.0, 10.0); uniform float roughness : hint_range(0.0, 1.0); uniform sampler2D normal : hint_normal; //Vertex shader variables uniform float wave_speed : hint_range(0.0, 10.0); uniform float wave_height : hint_range(0.0, 10.0); void fragment() { vec2 moving_uv = UV + (TIME * normal_speed); ALBEDO = albedo.rgb; ALPHA = alpha; ROUGHNESS = roughness; NORMALMAP = texture(normal, moving_uv * normal_map_scale).xyz; } void vertex() { VERTEX.y = sin(TIME + VERTEX.x * wave_speed) * wave_height; }