AltParty2024/assets/shaders/random-pool/pixelsort.gdshader

28 lines
740 B
Text

//MADE BY : @ahopness
//LICENSE : CC0
//COMATIBLE WITH : GLES2, GLES3, WEBGL
shader_type canvas_item;
uniform float sort :hint_range(0.0, 2.6)= .5;
void fragment(){
vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy;
// Pseudo Pixel Sorting
float sortThreshold = 1.0 - clamp(sort / 2.6, 0.0, 1.0);
vec2 sortUv = vec2(uv.x, sortThreshold);
// Curved melting transition
vec2 transitionUV = uv;
transitionUV.y += pow(sort, 2.0 + (sort * 2.0)) * uv.x * fract(sin(dot(vec2(transitionUV.x), vec2(12.9, 78.2)))* 437.5);
COLOR = texture(TEXTURE, transitionUV);
// Draw pixel sorting effect behind the melting transition
if(transitionUV.y > 1.){
COLOR = texture(TEXTURE, sortUv);
}else{
COLOR = texture(TEXTURE, uv);
}
}