Initial Commit - 1.0.0k
This commit is contained in:
BIN
resources/.DS_Store
vendored
Normal file
BIN
resources/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
resources/fonts/GoNotoCJKCore.ttf
Normal file
BIN
resources/fonts/GoNotoCJKCore.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/GoNotoCurrent-Bold.ttf
Normal file
BIN
resources/fonts/GoNotoCurrent-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/NotoSans-Bold.ttf
Normal file
BIN
resources/fonts/NotoSans-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/NotoSansJP-Bold.ttf
Normal file
BIN
resources/fonts/NotoSansJP-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/NotoSansKR-Bold.ttf
Normal file
BIN
resources/fonts/NotoSansKR-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/NotoSansSC-Bold.ttf
Normal file
BIN
resources/fonts/NotoSansSC-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/NotoSansTC-Bold.ttf
Normal file
BIN
resources/fonts/NotoSansTC-Bold.ttf
Normal file
Binary file not shown.
BIN
resources/fonts/m6x11plus.ttf
Normal file
BIN
resources/fonts/m6x11plus.ttf
Normal file
Binary file not shown.
1515
resources/gamecontrollerdb.txt
Normal file
1515
resources/gamecontrollerdb.txt
Normal file
File diff suppressed because it is too large
Load Diff
154
resources/shaders/CRT.fs
Normal file
154
resources/shaders/CRT.fs
Normal file
@@ -0,0 +1,154 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 distortion_fac;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 scale_fac;
|
||||
extern MY_HIGHP_OR_MEDIUMP number feather_fac;
|
||||
extern MY_HIGHP_OR_MEDIUMP number noise_fac;
|
||||
extern MY_HIGHP_OR_MEDIUMP number bloom_fac;
|
||||
extern MY_HIGHP_OR_MEDIUMP number crt_intensity;
|
||||
extern MY_HIGHP_OR_MEDIUMP number glitch_intensity;
|
||||
extern MY_HIGHP_OR_MEDIUMP number scanlines;
|
||||
|
||||
#define BUFF 0.01
|
||||
#define BLOOM_AMT 3
|
||||
|
||||
vec4 effect(vec4 color, Image tex, vec2 tc, vec2 pc)
|
||||
{
|
||||
//Keep the original texture coords
|
||||
vec2 orig_tc = tc;
|
||||
|
||||
//recenter
|
||||
tc = tc*2.0 - vec2(1.0);
|
||||
tc *= scale_fac;
|
||||
|
||||
//bulge from middle
|
||||
tc += (tc.yx*tc.yx) * tc * (distortion_fac - 1.0);
|
||||
|
||||
//smoothly transition the edge to black
|
||||
//buffer for the outer edge, this gets wonky if there is no buffer
|
||||
number mask = (1.0 - smoothstep(1.0-feather_fac,1.0,abs(tc.x) - BUFF))
|
||||
* (1.0 - smoothstep(1.0-feather_fac,1.0,abs(tc.y) - BUFF));
|
||||
|
||||
//undo the recenter
|
||||
tc = (tc + vec2(1.0))/2.0;
|
||||
|
||||
//Create the horizontal glitch offset effects
|
||||
number offset_l = 0.;
|
||||
number offset_r = 0.;
|
||||
if(glitch_intensity > 0.01){
|
||||
number timefac = 3.0*time;
|
||||
offset_l = 50.0*(-3.5+sin(timefac*0.512 + tc.y*40.0)
|
||||
+ sin(-timefac*0.8233 + tc.y*81.532)
|
||||
+ sin(timefac*0.333 + tc.y*30.3)
|
||||
+ sin(-timefac*0.1112331 + tc.y*13.0));
|
||||
offset_r = -50.0*(-3.5+sin(timefac*0.6924 + tc.y*29.0)
|
||||
+ sin(-timefac*0.9661 + tc.y*41.532)
|
||||
+ sin(timefac*0.4423 + tc.y*40.3)
|
||||
+ sin(-timefac*0.13321312 + tc.y*11.0));
|
||||
|
||||
if(glitch_intensity > 1.0){
|
||||
offset_l = 50.0*(-1.5+sin(timefac*0.512 + tc.y*4.0)
|
||||
+ sin(-timefac*0.8233 + tc.y*1.532)
|
||||
+ sin(timefac*0.333 + tc.y*3.3)
|
||||
+ sin(-timefac*0.1112331 + tc.y*1.0));
|
||||
offset_r = -50.0*(-1.5+sin(timefac*0.6924 + tc.y*19.0)
|
||||
+ sin(-timefac*0.9661 + tc.y*21.532)
|
||||
+ sin(timefac*0.4423 + tc.y*20.3)
|
||||
+ sin(-timefac*0.13321312 + tc.y*5.0));
|
||||
}
|
||||
tc.x = tc.x + 0.001*glitch_intensity*clamp(offset_l, clamp(offset_r, -1.0, 0.0), 1.0);
|
||||
}
|
||||
|
||||
//Apply mask and bulging effect
|
||||
vec4 crt_tex = Texel( tex, tc);
|
||||
|
||||
//intensity multiplier for any visual artifacts
|
||||
float artifact_amplifier = (abs(clamp(offset_l, clamp(offset_r, -1.0, 0.0), 1.0))*glitch_intensity > 0.9 ? 3. : 1.);
|
||||
|
||||
//Horizontal Chromatic Aberration
|
||||
float crt_amout_adjusted = (max(0., (crt_intensity)/(0.16*0.3)))*artifact_amplifier;
|
||||
if(crt_amout_adjusted > 0.0000001) {
|
||||
crt_tex.r = crt_tex.r*(1.-crt_amout_adjusted) + crt_amout_adjusted*Texel( tex, tc + vec2(0.0005*(1. +10.*(artifact_amplifier - 1.))*1600./love_ScreenSize.x, 0.)).r;
|
||||
crt_tex.g = crt_tex.g*(1.-crt_amout_adjusted) + crt_amout_adjusted*Texel( tex, tc + vec2(-0.0005*(1. +10.*(artifact_amplifier - 1.))*1600./love_ScreenSize.x, 0.)).g;
|
||||
}
|
||||
vec3 rgb_result = crt_tex.rgb*(1.0 - (1.0*crt_intensity*artifact_amplifier));
|
||||
|
||||
//post processing on the glitch effect to amplify green or red for a few lines of pixels
|
||||
if (sin(time + tc.y*200.0) > 0.85) {
|
||||
if (offset_l < 0.99 && offset_l > 0.01) rgb_result.r = rgb_result.g*1.5;
|
||||
if (offset_r > -0.99 && offset_r < -0.01) rgb_result.g = rgb_result.r*1.5;
|
||||
}
|
||||
|
||||
//Add the pixel scanline overlay, a repeated 'pixel' mask that doesn't actually render the real image. If these pixels were used to render the image it would be too harsh
|
||||
vec3 rgb_scanline = 1.0*vec3(
|
||||
clamp(-0.3+2.0*sin( tc.y * scanlines-3.14/4.0) - 0.8*clamp(sin( tc.x*scanlines*4.0), 0.4, 1.0), -1.0, 2.0),
|
||||
clamp(-0.3+2.0*cos( tc.y * scanlines) - 0.8*clamp(cos( tc.x*scanlines*4.0), 0.0, 1.0), -1.0, 2.0),
|
||||
clamp(-0.3+2.0*cos( tc.y * scanlines -3.14/3.0) - 0.8*clamp(cos( tc.x*scanlines*4.0-3.14/4.0), 0.0, 1.0), -1.0, 2.0));
|
||||
|
||||
rgb_result += crt_tex.rgb * rgb_scanline * crt_intensity * artifact_amplifier;
|
||||
|
||||
//Add in some noise
|
||||
number x = (tc.x - mod(tc.x, 0.002)) * (tc.y - mod(tc.y, 0.0013)) * time * 1000.0;
|
||||
x = mod( x, 13.0 ) * mod( x, 123.0 );
|
||||
number dx = mod( x, 0.11 )/0.11;
|
||||
rgb_result = (1.0-clamp( noise_fac*artifact_amplifier, 0.0,1.0 ))*rgb_result + dx * clamp( noise_fac*artifact_amplifier, 0.0,1.0 ) * vec3(1.0,1.0,1.0);
|
||||
|
||||
//contrast and brightness correction for the CRT effect, also adjusting brightness for bloom
|
||||
rgb_result -= vec3(0.55 - 0.02*(artifact_amplifier - 1. - crt_amout_adjusted*bloom_fac*0.7));
|
||||
rgb_result = rgb_result*(1.0 + 0.14 + crt_amout_adjusted*(0.012 - bloom_fac*0.12));
|
||||
rgb_result += vec3(0.5);
|
||||
|
||||
//Prepare the final colour to return
|
||||
vec4 final_col = vec4( rgb_result*1.0, 1.0 );
|
||||
|
||||
//Finally apply bloom
|
||||
vec4 col = vec4(0.0);
|
||||
float bloom = 0.0;
|
||||
|
||||
if (bloom_fac > 0.00001 && crt_intensity > 0.000001){
|
||||
bloom = 0.03*(max(0., (crt_intensity)/(0.16*0.3)));
|
||||
float bloom_dist = 0.0015*float(BLOOM_AMT);
|
||||
vec4 samp;
|
||||
float cutoff = 0.6;
|
||||
|
||||
for (int i = -BLOOM_AMT; i <= BLOOM_AMT; ++i)
|
||||
for (int j = -BLOOM_AMT; j <= BLOOM_AMT; ++j){
|
||||
samp = Texel( tex, tc + (bloom_dist/float(BLOOM_AMT))*vec2(float(i), float(j)));
|
||||
samp.r = max(1./(1.-cutoff)*samp.r - 1./(1.-cutoff) + 1., 0.);
|
||||
samp.g = max(1./(1.-cutoff)*samp.g - 1./(1.-cutoff) + 1., 0.);
|
||||
samp.b = max(1./(1.-cutoff)*samp.b - 1./(1.-cutoff) + 1., 0.);
|
||||
col += min(min(samp.r,samp.g),samp.b) * (2. - float(abs(float(i+j)))/float(BLOOM_AMT+BLOOM_AMT));
|
||||
}
|
||||
|
||||
col /= float(BLOOM_AMT*BLOOM_AMT);
|
||||
col.a = final_col.a;
|
||||
}
|
||||
|
||||
return (final_col*(1. -1.*bloom) + bloom*col)*mask;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef VERTEX
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.002*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
46
resources/shaders/background.fs
Normal file
46
resources/shaders/background.fs
Normal file
@@ -0,0 +1,46 @@
|
||||
extern number time;
|
||||
extern number spin_time;
|
||||
extern vec4 colour_1;
|
||||
extern vec4 colour_2;
|
||||
extern vec4 colour_3;
|
||||
extern number contrast;
|
||||
extern number spin_amount;
|
||||
|
||||
#define PIXEL_SIZE_FAC 700.
|
||||
#define SPIN_EASE 0.5
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
//Convert to UV coords (0-1) and floor for pixel effect
|
||||
number pixel_size = length(love_ScreenSize.xy)/PIXEL_SIZE_FAC;
|
||||
vec2 uv = (floor(screen_coords.xy*(1./pixel_size))*pixel_size - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy) - vec2(0.12, 0.);
|
||||
number uv_len = length(uv);
|
||||
|
||||
//Adding in a center swirl, changes with time. Only applies meaningfully if the 'spin amount' is a non-zero number
|
||||
number speed = (spin_time*SPIN_EASE*0.2) + 302.2;
|
||||
number new_pixel_angle = (atan(uv.y, uv.x)) + speed - SPIN_EASE*20.*(1.*spin_amount*uv_len + (1. - 1.*spin_amount));
|
||||
vec2 mid = (love_ScreenSize.xy/length(love_ScreenSize.xy))/2.;
|
||||
uv = (vec2((uv_len * cos(new_pixel_angle) + mid.x), (uv_len * sin(new_pixel_angle) + mid.y)) - mid);
|
||||
|
||||
//Now add the paint effect to the swirled UV
|
||||
uv *= 30.;
|
||||
speed = time*(2.);
|
||||
vec2 uv2 = vec2(uv.x+uv.y);
|
||||
|
||||
for(int i=0; i < 5; i++) {
|
||||
uv2 += sin(max(uv.x, uv.y)) + uv;
|
||||
uv += 0.5*vec2(cos(5.1123314 + 0.353*uv2.y + speed*0.131121),sin(uv2.x - 0.113*speed));
|
||||
uv -= 1.0*cos(uv.x + uv.y) - 1.0*sin(uv.x*0.711 - uv.y);
|
||||
}
|
||||
|
||||
//Make the paint amount range from 0 - 2
|
||||
number contrast_mod = (0.25*contrast + 0.5*spin_amount + 1.2);
|
||||
number paint_res =min(2., max(0.,length(uv)*(0.035)*contrast_mod));
|
||||
number c1p = max(0.,1. - contrast_mod*abs(1.-paint_res));
|
||||
number c2p = max(0.,1. - contrast_mod*abs(paint_res));
|
||||
number c3p = 1. - min(1., c1p + c2p);
|
||||
|
||||
vec4 ret_col = (0.3/contrast)*colour_1 + (1. - 0.3/contrast)*(colour_1*c1p + colour_2*c2p + vec4(c3p*colour_3.rgb, c3p*colour_1.a));
|
||||
|
||||
return ret_col;
|
||||
}
|
98
resources/shaders/booster.fs
Normal file
98
resources/shaders/booster.fs
Normal file
@@ -0,0 +1,98 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 booster;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel( texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
number low = min(tex.r, min(tex.g, tex.b));
|
||||
number high = max(tex.r, max(tex.g, tex.b));
|
||||
number delta = max(high-low, low*0.7);
|
||||
|
||||
number fac = 0.8 + 0.9*sin(13.*uv.x+5.32*uv.y + booster.r*12. + cos(booster.r*5.3 + uv.y*4.2 - uv.x*4.));
|
||||
number fac2 = 0.5 + 0.5*sin(10.*uv.x+2.32*uv.y + booster.r*5. - cos(booster.r*2.3 + uv.x*8.2));
|
||||
number fac3 = 0.5 + 0.5*sin(12.*uv.x+6.32*uv.y + booster.r*6.111 + sin(booster.r*5.3 + uv.y*3.2));
|
||||
number fac4 = 0.5 + 0.5*sin(4.*uv.x+2.32*uv.y + booster.r*8.111 + sin(booster.r*1.3 + uv.y*13.2));
|
||||
number fac5 = sin(0.5*16.*uv.x+5.32*uv.y + booster.r*12. + cos(booster.r*5.3 + uv.y*4.2 - uv.x*4.));
|
||||
|
||||
number maxfac = 0.6*max(max(fac, max(fac2, max(fac3,0.0))) + (fac+fac2+fac3*fac4), 0.);
|
||||
|
||||
tex.rgb = tex.rgb*0.5 + vec3(0.4, 0.4, 0.8);
|
||||
|
||||
tex.r = tex.r-delta + delta*maxfac*(0.7 + fac5*0.07) - 0.1;
|
||||
tex.g = tex.g-delta + delta*maxfac*(0.7 - fac5*0.17) - 0.1;
|
||||
tex.b = tex.b-delta + delta*maxfac*0.7 - 0.1;
|
||||
tex.a = tex.a*(0.8*max(min(1., max(0.,0.3*max(low*0.2, delta)+ min(max(maxfac*0.1,0.), 0.4)) ), 0.) + 0.15*maxfac*(0.1+delta));
|
||||
|
||||
return dissolve_mask(tex*colour, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
149
resources/shaders/debuff.fs
Normal file
149
resources/shaders/debuff.fs
Normal file
@@ -0,0 +1,149 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 debuff;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
number hue(number s, number t, number h)
|
||||
{
|
||||
number hs = mod(h, 1.)*6.;
|
||||
if (hs < 1.) return (t-s) * hs + s;
|
||||
if (hs < 3.) return t;
|
||||
if (hs < 4.) return (t-s) * (4.-hs) + s;
|
||||
return s;
|
||||
}
|
||||
|
||||
vec4 RGB(vec4 c)
|
||||
{
|
||||
if (c.y == 0.)
|
||||
return vec4(vec3(c.z), c.a);
|
||||
|
||||
number t = (c.z < .5) ? c.y*c.z + c.z : -c.y*c.z + (c.y+c.z);
|
||||
number s = 2.0 * c.z - t;
|
||||
return vec4(hue(s,t,c.x + 1./3.), hue(s,t,c.x), hue(s,t,c.x - 1./3.), c.w);
|
||||
}
|
||||
|
||||
vec4 HSL(vec4 c)
|
||||
{
|
||||
number low = min(c.r, min(c.g, c.b));
|
||||
number high = max(c.r, max(c.g, c.b));
|
||||
number delta = high - low;
|
||||
number sum = high+low;
|
||||
|
||||
vec4 hsl = vec4(.0, .0, .5 * sum, c.a);
|
||||
if (delta == .0)
|
||||
return hsl;
|
||||
|
||||
hsl.y = (hsl.z < .5) ? delta / sum : delta / (2.0 - sum);
|
||||
|
||||
if (high == c.r)
|
||||
hsl.x = (c.g - c.b) / delta;
|
||||
else if (high == c.g)
|
||||
hsl.x = (c.b - c.r) / delta + 2.0;
|
||||
else
|
||||
hsl.x = (c.r - c.g) / delta + 4.0;
|
||||
|
||||
hsl.x = mod(hsl.x / 6., 1.);
|
||||
return hsl;
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel(texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
vec4 SAT = HSL(tex*0.8 + 0.2*vec4(1., 0., 0., tex.a));
|
||||
SAT.g = 0.5;
|
||||
|
||||
number width = 0.0;
|
||||
|
||||
if (debuff.g > 0.0 || debuff.g < 0.0) {
|
||||
width = 0.1;
|
||||
}
|
||||
bool test = false;
|
||||
if ((uv.x+uv.y > 1. - width && uv.x+uv.y < 1. + width) || ((1.-uv.x)+uv.y > 1. - width && (1.-uv.x)+uv.y < 1. + width))
|
||||
{
|
||||
test = true;
|
||||
SAT.r = 1.;
|
||||
SAT.g = 0.7;
|
||||
SAT.b = 0.8*SAT.b;
|
||||
} else{
|
||||
SAT.g = SAT.g*0.5;
|
||||
SAT.b = SAT.b*0.7;
|
||||
}
|
||||
|
||||
|
||||
tex = RGB(SAT);
|
||||
if (!test){
|
||||
tex.a = tex.a*0.3;
|
||||
}
|
||||
|
||||
return dissolve_mask(tex*colour, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
86
resources/shaders/dissolve.fs
Normal file
86
resources/shaders/dissolve.fs
Normal file
@@ -0,0 +1,86 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel( texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
if (!shadow && dissolve > 0.01){
|
||||
if (burn_colour_2.a > 0.01){
|
||||
tex.rgb = tex.rgb*(1.-0.6*dissolve) + 0.6*burn_colour_2.rgb*dissolve;
|
||||
} else if (burn_colour_1.a > 0.01){
|
||||
tex.rgb = tex.rgb*(1.-0.6*dissolve) + 0.6*burn_colour_1.rgb*dissolve;
|
||||
}
|
||||
}
|
||||
|
||||
return dissolve_mask(tex, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
69
resources/shaders/flame.fs
Normal file
69
resources/shaders/flame.fs
Normal file
@@ -0,0 +1,69 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP float time;
|
||||
extern MY_HIGHP_OR_MEDIUMP float amount;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 colour_2;
|
||||
extern MY_HIGHP_OR_MEDIUMP float id;
|
||||
|
||||
#define PIXEL_SIZE_FAC 60.
|
||||
#define WHITE vec4(1.,1.,1.,1.)
|
||||
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
float intensity = 1.0*min(10.,amount);
|
||||
if(intensity < 0.1){
|
||||
return vec4(0.,0.,0.,0.);
|
||||
}
|
||||
|
||||
//Convert to UV coords (0-1) and floor for pixel effect
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba - 0.5;
|
||||
vec2 floored_uv = (floor((uv*PIXEL_SIZE_FAC)))/PIXEL_SIZE_FAC;
|
||||
vec2 uv_scaled_centered = (floored_uv);
|
||||
uv_scaled_centered += uv_scaled_centered*0.01*(sin(-1.123*floored_uv.x + 0.2*time)*cos(5.3332*floored_uv.y + time*0.931));
|
||||
vec2 flame_up_vec = vec2(0., mod(4.*time, 10000.) - 5000. + mod(1.781*id, 1000.) );
|
||||
|
||||
float scale_fac = (7.5 + 3./(2. + 2.*intensity));
|
||||
vec2 sv = uv_scaled_centered*scale_fac + flame_up_vec;
|
||||
float speed = mod(20.781*id, 100.) + 1.*sin(time+id)*cos(time*0.151+id);
|
||||
vec2 sv2 = vec2(0.,0.);
|
||||
|
||||
for(int i=0; i < 5; i++) {
|
||||
sv2 += sv + 0.05*sv2.yx*(mod(float(i), 2.)>1.?-1.:1.) + 0.3*(cos(length(sv)*0.411) + 0.3344*sin(length(sv)) - 0.23*cos(length(sv)));
|
||||
sv += 0.5*vec2(
|
||||
cos(cos(sv2.y) + speed*0.0812)*sin(3.22 + (sv2.x) - speed*0.1531),
|
||||
sin(-sv2.x*1.21222 + 0.113785*speed)*cos(sv2.y*0.91213 - 0.13582*speed));
|
||||
}
|
||||
|
||||
//Make the smoke amount range from 0 - 2
|
||||
float smoke_res = max(0.,((length((sv - flame_up_vec)/scale_fac*5.)+ 0.1*(length(uv_scaled_centered) - 0.5))*(2./(2.+ intensity*0.2)))) ;
|
||||
smoke_res = intensity < 0.1 ? 1.: smoke_res + max(0., 2. - 0.3*intensity)*max(0., 2.*(uv_scaled_centered.y - 0.5)*(uv_scaled_centered.y - 0.5));
|
||||
|
||||
if(abs(uv.x) > 0.4){
|
||||
smoke_res = smoke_res + 10.*(abs(uv.x) - 0.4);
|
||||
}
|
||||
if(length((uv - vec2(0., 0.1))*vec2(0.19, 1.)) < min(0.1, intensity*0.5) && smoke_res > 1.){
|
||||
smoke_res = smoke_res + min(8.5,intensity*10.)*(length((uv - vec2(0., 0.1))*vec2(0.19, 1.))-0.1);
|
||||
}
|
||||
|
||||
vec4 ret_col = colour_1;
|
||||
if(smoke_res > 1.){
|
||||
ret_col.a = 0.;
|
||||
}else{
|
||||
if( uv.y < 0.12){
|
||||
ret_col = ret_col*(1. - 0.5*(0.12 - uv.y)) + 2.5*(0.12 - uv.y)*colour_2;
|
||||
ret_col += ret_col*(-2.+0.5*intensity*smoke_res)*(0.12 - uv.y);
|
||||
}
|
||||
ret_col.a = 1.;
|
||||
}
|
||||
|
||||
return ret_col;
|
||||
}
|
23
resources/shaders/flash.fs
Normal file
23
resources/shaders/flash.fs
Normal file
@@ -0,0 +1,23 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP number mid_flash;
|
||||
|
||||
#define PIXEL_SIZE_FAC 700.
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
//Convert to UV coords (0-1) and floor for pixel effect
|
||||
number pixel_size = length(love_ScreenSize.xy)/PIXEL_SIZE_FAC;
|
||||
vec2 uv = (floor(screen_coords.xy*(1./pixel_size))*pixel_size - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
|
||||
float mid_white = min(1.,(time > 2.5 ? max(0., sqrt(time - 2.5) - 60.*length(uv)) : 0.)
|
||||
+ (time > 11. ? max(0., (time-11.)*(time-11.) - 5.*length(uv)) : 0.));
|
||||
|
||||
return vec4(1., 1., 1., mid_flash*mid_white);
|
||||
}
|
143
resources/shaders/foil.fs
Normal file
143
resources/shaders/foil.fs
Normal file
@@ -0,0 +1,143 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 foil;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
number hue(number s, number t, number h)
|
||||
{
|
||||
number hs = mod(h, 1.)*6.;
|
||||
if (hs < 1.) return (t-s) * hs + s;
|
||||
if (hs < 3.) return t;
|
||||
if (hs < 4.) return (t-s) * (4.-hs) + s;
|
||||
return s;
|
||||
}
|
||||
|
||||
vec4 RGB(vec4 c)
|
||||
{
|
||||
if (c.y < 0.0001)
|
||||
return vec4(vec3(c.z), c.a);
|
||||
|
||||
number t = (c.z < .5) ? c.y*c.z + c.z : -c.y*c.z + (c.y+c.z);
|
||||
number s = 2.0 * c.z - t;
|
||||
return vec4(hue(s,t,c.x + 1./3.), hue(s,t,c.x), hue(s,t,c.x - 1./3.), c.w);
|
||||
}
|
||||
|
||||
vec4 HSL(vec4 c)
|
||||
{
|
||||
number low = min(c.r, min(c.g, c.b));
|
||||
number high = max(c.r, max(c.g, c.b));
|
||||
number delta = high - low;
|
||||
number sum = high+low;
|
||||
|
||||
vec4 hsl = vec4(.0, .0, .5 * sum, c.a);
|
||||
if (delta == .0)
|
||||
return hsl;
|
||||
|
||||
hsl.y = (hsl.z < .5) ? delta / sum : delta / (2.0 - sum);
|
||||
|
||||
if (high == c.r)
|
||||
hsl.x = (c.g - c.b) / delta;
|
||||
else if (high == c.g)
|
||||
hsl.x = (c.b - c.r) / delta + 2.0;
|
||||
else
|
||||
hsl.x = (c.r - c.g) / delta + 4.0;
|
||||
|
||||
hsl.x = mod(hsl.x / 6., 1.);
|
||||
return hsl;
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel( texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
vec2 adjusted_uv = uv - vec2(0.5, 0.5);
|
||||
adjusted_uv.x = adjusted_uv.x*texture_details.b/texture_details.a;
|
||||
|
||||
number low = min(tex.r, min(tex.g, tex.b));
|
||||
number high = max(tex.r, max(tex.g, tex.b));
|
||||
number delta = min(high, max(0.5, 1. - low));
|
||||
|
||||
number fac = max(min(2.*sin((length(90.*adjusted_uv) + foil.r*2.) + 3.*(1.+0.8*cos(length(113.1121*adjusted_uv) - foil.r*3.121))) - 1. - max(5.-length(90.*adjusted_uv), 0.), 1.), 0.);
|
||||
vec2 rotater = vec2(cos(foil.r*0.1221), sin(foil.r*0.3512));
|
||||
number angle = dot(rotater, adjusted_uv)/(length(rotater)*length(adjusted_uv));
|
||||
number fac2 = max(min(5.*cos(foil.g*0.3 + angle*3.14*(2.2+0.9*sin(foil.r*1.65 + 0.2*foil.g))) - 4. - max(2.-length(20.*adjusted_uv), 0.), 1.), 0.);
|
||||
number fac3 = 0.3*max(min(2.*sin(foil.r*5. + uv.x*3. + 3.*(1.+0.5*cos(foil.r*7.))) - 1., 1.), -1.);
|
||||
number fac4 = 0.3*max(min(2.*sin(foil.r*6.66 + uv.y*3.8 + 3.*(1.+0.5*cos(foil.r*3.414))) - 1., 1.), -1.);
|
||||
|
||||
number maxfac = max(max(fac, max(fac2, max(fac3, max(fac4, 0.0)))) + 2.2*(fac+fac2+fac3+fac4), 0.);
|
||||
|
||||
tex.r = tex.r-delta + delta*maxfac*0.3;
|
||||
tex.g = tex.g-delta + delta*maxfac*0.3;
|
||||
tex.b = tex.b + delta*maxfac*1.9;
|
||||
tex.a = min(tex.a, 0.3*tex.a + 0.9*min(0.5, maxfac*0.1));
|
||||
|
||||
return dissolve_mask(tex, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
22
resources/shaders/gold_seal.fs
Normal file
22
resources/shaders/gold_seal.fs
Normal file
@@ -0,0 +1,22 @@
|
||||
extern vec4 gold_seal;
|
||||
|
||||
vec4 effect( vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
//r controls timing
|
||||
//a controls alpha, but white will always be 1
|
||||
vec4 pixel;
|
||||
pixel = Texel(texture, texture_coords);
|
||||
number low = min(pixel.r, min(pixel.g, pixel.b));
|
||||
number high = max(pixel.r, max(pixel.g, pixel.b));
|
||||
number delta;
|
||||
delta = high*0.5;
|
||||
|
||||
number fac;
|
||||
fac = 0.3+sin((texture_coords.x*450. + sin(gold_seal.r*6.)*180.)-700.*gold_seal.r) - sin((texture_coords.x*190. + texture_coords.y*30.)+1080.3*gold_seal.r);
|
||||
|
||||
pixel.r = max(pixel.r, (1. - pixel.r)*delta*fac + pixel.r);
|
||||
pixel.g = max(pixel.g, (1. - pixel.g)*delta*fac + pixel.g);
|
||||
pixel.b = max(pixel.b, (1. - pixel.b)*delta*fac + pixel.b);
|
||||
|
||||
return pixel;
|
||||
}
|
152
resources/shaders/holo.fs
Normal file
152
resources/shaders/holo.fs
Normal file
@@ -0,0 +1,152 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 holo;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
number hue(number s, number t, number h)
|
||||
{
|
||||
number hs = mod(h, 1.)*6.;
|
||||
if (hs < 1.) return (t-s) * hs + s;
|
||||
if (hs < 3.) return t;
|
||||
if (hs < 4.) return (t-s) * (4.-hs) + s;
|
||||
return s;
|
||||
}
|
||||
|
||||
vec4 RGB(vec4 c)
|
||||
{
|
||||
if (c.y < 0.0001)
|
||||
return vec4(vec3(c.z), c.a);
|
||||
|
||||
number t = (c.z < .5) ? c.y*c.z + c.z : -c.y*c.z + (c.y+c.z);
|
||||
number s = 2.0 * c.z - t;
|
||||
return vec4(hue(s,t,c.x + 1./3.), hue(s,t,c.x), hue(s,t,c.x - 1./3.), c.w);
|
||||
}
|
||||
|
||||
vec4 HSL(vec4 c)
|
||||
{
|
||||
number low = min(c.r, min(c.g, c.b));
|
||||
number high = max(c.r, max(c.g, c.b));
|
||||
number delta = high - low;
|
||||
number sum = high+low;
|
||||
|
||||
vec4 hsl = vec4(.0, .0, .5 * sum, c.a);
|
||||
if (delta == .0)
|
||||
return hsl;
|
||||
|
||||
hsl.y = (hsl.z < .5) ? delta / sum : delta / (2.0 - sum);
|
||||
|
||||
if (high == c.r)
|
||||
hsl.x = (c.g - c.b) / delta;
|
||||
else if (high == c.g)
|
||||
hsl.x = (c.b - c.r) / delta + 2.0;
|
||||
else
|
||||
hsl.x = (c.r - c.g) / delta + 4.0;
|
||||
|
||||
hsl.x = mod(hsl.x / 6., 1.);
|
||||
return hsl;
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel(texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
vec4 hsl = HSL(0.5*tex + 0.5*vec4(0.,0.,1.,tex.a));
|
||||
|
||||
float t = holo.y*7.221 + time;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/texture_details.ba;
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 250.;
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
|
||||
float res = (.5 + .5* cos( (holo.x) * 2.612 + ( field + -.5 ) *3.14));
|
||||
|
||||
number low = min(tex.r, min(tex.g, tex.b));
|
||||
number high = max(tex.r, max(tex.g, tex.b));
|
||||
number delta = 0.2+0.3*(high- low) + 0.1*high;
|
||||
|
||||
number gridsize = 0.79;
|
||||
number fac = 0.5*max(max(max(0., 7.*abs(cos(uv.x*gridsize*20.))-6.),max(0., 7.*cos(uv.y*gridsize*45. + uv.x*gridsize*20.)-6.)), max(0., 7.*cos(uv.y*gridsize*45. - uv.x*gridsize*20.)-6.));
|
||||
|
||||
hsl.x = hsl.x + res + fac;
|
||||
hsl.y = hsl.y*1.3;
|
||||
hsl.z = hsl.z*0.6+0.4;
|
||||
|
||||
tex =(1.-delta)*tex + delta*RGB(hsl)*vec4(0.9,0.8,1.2,tex.a);
|
||||
|
||||
if (tex[3] < 0.7)
|
||||
tex[3] = tex[3]/3.;
|
||||
return dissolve_mask(tex*colour, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
129
resources/shaders/hologram.fs
Normal file
129
resources/shaders/hologram.fs
Normal file
@@ -0,0 +1,129 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 hologram;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
//Glow effect
|
||||
number glow = 0.;
|
||||
int glow_samples = 4;
|
||||
int actual_glow_samples = 0;
|
||||
number glow_dist = 0.0015;
|
||||
number _a = 0.;
|
||||
|
||||
for (int i = -glow_samples; i <= glow_samples; ++i){
|
||||
for (int j = -glow_samples; j <= glow_samples; ++j){
|
||||
_a = Texel( texture, texture_coords + (glow_dist)*vec2(float(i), float(j))).a;
|
||||
if (_a < 0.9){
|
||||
actual_glow_samples += 1;
|
||||
glow = glow + _a;
|
||||
}
|
||||
}
|
||||
}
|
||||
glow /= 0.7*float(actual_glow_samples);
|
||||
|
||||
//Create the horizontal glitch offset effects
|
||||
number offset_l = 0.;
|
||||
number offset_r = 0.;
|
||||
number timefac = 1.0*hologram.g;
|
||||
offset_l = -10.0*(-0.5+sin(timefac*0.512 + texture_coords.y*14.0)
|
||||
+ sin(-timefac*0.8233 + texture_coords.y*11.532)
|
||||
+ sin(timefac*0.333 + texture_coords.y*13.3)
|
||||
+ sin(-timefac*0.1112331 + texture_coords.y*4.044343));
|
||||
offset_r = -10.0*(-0.5+sin(timefac*0.6924 + texture_coords.y*19.0)
|
||||
+ sin(-timefac*0.9661 + texture_coords.y*21.532)
|
||||
+ sin(timefac*0.4423 + texture_coords.y*30.3)
|
||||
+ sin(-timefac*0.13321312 + texture_coords.y*3.011));
|
||||
if (offset_r >= 1.5 || offset_r <= 0.){offset_r = 0.;}
|
||||
if (offset_l >= 1.5 || offset_l <= 0.){offset_l = 0.;}
|
||||
texture_coords.x = texture_coords.x + 0.002*(-offset_l + offset_r);
|
||||
|
||||
vec4 tex = Texel( texture, texture_coords);
|
||||
if (tex.a > 0.999){tex = vec4(0.,0.,0.,0.);}
|
||||
if (tex.a < 0.001){tex.rgb = vec3(0.,1.,1.);}
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
if (uv.x >0.95 || uv.x < 0.05 || uv.y > 0.95 || uv.y < 0.05){
|
||||
return vec4(0.,0.,0.,0.);
|
||||
}
|
||||
|
||||
number light_strength = 0.4*(0.3*sin(2.*hologram.g) + 0.6 + 0.3*sin(hologram.r*3.) + 0.9);
|
||||
vec4 final_col;
|
||||
if (tex.a < 0.001){
|
||||
final_col = tex*colour + vec4(0., 1., .5,0.6)*light_strength*(1.+abs(offset_l)+abs(offset_r))*glow;
|
||||
}
|
||||
else{
|
||||
final_col = tex*colour + vec4(0., 0.3, 0.2,0.3)*light_strength*(1.+abs(offset_l)+abs(offset_r))*glow;
|
||||
}
|
||||
|
||||
//
|
||||
return dissolve_mask(final_col, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
133
resources/shaders/negative.fs
Normal file
133
resources/shaders/negative.fs
Normal file
@@ -0,0 +1,133 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 negative;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
number hue(number s, number t, number h)
|
||||
{
|
||||
number hs = mod(h, 1.)*6.;
|
||||
if (hs < 1.) return (t-s) * hs + s;
|
||||
if (hs < 3.) return t;
|
||||
if (hs < 4.) return (t-s) * (4.-hs) + s;
|
||||
return s;
|
||||
}
|
||||
|
||||
vec4 RGB(vec4 c)
|
||||
{
|
||||
if (c.y < 0.0001)
|
||||
return vec4(vec3(c.z), c.a);
|
||||
|
||||
number t = (c.z < .5) ? c.y*c.z + c.z : -c.y*c.z + (c.y+c.z);
|
||||
number s = 2.0 * c.z - t;
|
||||
return vec4(hue(s,t,c.x + 1./3.), hue(s,t,c.x), hue(s,t,c.x - 1./3.), c.w);
|
||||
}
|
||||
|
||||
vec4 HSL(vec4 c)
|
||||
{
|
||||
number low = min(c.r, min(c.g, c.b));
|
||||
number high = max(c.r, max(c.g, c.b));
|
||||
number delta = high - low;
|
||||
number sum = high+low;
|
||||
|
||||
vec4 hsl = vec4(.0, .0, .5 * sum, c.a);
|
||||
if (delta == .0)
|
||||
return hsl;
|
||||
|
||||
hsl.y = (hsl.z < .5) ? delta / sum : delta / (2.0 - sum);
|
||||
|
||||
if (high == c.r)
|
||||
hsl.x = (c.g - c.b) / delta;
|
||||
else if (high == c.g)
|
||||
hsl.x = (c.b - c.r) / delta + 2.0;
|
||||
else
|
||||
hsl.x = (c.r - c.g) / delta + 4.0;
|
||||
|
||||
hsl.x = mod(hsl.x / 6., 1.);
|
||||
return hsl;
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel(texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
vec4 SAT = HSL(tex);
|
||||
|
||||
if (negative.g > 0.0 || negative.g < 0.0) {
|
||||
SAT.b = (1.-SAT.b);
|
||||
}
|
||||
SAT.r = -SAT.r+0.2;
|
||||
|
||||
tex = RGB(SAT) + 0.8*vec4(79./255., 99./255.,103./255.,0.);
|
||||
|
||||
if (tex[3] < 0.7)
|
||||
tex[3] = tex[3]/3.;
|
||||
return dissolve_mask(tex*colour, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
98
resources/shaders/negative_shine.fs
Normal file
98
resources/shaders/negative_shine.fs
Normal file
@@ -0,0 +1,98 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 negative_shine;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel( texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
number low = min(tex.r, min(tex.g, tex.b));
|
||||
number high = max(tex.r, max(tex.g, tex.b));
|
||||
number delta = high-low -0.1;
|
||||
|
||||
number fac = 0.8 + 0.9*sin(11.*uv.x+4.32*uv.y + negative_shine.r*12. + cos(negative_shine.r*5.3 + uv.y*4.2 - uv.x*4.));
|
||||
number fac2 = 0.5 + 0.5*sin(8.*uv.x+2.32*uv.y + negative_shine.r*5. - cos(negative_shine.r*2.3 + uv.x*8.2));
|
||||
number fac3 = 0.5 + 0.5*sin(10.*uv.x+5.32*uv.y + negative_shine.r*6.111 + sin(negative_shine.r*5.3 + uv.y*3.2));
|
||||
number fac4 = 0.5 + 0.5*sin(3.*uv.x+2.32*uv.y + negative_shine.r*8.111 + sin(negative_shine.r*1.3 + uv.y*11.2));
|
||||
number fac5 = sin(0.9*16.*uv.x+5.32*uv.y + negative_shine.r*12. + cos(negative_shine.r*5.3 + uv.y*4.2 - uv.x*4.));
|
||||
|
||||
number maxfac = 0.7*max(max(fac, max(fac2, max(fac3,0.0))) + (fac+fac2+fac3*fac4), 0.);
|
||||
|
||||
tex.rgb = tex.rgb*0.5 + vec3(0.4, 0.4, 0.8);
|
||||
|
||||
tex.r = tex.r-delta + delta*maxfac*(0.7 + fac5*0.27) - 0.1;
|
||||
tex.g = tex.g-delta + delta*maxfac*(0.7 - fac5*0.27) - 0.1;
|
||||
tex.b = tex.b-delta + delta*maxfac*0.7 - 0.1;
|
||||
tex.a = tex.a*(0.5*max(min(1., max(0.,0.3*max(low*0.2, delta)+ min(max(maxfac*0.1,0.), 0.4)) ), 0.) + 0.15*maxfac*(0.1+delta));
|
||||
|
||||
return dissolve_mask(tex*colour, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
130
resources/shaders/played.fs
Normal file
130
resources/shaders/played.fs
Normal file
@@ -0,0 +1,130 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 played;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
number hue(number s, number t, number h)
|
||||
{
|
||||
number hs = mod(h, 1.)*6.;
|
||||
if (hs < 1.) return (t-s) * hs + s;
|
||||
if (hs < 3.) return t;
|
||||
if (hs < 4.) return (t-s) * (4.-hs) + s;
|
||||
return s;
|
||||
}
|
||||
|
||||
vec4 RGB(vec4 c)
|
||||
{
|
||||
if (c.y == 0.)
|
||||
return vec4(vec3(c.z), c.a);
|
||||
|
||||
number t = (c.z < .5) ? c.y*c.z + c.z : -c.y*c.z + (c.y+c.z);
|
||||
number s = 2.0 * c.z - t;
|
||||
return vec4(hue(s,t,c.x + 1./3.), hue(s,t,c.x), hue(s,t,c.x - 1./3.), c.w);
|
||||
}
|
||||
|
||||
vec4 HSL(vec4 c)
|
||||
{
|
||||
number low = min(c.r, min(c.g, c.b));
|
||||
number high = max(c.r, max(c.g, c.b));
|
||||
number delta = high - low;
|
||||
number sum = high+low;
|
||||
|
||||
vec4 hsl = vec4(.0, .0, .5 * sum, c.a);
|
||||
if (delta == .0)
|
||||
return hsl;
|
||||
|
||||
hsl.y = (hsl.z < .5) ? delta / sum : delta / (2.0 - sum);
|
||||
|
||||
if (high == c.r)
|
||||
hsl.x = (c.g - c.b) / delta;
|
||||
else if (high == c.g)
|
||||
hsl.x = (c.b - c.r) / delta + 2.0;
|
||||
else
|
||||
hsl.x = (c.r - c.g) / delta + 4.0;
|
||||
|
||||
hsl.x = mod(hsl.x / 6., 1.);
|
||||
return hsl;
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel(texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
vec4 SAT = HSL(tex);
|
||||
SAT.g = SAT.g*0.5 + 0.000001*played.r;
|
||||
SAT.b = SAT.b*0.8;
|
||||
|
||||
tex = RGB(SAT);
|
||||
tex.a = tex.a*0.5;
|
||||
|
||||
return dissolve_mask(tex*colour, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
150
resources/shaders/polychrome.fs
Normal file
150
resources/shaders/polychrome.fs
Normal file
@@ -0,0 +1,150 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 polychrome;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
number hue(number s, number t, number h)
|
||||
{
|
||||
number hs = mod(h, 1.)*6.;
|
||||
if (hs < 1.) return (t-s) * hs + s;
|
||||
if (hs < 3.) return t;
|
||||
if (hs < 4.) return (t-s) * (4.-hs) + s;
|
||||
return s;
|
||||
}
|
||||
|
||||
vec4 RGB(vec4 c)
|
||||
{
|
||||
if (c.y < 0.0001)
|
||||
return vec4(vec3(c.z), c.a);
|
||||
|
||||
number t = (c.z < .5) ? c.y*c.z + c.z : -c.y*c.z + (c.y+c.z);
|
||||
number s = 2.0 * c.z - t;
|
||||
return vec4(hue(s,t,c.x + 1./3.), hue(s,t,c.x), hue(s,t,c.x - 1./3.), c.w);
|
||||
}
|
||||
|
||||
vec4 HSL(vec4 c)
|
||||
{
|
||||
number low = min(c.r, min(c.g, c.b));
|
||||
number high = max(c.r, max(c.g, c.b));
|
||||
number delta = high - low;
|
||||
number sum = high+low;
|
||||
|
||||
vec4 hsl = vec4(.0, .0, .5 * sum, c.a);
|
||||
if (delta == .0)
|
||||
return hsl;
|
||||
|
||||
hsl.y = (hsl.z < .5) ? delta / sum : delta / (2.0 - sum);
|
||||
|
||||
if (high == c.r)
|
||||
hsl.x = (c.g - c.b) / delta;
|
||||
else if (high == c.g)
|
||||
hsl.x = (c.b - c.r) / delta + 2.0;
|
||||
else
|
||||
hsl.x = (c.r - c.g) / delta + 4.0;
|
||||
|
||||
hsl.x = mod(hsl.x / 6., 1.);
|
||||
return hsl;
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel(texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
number low = min(tex.r, min(tex.g, tex.b));
|
||||
number high = max(tex.r, max(tex.g, tex.b));
|
||||
number delta = high - low;
|
||||
|
||||
number saturation_fac = 1. - max(0., 0.05*(1.1-delta));
|
||||
|
||||
vec4 hsl = HSL(vec4(tex.r*saturation_fac, tex.g*saturation_fac, tex.b, tex.a));
|
||||
|
||||
float t = polychrome.y*2.221 + time;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/texture_details.ba;
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 50.;
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
|
||||
float res = (.5 + .5* cos( (polychrome.x) * 2.612 + ( field + -.5 ) *3.14));
|
||||
hsl.x = hsl.x+ res + polychrome.y*0.04;
|
||||
hsl.y = min(0.6,hsl.y+0.5);
|
||||
|
||||
tex.rgb = RGB(hsl).rgb;
|
||||
|
||||
if (tex[3] < 0.7)
|
||||
tex[3] = tex[3]/3.;
|
||||
return dissolve_mask(tex*colour, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
18
resources/shaders/skew.fs
Normal file
18
resources/shaders/skew.fs
Normal file
@@ -0,0 +1,18 @@
|
||||
extern vec2 mouse_screen_pos;
|
||||
extern float hovering;
|
||||
extern float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
50
resources/shaders/splash.fs
Normal file
50
resources/shaders/splash.fs
Normal file
@@ -0,0 +1,50 @@
|
||||
extern number time;
|
||||
extern number vort_speed;
|
||||
extern vec4 colour_1;
|
||||
extern vec4 colour_2;
|
||||
extern number mid_flash;
|
||||
extern number vort_offset;
|
||||
|
||||
#define PIXEL_SIZE_FAC 700.
|
||||
#define BLACK 0.6*vec4(79./255.,99./255., 103./255., 1./0.6)
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
//Convert to UV coords (0-1) and floor for pixel effect
|
||||
number pixel_size = length(love_ScreenSize.xy)/PIXEL_SIZE_FAC;
|
||||
vec2 uv = (floor(screen_coords.xy*(1./pixel_size))*pixel_size - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
number uv_len = length(uv);
|
||||
|
||||
//Adding in a center swirl, changes with time
|
||||
number speed = time*vort_speed;
|
||||
number new_pixel_angle = atan(uv.y, uv.x) + (2.2 + 0.4*min(6.,speed))*uv_len - 1. - speed*0.05 - min(6.,speed)*speed*0.02 + vort_offset;
|
||||
vec2 mid = (love_ScreenSize.xy/length(love_ScreenSize.xy))/2.;
|
||||
vec2 sv = vec2((uv_len * cos(new_pixel_angle) + mid.x), (uv_len * sin(new_pixel_angle) + mid.y)) - mid;
|
||||
|
||||
//Now add the smoke effect to the swirled UV
|
||||
|
||||
sv *= 30.;
|
||||
speed = time*(6.)*vort_speed + vort_offset + 1033.;
|
||||
vec2 uv2 = vec2(sv.x+sv.y);
|
||||
|
||||
for(int i=0; i < 5; i++) {
|
||||
uv2 += sin(max(sv.x, sv.y)) + sv;
|
||||
sv += 0.5*vec2(cos(5.1123314 + 0.353*uv2.y + speed*0.131121),sin(uv2.x - 0.113*speed));
|
||||
sv -= 1.0*cos(sv.x + sv.y) - 1.0*sin(sv.x*0.711 - sv.y);
|
||||
}
|
||||
|
||||
//Make the smoke amount range from 0 - 2
|
||||
number smoke_res =min(2., max(-2., 1.5 + length(sv)*0.12 - 0.17*(min(10.,time*1.2 - 4.))));
|
||||
if (smoke_res < 0.2) {
|
||||
smoke_res = (smoke_res - 0.2)*0.6 + 0.2;
|
||||
}
|
||||
|
||||
number c1p = max(0.,1. - 2.*abs(1.-smoke_res));
|
||||
number c2p = max(0.,1. - 2.*(smoke_res));
|
||||
number cb = 1. - min(1., c1p + c2p);
|
||||
|
||||
vec4 ret_col = colour_1*c1p + colour_2*c2p + vec4(cb*BLACK.rgb, cb*colour_1.a);
|
||||
number mod_flash = max(mid_flash*0.8, max(c1p, c2p)*5. - 4.4) + mid_flash*max(c1p, c2p);
|
||||
|
||||
return ret_col*(1. - mod_flash) + mod_flash*vec4(1., 1., 1., 1.);
|
||||
}
|
21
resources/shaders/vortex.fs
Normal file
21
resources/shaders/vortex.fs
Normal file
@@ -0,0 +1,21 @@
|
||||
extern float vortex_amt;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
vec2 uv = (vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
|
||||
float effectRadius = 1.6 - 0.05*vortex_amt;
|
||||
float effectAngle = 0.5 + 0.15*vortex_amt;
|
||||
|
||||
float len = length(uv * vec2(love_ScreenSize.x / love_ScreenSize.y, 1.));
|
||||
float angle = atan(uv.y, uv.x) + effectAngle * smoothstep(effectRadius, 0., len);
|
||||
float radius = length(uv);
|
||||
|
||||
vec2 center = 0.5*love_ScreenSize.xy/length(love_ScreenSize.xy);
|
||||
|
||||
vertex_position.x = (radius * cos(angle) + center.x)*length(love_ScreenSize.xy);
|
||||
vertex_position.y = (radius * sin(angle) + center.y)*length(love_ScreenSize.xy);
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
#endif
|
98
resources/shaders/voucher.fs
Normal file
98
resources/shaders/voucher.fs
Normal file
@@ -0,0 +1,98 @@
|
||||
#if defined(VERTEX) || __VERSION__ > 100 || defined(GL_FRAGMENT_PRECISION_HIGH)
|
||||
#define MY_HIGHP_OR_MEDIUMP highp
|
||||
#else
|
||||
#define MY_HIGHP_OR_MEDIUMP mediump
|
||||
#endif
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 voucher;
|
||||
extern MY_HIGHP_OR_MEDIUMP number dissolve;
|
||||
extern MY_HIGHP_OR_MEDIUMP number time;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 texture_details;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 image_details;
|
||||
extern bool shadow;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_1;
|
||||
extern MY_HIGHP_OR_MEDIUMP vec4 burn_colour_2;
|
||||
|
||||
vec4 dissolve_mask(vec4 tex, vec2 texture_coords, vec2 uv)
|
||||
{
|
||||
if (dissolve < 0.001) {
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, shadow ? tex.a*0.3: tex.a);
|
||||
}
|
||||
|
||||
float adjusted_dissolve = (dissolve*dissolve*(3.-2.*dissolve))*1.02 - 0.01; //Adjusting 0.0-1.0 to fall to -0.1 - 1.1 scale so the mask does not pause at extreme values
|
||||
|
||||
float t = time * 10.0 + 2003.;
|
||||
vec2 floored_uv = (floor((uv*texture_details.ba)))/max(texture_details.b, texture_details.a);
|
||||
vec2 uv_scaled_centered = (floored_uv - 0.5) * 2.3 * max(texture_details.b, texture_details.a);
|
||||
|
||||
vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 143.6340), cos(-t / 99.4324));
|
||||
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 53.1532), cos( t / 61.4532));
|
||||
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 87.53218), sin(-t / 49.0000));
|
||||
|
||||
float field = (1.+ (
|
||||
cos(length(field_part1) / 19.483) + sin(length(field_part2) / 33.155) * cos(field_part2.y / 15.73) +
|
||||
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) ))/2.;
|
||||
vec2 borders = vec2(0.2, 0.8);
|
||||
|
||||
float res = (.5 + .5* cos( (adjusted_dissolve) / 82.612 + ( field + -.5 ) *3.14))
|
||||
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x)*(5. + 5.*dissolve) : 0.)*(dissolve)
|
||||
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y)*(5. + 5.*dissolve) : 0.)*(dissolve);
|
||||
|
||||
if (tex.a > 0.01 && burn_colour_1.a > 0.01 && !shadow && res < adjusted_dissolve + 0.8*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
if (!shadow && res < adjusted_dissolve + 0.5*(0.5-abs(adjusted_dissolve-0.5)) && res > adjusted_dissolve) {
|
||||
tex.rgba = burn_colour_1.rgba;
|
||||
} else if (burn_colour_2.a > 0.01) {
|
||||
tex.rgba = burn_colour_2.rgba;
|
||||
}
|
||||
}
|
||||
|
||||
return vec4(shadow ? vec3(0.,0.,0.) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a*0.3: tex.a) : .0);
|
||||
}
|
||||
|
||||
vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
|
||||
{
|
||||
vec4 tex = Texel( texture, texture_coords);
|
||||
vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
|
||||
|
||||
number low = min(tex.r, min(tex.g, tex.b));
|
||||
number high = max(tex.r, max(tex.g, tex.b));
|
||||
number delta = high-low;
|
||||
|
||||
number fac = 0.8 + 0.9*sin(13.*uv.x+5.32*uv.y + voucher.r*12. + cos(voucher.r*5.3 + uv.y*4.2 - uv.x*4.));
|
||||
number fac2 = 0.5 + 0.5*sin(10.*uv.x+2.32*uv.y + voucher.r*5. - cos(voucher.r*2.3 + uv.x*8.2));
|
||||
number fac3 = 0.5 + 0.5*sin(12.*uv.x+6.32*uv.y + voucher.r*6.111 + sin(voucher.r*5.3 + uv.y*3.2));
|
||||
number fac4 = 0.5 + 0.5*sin(4.*uv.x+2.32*uv.y + voucher.r*8.111 + sin(voucher.r*1.3 + uv.y*13.2));
|
||||
number fac5 = sin(0.5*16.*uv.x+5.32*uv.y + voucher.r*12. + cos(voucher.r*5.3 + uv.y*4.2 - uv.x*4.));
|
||||
|
||||
number maxfac = 0.6*max(max(fac, max(fac2, max(fac3,0.0))) + (fac+fac2+fac3*fac4), 0.);
|
||||
|
||||
tex.rgb = tex.rgb*0.5 + vec3(0.4, 0.4, 0.8);
|
||||
|
||||
tex.r = tex.r-delta + delta*maxfac*(0.7 + fac5*0.07) - 0.1;
|
||||
tex.g = tex.g-delta + delta*maxfac*(0.7 - fac5*0.17) - 0.1;
|
||||
tex.b = tex.b-delta + delta*maxfac*0.7 - 0.1;
|
||||
tex.a = tex.a*(0.8*max(min(1., max(0.,0.3*max(low*0.2, delta)+ min(max(maxfac*0.1,0.), 0.4)) ), 0.) + 0.15*maxfac*(0.1+delta));
|
||||
|
||||
return dissolve_mask(tex*colour, texture_coords, uv);
|
||||
}
|
||||
|
||||
extern MY_HIGHP_OR_MEDIUMP vec2 mouse_screen_pos;
|
||||
extern MY_HIGHP_OR_MEDIUMP float hovering;
|
||||
extern MY_HIGHP_OR_MEDIUMP float screen_scale;
|
||||
|
||||
#ifdef VERTEX
|
||||
vec4 position( mat4 transform_projection, vec4 vertex_position )
|
||||
{
|
||||
if (hovering <= 0.){
|
||||
return transform_projection * vertex_position;
|
||||
}
|
||||
float mid_dist = length(vertex_position.xy - 0.5*love_ScreenSize.xy)/length(love_ScreenSize.xy);
|
||||
vec2 mouse_offset = (vertex_position.xy - mouse_screen_pos.xy)/screen_scale;
|
||||
float scale = 0.2*(-0.03 - 0.3*max(0., 0.3-mid_dist))
|
||||
*hovering*(length(mouse_offset)*length(mouse_offset))/(2. -mid_dist);
|
||||
|
||||
return transform_projection * vertex_position + vec4(0,0,0,scale);
|
||||
}
|
||||
#endif
|
BIN
resources/sounds/ambientFire1.ogg
Normal file
BIN
resources/sounds/ambientFire1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/ambientFire2.ogg
Normal file
BIN
resources/sounds/ambientFire2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/ambientFire3.ogg
Normal file
BIN
resources/sounds/ambientFire3.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/ambientOrgan1.ogg
Normal file
BIN
resources/sounds/ambientOrgan1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/button.ogg
Normal file
BIN
resources/sounds/button.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/cancel.ogg
Normal file
BIN
resources/sounds/cancel.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/card1.ogg
Normal file
BIN
resources/sounds/card1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/card3.ogg
Normal file
BIN
resources/sounds/card3.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/cardFan2.ogg
Normal file
BIN
resources/sounds/cardFan2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/cardSlide1.ogg
Normal file
BIN
resources/sounds/cardSlide1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/cardSlide2.ogg
Normal file
BIN
resources/sounds/cardSlide2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/chips1.ogg
Normal file
BIN
resources/sounds/chips1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/chips2.ogg
Normal file
BIN
resources/sounds/chips2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/coin1.ogg
Normal file
BIN
resources/sounds/coin1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/coin2.ogg
Normal file
BIN
resources/sounds/coin2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/coin3.ogg
Normal file
BIN
resources/sounds/coin3.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/coin4.ogg
Normal file
BIN
resources/sounds/coin4.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/coin5.ogg
Normal file
BIN
resources/sounds/coin5.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/coin6.ogg
Normal file
BIN
resources/sounds/coin6.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/coin7.ogg
Normal file
BIN
resources/sounds/coin7.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/crumple1.ogg
Normal file
BIN
resources/sounds/crumple1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/crumple2.ogg
Normal file
BIN
resources/sounds/crumple2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/crumple3.ogg
Normal file
BIN
resources/sounds/crumple3.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/crumple4.ogg
Normal file
BIN
resources/sounds/crumple4.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/crumple5.ogg
Normal file
BIN
resources/sounds/crumple5.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/crumpleLong1.ogg
Normal file
BIN
resources/sounds/crumpleLong1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/crumpleLong2.ogg
Normal file
BIN
resources/sounds/crumpleLong2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/explosion1.ogg
Normal file
BIN
resources/sounds/explosion1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/explosion_buildup1.ogg
Normal file
BIN
resources/sounds/explosion_buildup1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/explosion_release1.ogg
Normal file
BIN
resources/sounds/explosion_release1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/foil1.ogg
Normal file
BIN
resources/sounds/foil1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/foil2.ogg
Normal file
BIN
resources/sounds/foil2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/generic1.ogg
Normal file
BIN
resources/sounds/generic1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/glass1.ogg
Normal file
BIN
resources/sounds/glass1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/glass2.ogg
Normal file
BIN
resources/sounds/glass2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/glass3.ogg
Normal file
BIN
resources/sounds/glass3.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/glass4.ogg
Normal file
BIN
resources/sounds/glass4.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/glass5.ogg
Normal file
BIN
resources/sounds/glass5.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/glass6.ogg
Normal file
BIN
resources/sounds/glass6.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/gold_seal.ogg
Normal file
BIN
resources/sounds/gold_seal.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/gong.ogg
Normal file
BIN
resources/sounds/gong.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/highlight1.ogg
Normal file
BIN
resources/sounds/highlight1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/highlight2.ogg
Normal file
BIN
resources/sounds/highlight2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/holo1.ogg
Normal file
BIN
resources/sounds/holo1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/introPad1.ogg
Normal file
BIN
resources/sounds/introPad1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/magic_crumple.ogg
Normal file
BIN
resources/sounds/magic_crumple.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/magic_crumple2.ogg
Normal file
BIN
resources/sounds/magic_crumple2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/magic_crumple3.ogg
Normal file
BIN
resources/sounds/magic_crumple3.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/multhit1.ogg
Normal file
BIN
resources/sounds/multhit1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/multhit2.ogg
Normal file
BIN
resources/sounds/multhit2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/music1.ogg
Normal file
BIN
resources/sounds/music1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/music2.ogg
Normal file
BIN
resources/sounds/music2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/music3.ogg
Normal file
BIN
resources/sounds/music3.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/music4.ogg
Normal file
BIN
resources/sounds/music4.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/music5.ogg
Normal file
BIN
resources/sounds/music5.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/negative.ogg
Normal file
BIN
resources/sounds/negative.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/other1.ogg
Normal file
BIN
resources/sounds/other1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/paper1.ogg
Normal file
BIN
resources/sounds/paper1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/polychrome1.ogg
Normal file
BIN
resources/sounds/polychrome1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/slice1.ogg
Normal file
BIN
resources/sounds/slice1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/splash_buildup.ogg
Normal file
BIN
resources/sounds/splash_buildup.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/tarot1.ogg
Normal file
BIN
resources/sounds/tarot1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/tarot2.ogg
Normal file
BIN
resources/sounds/tarot2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/timpani.ogg
Normal file
BIN
resources/sounds/timpani.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/voice1.ogg
Normal file
BIN
resources/sounds/voice1.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/voice10.ogg
Normal file
BIN
resources/sounds/voice10.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/voice11.ogg
Normal file
BIN
resources/sounds/voice11.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/voice2.ogg
Normal file
BIN
resources/sounds/voice2.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/voice3.ogg
Normal file
BIN
resources/sounds/voice3.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/voice4.ogg
Normal file
BIN
resources/sounds/voice4.ogg
Normal file
Binary file not shown.
BIN
resources/sounds/voice5.ogg
Normal file
BIN
resources/sounds/voice5.ogg
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user