From c7d401a752c62c573ed6b6c553efe0d2a8bfe13a Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Sun, 23 Feb 2025 04:22:15 -0500 Subject: [PATCH] improved sand pit material --- assets/shaders/horizontal_world_uv.gdshader | 16 ++++++++++++++++ objects/sand_pit.tscn | 18 ++++++++---------- 2 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 assets/shaders/horizontal_world_uv.gdshader diff --git a/assets/shaders/horizontal_world_uv.gdshader b/assets/shaders/horizontal_world_uv.gdshader new file mode 100644 index 0000000..dafeaa6 --- /dev/null +++ b/assets/shaders/horizontal_world_uv.gdshader @@ -0,0 +1,16 @@ +shader_type spatial; + +uniform sampler2D albedo_texture : repeat_enable, filter_nearest, source_color; +uniform vec2 horizontal_uv_offset = vec2(0.0); + +void vertex() { + vec3 world_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz; + vec3 world_normal = (MODEL_NORMAL_MATRIX * NORMAL).xyz; + vec2 uv_y = world_position.xz + horizontal_uv_offset; + //vec3 normal_weights = world_normal / (world_normal.x + world_normal.y + world_normal.z); + UV = mix(UV, uv_y, abs(world_normal.y)); +} + +void fragment() { + ALBEDO = texture(albedo_texture, UV).rgb; +} \ No newline at end of file diff --git a/objects/sand_pit.tscn b/objects/sand_pit.tscn index 4c00242..ba0bc6f 100644 --- a/objects/sand_pit.tscn +++ b/objects/sand_pit.tscn @@ -1,22 +1,20 @@ -[gd_scene load_steps=4 format=3 uid="uid://bfic5n608nc5j"] +[gd_scene load_steps=5 format=3 uid="uid://bfic5n608nc5j"] +[ext_resource type="Shader" path="res://assets/shaders/horizontal_world_uv.gdshader" id="1_2mr0t"] [ext_resource type="Texture2D" uid="uid://djx2x3jjn01w2" path="res://assets/textures/world/sand.png" id="1_yg8om"] [ext_resource type="Script" path="res://objects/sand_pit.gd" id="2_vtyum"] -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r0cip"] -shading_mode = 2 -specular_mode = 2 -albedo_texture = ExtResource("1_yg8om") -metallic_specular = 0.0 -uv1_triplanar = true -uv1_world_triplanar = true -texture_filter = 0 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_7s0pr"] +render_priority = 0 +shader = ExtResource("1_2mr0t") +shader_parameter/horizontal_uv_offset = Vector2(0, 0) +shader_parameter/albedo_texture = ExtResource("1_yg8om") [node name="SandPit" type="CSGPolygon3D" node_paths=PackedStringArray("collision_polygon")] process_physics_priority = 100 transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) depth = 0.03 -material = SubResource("StandardMaterial3D_r0cip") +material = SubResource("ShaderMaterial_7s0pr") script = ExtResource("2_vtyum") friction = 9.0 collision_polygon = NodePath("Area3D/CollisionPolygon3D")