From 514c4e2cc1796229c1d9918e45e72767b93a9f23 Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Mon, 22 Jan 2024 06:33:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=94=BB=E5=87=BB=E7=89=B9?= =?UTF-8?q?=E6=95=88=20-=20=E7=8E=AF=E5=BD=A2=E7=A9=BA=E9=97=B4=E6=89=AD?= =?UTF-8?q?=E6=9B=B2=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- render/material/effect_skew1.tres | 16 ++++----- render/shader/effect_skew1.gdshader | 26 ++++++++------ render/shader/effect_slash.gdshader | 1 - render/texture/mask/mask6.png | Bin 0 -> 22800 bytes render/texture/mask/mask6.png.import | 34 ++++++++++++++++++ .../particle/hero01_common_skill02.tscn | 3 ++ .../particle/particle_slash_normal.tscn | 3 ++ 7 files changed, 64 insertions(+), 19 deletions(-) create mode 100644 render/texture/mask/mask6.png create mode 100644 render/texture/mask/mask6.png.import diff --git a/render/material/effect_skew1.tres b/render/material/effect_skew1.tres index cb7551b..4cfb1f5 100644 --- a/render/material/effect_skew1.tres +++ b/render/material/effect_skew1.tres @@ -1,13 +1,13 @@ -[gd_resource type="ShaderMaterial" load_steps=5 format=3 uid="uid://bkbuvtya3uk3x"] +[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://bkbuvtya3uk3x"] -[ext_resource type="Shader" path="res://render/shader/effect_slash.gdshader" id="1_igfou"] -[ext_resource type="Texture2D" uid="uid://dd3e7ol8qa5eq" path="res://render/texture/noise/noise2.png" id="2_hohok"] -[ext_resource type="Texture2D" uid="uid://cksxjvafx2skm" path="res://render/texture/mask/mask5.png" id="3_mbqrk"] +[ext_resource type="Shader" path="res://render/shader/effect_skew1.gdshader" id="1_dcuof"] +[ext_resource type="Texture2D" uid="uid://csjm7d1tg6b50" path="res://render/texture/mask/mask6.png" id="3_p44lv"] [ext_resource type="Texture2D" uid="uid://c4byf37he3mjt" path="res://render/texture/noise/noise1.png" id="4_vjpnf"] [resource] render_priority = 0 -shader = ExtResource("1_igfou") -shader_parameter/tex_main = ExtResource("2_hohok") -shader_parameter/tex_noise = ExtResource("4_vjpnf") -shader_parameter/tex_mask = ExtResource("3_mbqrk") +shader = ExtResource("1_dcuof") +shader_parameter/distortionView = 0.06 +shader_parameter/speedView = 0.5 +shader_parameter/noise = ExtResource("4_vjpnf") +shader_parameter/tex_mask = ExtResource("3_p44lv") diff --git a/render/shader/effect_skew1.gdshader b/render/shader/effect_skew1.gdshader index 61d7f87..4cbae21 100644 --- a/render/shader/effect_skew1.gdshader +++ b/render/shader/effect_skew1.gdshader @@ -1,16 +1,22 @@ shader_type spatial; -render_mode blend_add,unshaded; -uniform sampler2D tex_noise : source_color; +render_mode unshaded; + +uniform sampler2D noise; uniform sampler2D tex_mask : source_color; -uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; +uniform float distortionView : hint_range(0.0, 0.3, 0.005) = 0.03; +uniform float speedView : hint_range(0.0, 1.0, 0.005) = 0.5; +uniform sampler2D screenTexture : hint_screen_texture; -void fragment() { +void fragment() +{ vec2 uv2 = UV - 1.0 * vec2(mod(TIME, 2.0) - 1.0, 0); - vec4 col_noise = texture(tex_noise, UV - 0.5 * vec2(mod(TIME, 2.0) - 1.0, 0)); vec4 col_mask = texture(tex_mask, UV); - vec4 col_screen = textureLod(screen_texture, SCREEN_UV, 0.0); - vec4 col = col_screen; - ALBEDO = col.rgb; - ALPHA = col_mask.r; -} + + float noiseValueX = (texture(noise, UV + (TIME * speedView)).r * 2.0) - 1.0; // Range: -1.0 to 1.0 + float noiseValueY = (texture(noise, UV + (TIME * speedView)).r * 2.0) - 1.0; // Range: -1.0 to 1.0 + vec2 noiseDistort = vec2(noiseValueX, noiseValueY) * distortionView * col_mask.r;; + vec3 distortedScreenTexture = vec3(texture(screenTexture, SCREEN_UV + noiseDistort).rgb); + + ALBEDO = distortedScreenTexture; +} \ No newline at end of file diff --git a/render/shader/effect_slash.gdshader b/render/shader/effect_slash.gdshader index 100f08e..3e7b9ed 100644 --- a/render/shader/effect_slash.gdshader +++ b/render/shader/effect_slash.gdshader @@ -6,7 +6,6 @@ uniform sampler2D tex_noise : source_color; uniform sampler2D tex_mask : source_color; void fragment() { - vec2 uv2 = UV - 1.0 * vec2(mod(TIME, 2.0) - 1.0, 0); vec4 col_main = texture(tex_main, UV); vec4 col_noise = texture(tex_noise, UV - 0.5 * vec2(mod(TIME, 2.0) - 1.0, 0)); vec4 col_mask = texture(tex_mask, UV); diff --git a/render/texture/mask/mask6.png b/render/texture/mask/mask6.png new file mode 100644 index 0000000000000000000000000000000000000000..ac263d92a1623b805c100f17f5375b04e7cb2a7d GIT binary patch literal 22800 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