Skip to content

Commit 8ac43e9

Browse files
committed
demo scene
1 parent d3af419 commit 8ac43e9

13 files changed

+1002
-110
lines changed

demo/assets/godot-text.png

-3.33 KB
Loading
1.38 KB
Loading
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
[remap]
2+
3+
importer="texture"
4+
type="CompressedTexture2D"
5+
uid="uid://d2xrvklvm45mw"
6+
path="res://.godot/imported/chars_texture3x3.png-b24f7919681570e5b5647cdd5d0a88a7.ctex"
7+
metadata={
8+
"vram_texture": false
9+
}
10+
11+
[deps]
12+
13+
source_file="res://demo/assets/shaders/chars_texture3x3.png"
14+
dest_files=["res://.godot/imported/chars_texture3x3.png-b24f7919681570e5b5647cdd5d0a88a7.ctex"]
15+
16+
[params]
17+
18+
compress/mode=0
19+
compress/high_quality=false
20+
compress/lossy_quality=0.7
21+
compress/hdr_compression=1
22+
compress/normal_map=0
23+
compress/channel_pack=0
24+
mipmaps/generate=false
25+
mipmaps/limit=-1
26+
roughness/mode=0
27+
roughness/src_normal=""
28+
process/fix_alpha_border=true
29+
process/premult_alpha=false
30+
process/normal_map_invert_y=false
31+
process/hdr_as_srgb=false
32+
process/hdr_clamp_exposure=false
33+
process/size_limit=0
34+
detect_3d/compress_to=1

demo/assets/shaders/example1.gdshader

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
//ATTENTION:
2+
// THIS IS SHADE AUTOGENERATED BY
3+
// THE ADDON SPRITE-SHADER-MIXER
4+
// ANY MANUAL CHANGES WILL BE REMOVED WHEN THE ADDON
5+
// UPDATES THIS SHADER.
6+
// ANYWAY, YOU CAN SAVE THE CURRENT VERSION AS A RESOURCE FILE.
7+
//SHADERS:Shield,Hologram,Pulse,
8+
shader_type canvas_item;
9+
10+
11+
//SHIELD
12+
uniform bool SHIELD_active = true;
13+
uniform float SHIELD_ring_radius : hint_range(0.1, 0.5, 0.01) = 0.4;
14+
uniform float SHIELD_thickness_scalar : hint_range(0.0, 1, 0.05) = 0.7;
15+
uniform float SHIELD_oscillation_scalar : hint_range(0.0, 0.25, 0.005) = 0.025;
16+
uniform float SHIELD_speed : hint_range(0.0, 50.0, 0.1) = 2.0;
17+
uniform vec4 SHIELD_main_color : source_color = vec4(0.0,0.5,0.0,1.0);
18+
uniform vec4 SHIELD_lerp_color : source_color = vec4(0.0,1.0,0.0,1.0);
19+
float SHIELD_range_lerp(float value, float min1, float min2, float max1, float max2){
20+
return min2 + (max2 - min2) * ((value - min1) / (max1 - min1));
21+
}
22+
void shield(in vec2 uv, in sampler2D sampler, vec2 size, vec2 pixelSize, inout vec4 color){
23+
// Calculate the distance between the current pixel and the center of the unit
24+
float dist = distance(uv, vec2(0.5, 0.5));
25+
26+
// Add a slight oscillation to the size of the ring
27+
float o = cos(TIME * SHIELD_speed) - sin(TIME*SHIELD_speed)*dist*SHIELD_speed;
28+
float ring_size = SHIELD_ring_radius + o * SHIELD_oscillation_scalar;
29+
30+
// Solve for ring alpha channel
31+
float alpha = step(dist, ring_size) * smoothstep(ring_size * (1.0 - SHIELD_thickness_scalar), ring_size, dist);
32+
33+
// Solve w mix amount for optional color lerping
34+
float w = SHIELD_range_lerp(o, -1.0, 1.0, 1.0, 0.0);
35+
36+
// Output the final color
37+
if(alpha>0.){
38+
vec4 newColor = vec4(mix(SHIELD_main_color.rgb, SHIELD_lerp_color.rgb, w), alpha );
39+
if(color.a > 0.){
40+
color = color * mix(newColor, color, 2.*color.a);
41+
}else{
42+
color = newColor;
43+
}
44+
}
45+
}
46+
uniform bool HOLOGRAM_active = true;
47+
uniform float HOLOGRAM_mix : hint_range(0, 1, .1) = 0;
48+
uniform int HOLOGRAM_lines = 100;
49+
uniform vec4 HOLOGRAM_color1 : source_color = vec4(0.0, 0.0, 1.0, 1.0);
50+
uniform vec4 HOLOGRAM_color2 : source_color = vec4(1.0, 0.0, 0.0, 1.0);
51+
uniform float HOLOGRAM_speed : hint_range(0.0, 2.0, 0.01) = 0.4;
52+
uniform float HOLOGRAM_alpha : hint_range(0.0, 1.0, 0.01) = 0.5;
53+
uniform float HOLOGRAM_noise_amount : hint_range(0.0, 1.0, 0.01) = 0.05;
54+
uniform float HOLOGRAM_effect_factor : hint_range(0.0, 1.0, 0.01) = 0.4;
55+
void HOLOGRAM_noise(in vec2 uv, inout vec4 color) {
56+
float a = fract(sin(dot(uv, vec2(12.9898, 78.233) * TIME)) * 438.5453) * 1.9;
57+
color.rgb = mix(color.rgb, vec3(a), HOLOGRAM_noise_amount);
58+
}
59+
vec4 HOLOGRAM_color_shift(in vec2 uv, in sampler2D image, vec2 shift_vector) {
60+
return texture(image, uv - shift_vector);
61+
}
62+
void hologram(in vec2 uv, in sampler2D txt, in vec2 size, in vec2 pixelSize, inout vec4 finalColor){
63+
float lineN = floor((uv.y - TIME*HOLOGRAM_speed) * float(HOLOGRAM_lines));
64+
float line_grade = abs(sin(lineN*PI/4.0));
65+
float smooth_line_grade = abs(sin((uv.y - TIME*HOLOGRAM_speed) * float(HOLOGRAM_lines)));
66+
67+
vec4 line_color = mix(HOLOGRAM_color1, HOLOGRAM_color2, line_grade);
68+
69+
// change the "240.0" literal to control line color shifting
70+
finalColor = mix(HOLOGRAM_color_shift(uv, txt, vec2(1.0, 0.0)*smooth_line_grade/240.0*HOLOGRAM_effect_factor), finalColor, HOLOGRAM_mix);
71+
72+
HOLOGRAM_noise(uv, finalColor);
73+
74+
finalColor.rgb = mix(finalColor.rgb, line_color.rgb, HOLOGRAM_effect_factor);
75+
finalColor.a = HOLOGRAM_alpha * finalColor.a * line_color.a;
76+
}
77+
78+
uniform bool PULSE_active = true; //activation
79+
uniform vec4 PULSE_shine_color : source_color = vec4(1.0); //Shine color
80+
uniform float PULSE_alpha_limit : hint_range(0.0, 1.0, 0.1) = 0.0; //Alpha color limit to apply the shine, for example, if you won't to apply the shine to semi-transparent pixels
81+
uniform float PULSE_cycle_speed : hint_range(0.0, 100.0, 0.1) = 1.0; //Pulse cycle speed
82+
uniform bool PULSE_full_pulse_cycle = false; //[False = Do the effect and make a pause] [True = Do the effect continuosly]
83+
void pulse(in vec2 uv, in sampler2D tex, in vec2 spriteSize, in vec2 pixelSize, inout vec4 color)
84+
{
85+
//Check the pixel alpha value
86+
if (color.a >= PULSE_alpha_limit)
87+
{
88+
float cycle = sin(TIME * PULSE_cycle_speed);
89+
color.rgb = mix(color.rgb, PULSE_shine_color.rgb, (((cycle >= 0.0) || (PULSE_full_pulse_cycle)) ? abs(cycle) : 0.0) * PULSE_shine_color.a);
90+
}
91+
}
92+
93+
void fragment() {
94+
vec4 color = texture(TEXTURE, UV);
95+
vec2 size = vec2(textureSize(TEXTURE, 0));
96+
vec2 uv = UV;
97+
vec2 screen_uv = SCREEN_UV;
98+
99+
if(SHIELD_active) shield(uv, TEXTURE, size, TEXTURE_PIXEL_SIZE, color);
100+
if(HOLOGRAM_active) hologram(uv, TEXTURE, size, TEXTURE_PIXEL_SIZE, color);
101+
if(PULSE_active) pulse(uv, TEXTURE, size, TEXTURE_PIXEL_SIZE, color);
102+
103+
104+
COLOR=color;
105+
}
106+
107+
void vertex() {
108+
109+
}

demo/assets/shaders/example2.gdshader

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
//ATTENTION:
2+
// THIS IS SHADE AUTOGENERATED BY
3+
// THE ADDON SPRITE-SHADER-MIXER
4+
// ANY MANUAL CHANGES WILL BE REMOVED WHEN THE ADDON
5+
// UPDATES THIS SHADER.
6+
// ANYWAY, YOU CAN SAVE THE CURRENT VERSION AS A RESOURCE FILE.
7+
//SHADERS:Gold,Teleport,Shadow,
8+
shader_type canvas_item;
9+
10+
11+
//GOLD
12+
uniform bool GOLD_active = true;
13+
uniform float GOLD_offset: hint_range(0, 100) = 0;
14+
uniform float GOLD_speed : hint_range(0, 10) = 1;
15+
uniform float GOLD_mix : hint_range(0,1)=0;
16+
float gold_calc_luminance(vec3 color)
17+
{
18+
return dot(color, vec3( 0.299, 0.587, 0.114));
19+
}
20+
float gold_mark_light(vec2 uv, float value)
21+
{
22+
vec2 co = uv * 5.0;
23+
float n = sin(value + co.x) + sin(value - co.x) + sin(value + co.y) + sin(value + 2.5 * co.y);
24+
return fract((5.0 + n) / 5.0);
25+
}
26+
void gold(in vec2 uv, in sampler2D txt, in vec2 spriteSize, in vec2 pixelSize, inout vec4 finalColor)
27+
{
28+
float value = GOLD_offset + TIME * GOLD_speed;
29+
vec4 txt_color = texture(txt, uv);
30+
float luminance = gold_calc_luminance(txt_color.rbg);
31+
vec3 metal = vec3(luminance);
32+
metal.r = luminance * pow(1.5 * luminance, 3.0);
33+
metal.g = luminance * pow(1.5 * luminance, 3.0);
34+
metal.b = luminance * pow(0.75 * luminance, 3.0);
35+
36+
float n = gold_mark_light(uv, value);
37+
n += dot(txt_color.rbg, vec3(0.2, 0.4, 0.2));
38+
n = fract(n);
39+
40+
float a = clamp(abs(n * 6.0 - 2.0), 0.0, 1.0);
41+
vec4 color = vec4(metal.rgb + (1.0 - a), 1.0);
42+
color.rgb = color.rgb * 0.5 + dot(color.rgb, vec3 (0.113, 0.455, 0.172)) - vec3(0.0, 0.1, 0.6) + 0.025;
43+
color.a = txt_color.a;
44+
finalColor = mix(color, finalColor, GOLD_mix);
45+
}
46+
47+
48+
//TELEPORT
49+
uniform bool TELEPORT_active = true;
50+
uniform float TELEPORT_progress : hint_range(0.0, 1.0);
51+
uniform float TELEPORT_noise_desnity:hint_range(0.0, 500.0, 0.1) = 60;
52+
uniform float TELEPORT_beam_size : hint_range(0.01, 0.15);
53+
uniform vec4 TELEPORT_color : source_color = vec4(0.0, 1.02, 1.2, 1.0);
54+
vec2 TELEPORT_random(vec2 uv){
55+
uv = vec2( dot(uv, vec2(127.1,311.7) ),
56+
dot(uv, vec2(269.5,183.3) ) );
57+
return -1.0 + 2.0 * fract(sin(uv) * 43758.5453123);
58+
}
59+
float TELEPORT_noise(vec2 uv) {
60+
vec2 uv_index = floor(uv);
61+
vec2 uv_fract = fract(uv);
62+
63+
vec2 blur = smoothstep(0.0, 1.0, uv_fract);
64+
65+
return mix( mix( dot( TELEPORT_random(uv_index + vec2(0.0,0.0) ), uv_fract - vec2(0.0,0.0) ),
66+
dot( TELEPORT_random(uv_index + vec2(1.0,0.0) ), uv_fract - vec2(1.0,0.0) ), blur.x),
67+
mix( dot( TELEPORT_random(uv_index + vec2(0.0,1.0) ), uv_fract - vec2(0.0,1.0) ),
68+
dot( TELEPORT_random(uv_index + vec2(1.0,1.0) ), uv_fract - vec2(1.0,1.0) ), blur.x), blur.y) * 0.5 + 0.5;
69+
}
70+
void teleport(in vec2 uv, in sampler2D txt, vec2 size, vec2 pixelSize, inout vec4 color)
71+
{
72+
float noise = TELEPORT_noise(uv * TELEPORT_noise_desnity) * uv.y;
73+
74+
float d1 = step(TELEPORT_progress, noise);
75+
float d2 = step(TELEPORT_progress - TELEPORT_beam_size, noise);
76+
77+
vec3 beam = vec3(d2 - d1) * color.rgb;
78+
79+
color.rgb += beam;
80+
color.a *= d2;
81+
}
82+
//SHADOW
83+
uniform bool SHADOW_active = true;
84+
uniform vec2 SHADOW_deform = vec2(0.0, 0.0);
85+
uniform vec2 SHADOW_offset = vec2(20.0, 20.0);
86+
uniform vec4 SHADOW_modulate : source_color;
87+
uniform float SHADOW_mix : hint_range(0,1) = 0;
88+
void shadow(in vec2 uv, in sampler2D txt, in vec2 size, in vec2 texturePixelSize, inout vec4 color) {
89+
float sizex = float(textureSize(txt,int(texturePixelSize.x)).x); //comment for GLES2
90+
float sizey = float(textureSize(txt,int(texturePixelSize.y)).y); //comment for GLES2
91+
//float sizex = texture_size.x; //uncomment for GLES2
92+
//float sizey = texture_size.y; //uncomment for GLES2
93+
uv.y+=SHADOW_offset.y*texturePixelSize.y;
94+
uv.x+=SHADOW_offset.x*texturePixelSize.x;
95+
float decalx=((uv.y-texturePixelSize.x*sizex)*SHADOW_deform.x);
96+
float decaly=((uv.y-texturePixelSize.y*sizey)*SHADOW_deform.y);
97+
uv.x += decalx;
98+
uv.y += decaly;
99+
vec4 shadow = vec4(SHADOW_modulate.rgb, texture(txt, uv).a * SHADOW_modulate.a * 0.5);
100+
color =mix(mix(shadow, color, color.a), color, SHADOW_mix);
101+
}
102+
103+
104+
void fragment() {
105+
vec4 color = texture(TEXTURE, UV);
106+
vec2 size = vec2(textureSize(TEXTURE, 0));
107+
vec2 uv = UV;
108+
vec2 screen_uv = SCREEN_UV;
109+
110+
if(GOLD_active) gold(uv, TEXTURE, size, TEXTURE_PIXEL_SIZE, color);
111+
if(TELEPORT_active) teleport(uv, TEXTURE, size, TEXTURE_PIXEL_SIZE, color);
112+
if(SHADOW_active) shadow(uv, TEXTURE, size, TEXTURE_PIXEL_SIZE, color);
113+
114+
115+
COLOR=color;
116+
}
117+
118+
void vertex() {
119+
120+
}

0 commit comments

Comments
 (0)