墙后透视效果
@ -1,10 +1,8 @@
|
|||||||
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://c8r7kifl8faqr"]
|
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://c8r7kifl8faqr"]
|
||||||
|
|
||||||
[ext_resource type="Shader" path="res://render/shader/character.gdshader" id="1_ja5hr"]
|
[ext_resource type="Shader" path="res://render/shader/character_silhouette.gdshader" id="2_camhu"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("1_ja5hr")
|
shader = ExtResource("2_camhu")
|
||||||
shader_parameter/flash_white = null
|
shader_parameter/color = null
|
||||||
shader_parameter/deformation_dir = Vector2(1, 0)
|
|
||||||
shader_parameter/deformation_rate = 0.0
|
|
||||||
|
|||||||
@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://s5gf3b66luh8"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" path="res://render/shader/character.gdshader" id="1_1ay5b"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 1
|
||||||
|
shader = ExtResource("1_1ay5b")
|
||||||
|
shader_parameter/flash_white = null
|
||||||
|
shader_parameter/deformation_dir = Vector2(1, 0)
|
||||||
|
shader_parameter/deformation_rate = 0.0
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode depth_draw_opaque,unshaded,depth_test_disabled;
|
||||||
|
|
||||||
|
uniform sampler2D tex : source_color,filter_nearest;
|
||||||
|
uniform vec4 color:source_color;
|
||||||
|
|
||||||
|
uniform vec2 deformation_dir = vec2(1, 0);
|
||||||
|
uniform float deformation_rate = 0;
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
if (length(deformation_dir)>0.0){
|
||||||
|
vec2 dir_center = VERTEX.xy;
|
||||||
|
vec2 dir = normalize(deformation_dir.yx);
|
||||||
|
vec2 dir1 = dir * deformation_rate;
|
||||||
|
vec2 dir2 = cross(vec3(0, 0, 1), vec3(dir, 0)).xy * deformation_rate;
|
||||||
|
vec2 offset1 = -dot(dir1, dir_center) * dir1;
|
||||||
|
vec2 offset2 = dot(dir2, dir_center) * dir2;
|
||||||
|
VERTEX.xy += offset1 + offset2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec4 col = texture(tex, UV);
|
||||||
|
if(col.a<0.5){discard;}
|
||||||
|
ALBEDO = color.rgb;
|
||||||
|
ALPHA = 1.0;
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 366 B After Width: | Height: | Size: 398 B |
|
Before Width: | Height: | Size: 192 B After Width: | Height: | Size: 190 B |
|
Before Width: | Height: | Size: 134 B After Width: | Height: | Size: 133 B |
|
Before Width: | Height: | Size: 131 B After Width: | Height: | Size: 131 B |