From 05f49778d522a375d071247373168ed546fc3b06 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Sat, 20 Sep 2025 16:47:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D1=8B=20=D1=81=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=BE=D1=80=D0=B0=20=D1=83=20=D0=BA=D0=B0=D0=B6?= =?UTF-8?q?=D0=B4=D0=BE=D0=B3=D0=BE=20=D1=8D=D0=BA=D0=B7=D0=B5=D0=BC=D0=BF?= =?UTF-8?q?=D0=BB=D1=8F=D1=80=D0=B0=20=D0=B1=D1=83=D0=B4=D1=83=D1=82=20?= =?UTF-8?q?=D1=81=D0=B2=D0=BE=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.gd | 16 ++++++++-------- scenes/diagram/diagram.tscn | 7 ------- scenes/diagram/sector.tscn | 12 +++++------- shaders/sector.gdshader | 14 +++++++------- 4 files changed, 20 insertions(+), 29 deletions(-) diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index 008dcd3..0116c16 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -13,17 +13,17 @@ func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125 func set_strob_visible(val: bool): $строб.visible = val func set_strob_center(val: Vector2): $строб.position = val -func set_strob_dir(val: float): $строб.material.set('shader_parameter/dir', val) -func set_strob_color(val: Color): $строб.material.set('shader_parameter/color', val) -func set_strob_width(val: float): $строб.material.set('shader_parameter/width', val) -func set_strob_band(val: float): $строб.material.set('shader_parameter/band', val / 125.0) -func set_strob_radius(val: float): $строб.material.set('shader_parameter/radius', sv(val)) +func set_strob_dir(val: float): $строб.set_instance_shader_parameter('dir', val) +func set_strob_color(val: Color): $строб.set_instance_shader_parameter('color', val) +func set_strob_width(val: float): $строб.set_instance_shader_parameter('width', val) +func set_strob_band(val: float): $строб.set_instance_shader_parameter('band', val / 125.0) +func set_strob_radius(val: float): $строб.set_instance_shader_parameter('radius', sv(val)) func get_strob_center() -> Vector2: return $строб.position func get_strob_visible() -> bool: return $строб.visible -func get_strob_width() -> float: return $строб.material.get('shader_parameter/width') -func get_strob_band() -> float: return $строб.material.get('shader_parameter/band') * 125.0 -func get_strob_radius() -> float: return $строб.material.get('shader_parameter/radius') * 125.0 +func get_strob_width() -> float: return $строб.get_instance_shader_parameter('width') +func get_strob_band() -> float: return $строб.get_instance_shader_parameter('band') * 125.0 +func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0 func get_radius_outter() -> float: return material.get('shader_parameter/radius_outter') func get_radius_inner_0() -> float: return material.get('shader_parameter/radius_inner_0') diff --git a/scenes/diagram/diagram.tscn b/scenes/diagram/diagram.tscn index 5e8dffd..e48a68b 100644 --- a/scenes/diagram/diagram.tscn +++ b/scenes/diagram/diagram.tscn @@ -11,13 +11,6 @@ size = Vector2(1600, 1200) [sub_resource type="ShaderMaterial" id="ShaderMaterial_lniyv"] resource_local_to_scene = true shader = ExtResource("4_obn6s") -shader_parameter/color = Color(1, 1, 1, 0.168627) -shader_parameter/clip_color = Color(1, 0.5, 0.5, 1) -shader_parameter/width = 45.0 -shader_parameter/band = 0.02 -shader_parameter/radius = 0.08 -shader_parameter/dir = 0.0 -shader_parameter/inner_clip = 0.045 [node name="canvas" type="Sprite2D"] material = ExtResource("1_newdt") diff --git a/scenes/diagram/sector.tscn b/scenes/diagram/sector.tscn index 07b8a30..4edb09b 100644 --- a/scenes/diagram/sector.tscn +++ b/scenes/diagram/sector.tscn @@ -5,18 +5,16 @@ [sub_resource type="ShaderMaterial" id="ShaderMaterial_xo5or"] resource_local_to_scene = true shader = ExtResource("1_e0gfn") -shader_parameter/color = Color(1, 1, 1, 0.168627) -shader_parameter/clip_color = Color(1, 0.5, 0.5, 1) -shader_parameter/width = 45.0 -shader_parameter/band = 0.02 -shader_parameter/radius = 0.08 -shader_parameter/dir = 0.0 -shader_parameter/inner_clip = 0.045 [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2lkm8"] [node name="sector" type="Sprite2D"] material = SubResource("ShaderMaterial_xo5or") +instance_shader_parameters/band = 0.02 +instance_shader_parameters/color = Color(1, 1, 1, 0.188235) +instance_shader_parameters/inner_clip = 0.045 +instance_shader_parameters/radius = 0.08 +instance_shader_parameters/width = 45.0 position = Vector2(610, 600) scale = Vector2(1108, 1108) texture = SubResource("PlaceholderTexture2D_2lkm8") diff --git a/shaders/sector.gdshader b/shaders/sector.gdshader index 1fd8d16..08e3143 100644 --- a/shaders/sector.gdshader +++ b/shaders/sector.gdshader @@ -4,13 +4,13 @@ shader_type canvas_item; /* Закрашенный сектор окружности ограниченный угловым сектором и радиусами */ -uniform vec4 color: source_color = vec4(1, 1, 1, 1); -uniform vec4 clip_color: source_color = vec4(1.0, 0.5, 0.5, 1.0); -uniform float width: hint_range(0.0, 360.0, 0.1) = 45.0; -uniform float band: hint_range(0.0, 0.125) = 0.02; -uniform float radius: hint_range(0.0, 0.125) = 0.08; -uniform float dir: hint_range(0.0, 360.0) = 0.0; -uniform float inner_clip: hint_range(0.0, 0.125) = 0.045; +instance uniform vec4 color: source_color = vec4(1, 1, 1, 1); +instance uniform vec4 clip_color: source_color = vec4(1.0, 0.5, 0.5, 1.0); +instance uniform float width: hint_range(0.0, 360.0, 0.1) = 45.0; +instance uniform float band: hint_range(0.0, 0.125) = 0.02; +instance uniform float radius: hint_range(0.0, 0.125) = 0.08; +instance uniform float dir: hint_range(0.0, 360.0) = 0.0; +instance uniform float inner_clip: hint_range(0.0, 0.125) = 0.045; const vec2 center = vec2(0.125, 0.125); /* Центр. Должен быть в (0.5, 0.5), но это не так */