diff --git a/project/assets/shaders/height_lines.gdshader b/project/assets/shaders/height_lines.gdshader new file mode 100644 index 00000000..ac25270b --- /dev/null +++ b/project/assets/shaders/height_lines.gdshader @@ -0,0 +1,24 @@ +shader_type spatial; +render_mode unshaded, skip_vertex_transform; + +uniform float height_step = 10; +uniform float line_thickness = 0.1; +uniform vec4 lines : source_color; + +varying vec3 var_vertex_position; +varying vec3 var_model_normal; + +void vertex() { + var_model_normal = normalize(NORMAL); + var_vertex_position = (vec4(VERTEX, 1.0) * MODEL_MATRIX).xyz; + VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz; + NORMAL = normalize(MODELVIEW_MATRIX * vec4(NORMAL, 0.0)).xyz; + TANGENT = normalize(MODELVIEW_MATRIX * vec4(TANGENT, 0.0)).xyz; + BINORMAL = normalize(MODELVIEW_MATRIX * vec4(BINORMAL, 0.0)).xyz; +} + +void fragment() { + ALBEDO = lines.rgb; + ALPHA = int(var_vertex_position.y / line_thickness / height_step) % int(2.0 / line_thickness) == 0 ? lines.a : 0.0; + ALPHA = var_model_normal.y > 0.99 ? 0.0 : ALPHA; +} \ No newline at end of file diff --git a/project/assets/shaders/height_lines.gdshader.uid b/project/assets/shaders/height_lines.gdshader.uid new file mode 100644 index 00000000..382743f6 --- /dev/null +++ b/project/assets/shaders/height_lines.gdshader.uid @@ -0,0 +1 @@ +uid://cf5jptb8gp4u7 diff --git a/project/scenes/terrain_test.scn b/project/scenes/terrain_test.scn index d9dace51..5ea793d4 100644 Binary files a/project/scenes/terrain_test.scn and b/project/scenes/terrain_test.scn differ