Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 67 additions & 66 deletions assets/shaders/providence.fs
Original file line number Diff line number Diff line change
Expand Up @@ -17,125 +17,126 @@ 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);
return vec4(shadow ? vec3(0.0, 0.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 adjusted_dissolve = (dissolve * dissolve * (3.0 - 2.0 * 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);
float t = time * 10.0 + 2003.0;
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.+ (
vec2 field_part1 = uv_scaled_centered + 50.0 * vec2(sin(-t / 143.6340), cos(-t / 99.4324));
vec2 field_part2 = uv_scaled_centered + 50.0 * vec2(cos( t / 53.1532), cos( t / 61.4532));
vec2 field_part3 = uv_scaled_centered + 50.0 * vec2(sin(-t / 87.53218), sin(-t / 49.0000));
float field = (1.0 + (
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.;
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) )) / 2.0;

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) {
float res = (.5 + .5 * cos((adjusted_dissolve) / 82.612 + (field + -0.5) * 3.14))
- (floored_uv.x > borders.y ? (floored_uv.x - borders.y) * (5.0 + 5.0 * dissolve) : 0.0) * (dissolve)
- (floored_uv.y > borders.y ? (floored_uv.y - borders.y) * (5.0 + 5.0 * dissolve) : 0.0) * (dissolve)
- (floored_uv.x < borders.x ? (borders.x - floored_uv.x) * (5.0 + 5.0 * dissolve) : 0.0) * (dissolve)
- (floored_uv.y < borders.x ? (borders.x - floored_uv.y) * (5.0 + 5.0 * dissolve) : 0.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);
return vec4(shadow ? vec3(0.0, 0.0, 0.0) : tex.xyz, res > adjusted_dissolve ? (shadow ? tex.a * 0.3 : tex.a) : 0.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;
number hs = mod(h, 1.0) * 6.0;
if (hs < 1.0) return (t - s) * hs + s;
if (hs < 3.0) return t;
if (hs < 4.0) return (t - s) * (4.0 - 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 t = (c.z < 0.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);
return vec4(hue(s, t, c.x + 1.0/3.0), hue(s, t, c.x), hue(s, t, c.x - 1.0/3.0), 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;
number sum = high + low;

vec4 hsl = vec4(.0, .0, .5 * sum, c.a);
if (delta == .0)
vec4 hsl = vec4(0.0, 0.0, 0.5 * sum, c.a);
if (delta == 0.0)
return hsl;

hsl.y = (hsl.z < .5) ? delta / sum : delta / (2.0 - sum);

if (high == c.r)
hsl.y = (hsl.z < 0.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.);
hsl.x = mod(hsl.x / 6.0, 1.0);
return hsl;
}

vec4 effect( vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords )
vec4 effect(vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords)
{
vec4 tex = Texel(texture, texture_coords);
float fac = 1/8.;
float p = texture_coords.x/fac + providence.y/10.;

float fac = 1.0 / 8.0;
float p = texture_coords.x / fac + providence.y / 10.0;
p = p - floor(p);
vec4 glint = Texel(extra_img, vec2(p, texture_coords.y/fac));
vec4 glint = Texel(extra_img, vec2(p, texture_coords.y / fac));

vec2 uv = (((texture_coords)*(image_details)) - texture_details.xy*texture_details.ba)/texture_details.ba;
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 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));
number saturation_fac = 1.0 - max(0.0, 0.05 * (1.1 - delta));
vec4 hsl = HSL(vec4(tex.r * saturation_fac, tex.g * saturation_fac, tex.b, tex.a));

float t = providence.y*2.221 + time;
vec2 floored_uv = (floor((uv*texture_details.ba)))/texture_details.ba;
vec2 uv_scaled_centered = (floored_uv - 0.5) * 50.;
float t = providence.y * 2.221 + time;
vec2 floored_uv = (floor((uv * texture_details.ba))) / texture_details.ba;
vec2 uv_scaled_centered = (floored_uv - 0.5) * 50.0;

vec2 field_part1 = uv_scaled_centered + 50.*vec2(sin(-t / 13.6340), cos(-t / 9.4324));
vec2 field_part2 = uv_scaled_centered + 50.*vec2(cos( t / 5.1532), cos( t / 6.4532));
vec2 field_part3 = uv_scaled_centered + 50.*vec2(sin(-t / 8.53218), sin(-t / 4.0000));

float field = (1.+ (
vec2 field_part1 = uv_scaled_centered + 50.0 * vec2(sin(-t / 13.6340), cos(-t / 9.4324));
vec2 field_part2 = uv_scaled_centered + 50.0 * vec2(cos( t / 5.1532), cos( t / 6.4532));
vec2 field_part3 = uv_scaled_centered + 50.0 * vec2(sin(-t / 8.53218), sin(-t / 4.0000));
float field = (1.0 + (
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.;
cos(length(field_part3) / 27.193) * sin(field_part3.x / 21.92) )) / 2.0;

float res = (.5 + .5* cos( (providence.x) * 2.612 + ( field + -.5 ) *3.14));

if (uv.x > uv.x * 2.){
float res = (0.5 + 0.5 * cos((providence.x) * 2.612 + (field + -0.5) * 3.14));
if (uv.x > uv.x * 2.0) {
uv = providence;
}

colour = glint;
colour.a = tex.a;
colour = HSL(colour);
float dist = sqrt((uv.x-0.5)*(uv.x-0.5) + (uv.y-0.5)*(uv.y-0.5));
float p2 = sin(4.*dist + providence.y)/12.;
float dist = sqrt((uv.x - 0.5) * (uv.x - 0.5) + (uv.y - 0.5) * (uv.y - 0.5));
float p2 = sin(4.0 * dist + providence.y) / 12.0;
colour.r += p2;
colour.b *= colour.b;
colour = RGB(colour);
Expand All @@ -148,16 +149,16 @@ 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 )
vec4 position(mat4 transform_projection, vec4 vertex_position)
{
if (hovering <= 0.){
if (hovering <= 0.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);
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, 0.3 - mid_dist))
* hovering * (length(mouse_offset) * length(mouse_offset)) / (2.0 - mid_dist);
return transform_projection * vertex_position + vec4(0.0, 0.0, 0.0, scale);
}
#endif
2 changes: 1 addition & 1 deletion items/jokers/rlegendary_jokers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ local entropy_card = {
atlas = "reverse_legendary",
demicoloncompat=true,
loc_vars = function(self, info_queue, card)
if Entropy.config.asc_power_tutorial then q[#q+1] = {set = "Other", key = "asc_power_tutorial"} end
if Entropy.config.asc_power_tutorial then info_queue[#info_queue+1] = {set = "Other", key = "asc_power_tutorial"} end
return {
vars = {
number_format(card.ability.x_asc_mod),
Expand Down