From cbfbd9f4d83477612f5f18ee956f205cc6ab9800 Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Fri, 12 Jun 2026 02:02:28 +0300 Subject: [PATCH] Fixed wall shader --- game/characters/player/player.tscn | 1 + game/materials/enemy_black.tres | 7 ++++--- game/materials/enemy_gray.tres | 7 ++++--- game/materials/enemy_white.tres | 7 ++++--- game/materials/platform_color.tres | 5 +++-- game/materials/platform_gray.tres | 7 ++++--- game/materials/walls_black.tres | 7 ++++--- game/materials/walls_gray.tres | 7 ++++--- game/materials/walls_white.tres | 7 ++++--- game/objects/decorative/fireplace.tscn | 13 +++++++------ game/shaders/black_n_white.gdshader | 14 +++++++++++++- 11 files changed, 52 insertions(+), 30 deletions(-) diff --git a/game/characters/player/player.tscn b/game/characters/player/player.tscn index 0d340b3..21a34d7 100644 --- a/game/characters/player/player.tscn +++ b/game/characters/player/player.tscn @@ -42,6 +42,7 @@ object = NodePath("..") [node name="Camera2D" type="Camera2D" parent="." unique_id=45512317] process_callback = 0 position_smoothing_enabled = true +position_smoothing_speed = 25.0 drag_horizontal_enabled = true drag_vertical_enabled = true drag_left_margin = 0.1 diff --git a/game/materials/enemy_black.tres b/game/materials/enemy_black.tres index b77bebd..7149ae9 100644 --- a/game/materials/enemy_black.tres +++ b/game/materials/enemy_black.tres @@ -1,4 +1,4 @@ -[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://dggr8t4b30e3n"] +[gd_resource type="ShaderMaterial" format=3 uid="uid://dggr8t4b30e3n"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_61jua"] @@ -9,6 +9,7 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = true shader_parameter/threshold = 0.5 -shader_parameter/speed = 5.0 +shader_parameter/speed = 1.0 shader_parameter/intensity = 1.0 -shader_parameter/scale = 20.0 +shader_parameter/scale = 50.0 +shader_parameter/use_world_pos = false diff --git a/game/materials/enemy_gray.tres b/game/materials/enemy_gray.tres index a150653..5901854 100644 --- a/game/materials/enemy_gray.tres +++ b/game/materials/enemy_gray.tres @@ -8,6 +8,7 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = false shader_parameter/threshold = 0.5 -shader_parameter/speed = 0.50000002375 -shader_parameter/intensity = 0.50000002375 -shader_parameter/scale = 20.0 +shader_parameter/speed = 1.0 +shader_parameter/intensity = 0.5 +shader_parameter/scale = 50.0 +shader_parameter/use_world_pos = false diff --git a/game/materials/enemy_white.tres b/game/materials/enemy_white.tres index f26f720..d734e38 100644 --- a/game/materials/enemy_white.tres +++ b/game/materials/enemy_white.tres @@ -1,4 +1,4 @@ -[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://ci7xuso12af5"] +[gd_resource type="ShaderMaterial" format=3 uid="uid://ci7xuso12af5"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_xngo8"] @@ -9,6 +9,7 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = false shader_parameter/threshold = 0.5 -shader_parameter/speed = 5.0 +shader_parameter/speed = 1.0 shader_parameter/intensity = 1.0 -shader_parameter/scale = 20.0 +shader_parameter/scale = 50.0 +shader_parameter/use_world_pos = false diff --git a/game/materials/platform_color.tres b/game/materials/platform_color.tres index 1e3067d..e2ab713 100644 --- a/game/materials/platform_color.tres +++ b/game/materials/platform_color.tres @@ -8,6 +8,7 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = false shader_parameter/threshold = 0.5 -shader_parameter/speed = 1.0000000475 +shader_parameter/speed = 1.0 shader_parameter/intensity = 1.0 -shader_parameter/scale = 5.0000002375 +shader_parameter/scale = 5.0 +shader_parameter/use_world_pos = false diff --git a/game/materials/platform_gray.tres b/game/materials/platform_gray.tres index f5afc5f..de3394e 100644 --- a/game/materials/platform_gray.tres +++ b/game/materials/platform_gray.tres @@ -8,6 +8,7 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = false shader_parameter/threshold = 0.5 -shader_parameter/speed = 1.0000000475 -shader_parameter/intensity = 0.50000002375 -shader_parameter/scale = 5.0000002375 +shader_parameter/speed = 1.0 +shader_parameter/intensity = 0.5 +shader_parameter/scale = 5.0 +shader_parameter/use_world_pos = false diff --git a/game/materials/walls_black.tres b/game/materials/walls_black.tres index f65d709..cdde51b 100644 --- a/game/materials/walls_black.tres +++ b/game/materials/walls_black.tres @@ -1,4 +1,4 @@ -[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://bhksbugqhxxa0"] +[gd_resource type="ShaderMaterial" format=3 uid="uid://bhksbugqhxxa0"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_sq141"] @@ -8,6 +8,7 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = true shader_parameter/threshold = 0.5 -shader_parameter/speed = 5.0 +shader_parameter/speed = 0.5 shader_parameter/intensity = 1.0 -shader_parameter/scale = 20.0 +shader_parameter/scale = 0.1 +shader_parameter/use_world_pos = true diff --git a/game/materials/walls_gray.tres b/game/materials/walls_gray.tres index 0102264..26c6f42 100644 --- a/game/materials/walls_gray.tres +++ b/game/materials/walls_gray.tres @@ -8,6 +8,7 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = false shader_parameter/threshold = 0.5 -shader_parameter/speed = 0.50000002375 -shader_parameter/intensity = 0.50000002375 -shader_parameter/scale = 20.0 +shader_parameter/speed = 0.5 +shader_parameter/intensity = 0.5 +shader_parameter/scale = 0.1 +shader_parameter/use_world_pos = true diff --git a/game/materials/walls_white.tres b/game/materials/walls_white.tres index 2a245f1..563be96 100644 --- a/game/materials/walls_white.tres +++ b/game/materials/walls_white.tres @@ -1,4 +1,4 @@ -[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://d2o2o1w8kb51g"] +[gd_resource type="ShaderMaterial" format=3 uid="uid://d2o2o1w8kb51g"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_1yg6n"] @@ -8,6 +8,7 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = false shader_parameter/threshold = 0.5 -shader_parameter/speed = 5.0 +shader_parameter/speed = 0.5 shader_parameter/intensity = 1.0 -shader_parameter/scale = 20.0 +shader_parameter/scale = 0.1 +shader_parameter/use_world_pos = false diff --git a/game/objects/decorative/fireplace.tscn b/game/objects/decorative/fireplace.tscn index bdd6e31..b701647 100644 --- a/game/objects/decorative/fireplace.tscn +++ b/game/objects/decorative/fireplace.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://b3kyqvuxmfn8f"] +[gd_scene format=3 uid="uid://b3kyqvuxmfn8f"] [ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_xghly"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="2_4nvxe"] @@ -21,9 +21,10 @@ shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/switch_colors = false shader_parameter/threshold = 0.5 -shader_parameter/speed = 5.0000002375 -shader_parameter/intensity = 0.50000002375 +shader_parameter/speed = 2.50000011875 +shader_parameter/intensity = 0.6000000285 shader_parameter/scale = 75.0000035625 +shader_parameter/use_world_pos = false [sub_resource type="AtlasTexture" id="AtlasTexture_6xx0h"] atlas = ExtResource("1_xghly") @@ -47,13 +48,13 @@ animations = [{ "speed": 5.0 }] -[node name="Fireplace" type="Node2D"] +[node name="Fireplace" type="Node2D" unique_id=1851673640] script = SubResource("GDScript_4nvxe") -[node name="Sprite2D" type="Sprite2D" parent="."] +[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1590498638] texture = SubResource("AtlasTexture_2ho61") -[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=628370504] material = SubResource("ShaderMaterial_2ho61") position = Vector2(0, 8) sprite_frames = SubResource("SpriteFrames_f0x6e") diff --git a/game/shaders/black_n_white.gdshader b/game/shaders/black_n_white.gdshader index 197be1c..0acb675 100644 --- a/game/shaders/black_n_white.gdshader +++ b/game/shaders/black_n_white.gdshader @@ -1,5 +1,7 @@ shader_type canvas_item; +varying vec2 world_pos; + uniform vec4 black_color : source_color = vec4(0.0, 0.0, 0.0, 1.0); uniform vec4 white_color : source_color = vec4(1.0, 1.0, 1.0, 1.0); uniform bool switch_colors = false; @@ -7,6 +9,7 @@ uniform float threshold : hint_range(0.0, 1.0) = 0.5; uniform float speed : hint_range(0.0, 10.0) = 0.5; uniform float intensity : hint_range(0.0, 1.0) = 1.0; uniform float scale : hint_range(0.0, 100.0) = 20.0; +uniform bool use_world_pos = false; vec2 random(vec2 uv){ uv = vec2( dot(uv, vec2(127.1,311.7) ), @@ -26,9 +29,17 @@ float noise(vec2 uv) { dot( random(uv_index + vec2(1.0,1.0) ), uv_fract - vec2(1.0,1.0) ), blur.x), blur.y) + 0.5; } +void vertex() { + if (use_world_pos) { + world_pos = (MODEL_MATRIX * vec4(VERTEX, 0.0, 1.0)).xy; + } +} + void fragment() { if (COLOR.a > 0.01) { - vec2 noise_uv = UV * vec2(1.0, TEXTURE_PIXEL_SIZE.x / TEXTURE_PIXEL_SIZE.y); + vec2 noise_uv = vec2(1.0, TEXTURE_PIXEL_SIZE.x / TEXTURE_PIXEL_SIZE.y); + noise_uv *= use_world_pos ? world_pos : UV; + float l = dot(COLOR.rgb, vec3(0.2126, 0.7152, 0.0722)); bool is_black = l < threshold; @@ -37,6 +48,7 @@ void fragment() { } if (intensity < 1.0) { vec2 coord = noise_uv * scale + TIME * speed; + if (noise(coord) > intensity) { is_black = !is_black; }