This commit is contained in:
retucio committed 2026-07-19 23:14:33 +02:00
1 parent aeadfb28b1
commit 3913b31374
20 files changed
+416 -79

No files matched your search

@@ -434,6 +434,8 @@
"sputnik.module.jugadorfalso.desc": "spawns a fake player entity for testing purposes",
"sputnik.module.jugadorfalso.name": "fake player",
"sputnik.module.keypearl.nopearls": "you have no pearls",
"sputnik.module.lsd.desc": "what the actual FUCK",
"sputnik.module.lsd.name": "lsd",
"sputnik.module.macekill.oops": "oops: %s",
"sputnik.module.manos.desc": "changes the way hands are rendered",
"sputnik.module.manos.name": "hands",
@@ -963,6 +965,14 @@
"sputnik.setting.jugadorfalso.general.nombre.desc": "what name to give the player",
"sputnik.setting.jugadorfalso.general.nombre.name": "name",
"sputnik.setting.key.reset": "keybind for module %s reset",
"sputnik.setting.lsd.general.intensidad.desc": "how much the image is distorted and tinted",
"sputnik.setting.lsd.general.intensidad.name": "strength",
"sputnik.setting.lsd.general.rotaciones.desc": "how much the offset swirls; higher = more whirls",
"sputnik.setting.lsd.general.rotaciones.name": "rotations",
"sputnik.setting.lsd.general.tono.desc": "hue shift applied over the image",
"sputnik.setting.lsd.general.tono.name": "hue",
"sputnik.setting.lsd.general.velocidad.desc": "how fast the pattern moves (0 freezes it)",
"sputnik.setting.lsd.general.velocidad.name": "speed",
"sputnik.setting.manos.animaciones.animacionesviejas.desc": "like the 1.8 ones, when hitting",
"sputnik.setting.manos.animaciones.animacionesviejas.name": "old animations",
"sputnik.setting.manos.animaciones.nocomer.desc": "doesn't render the eating animation",
@@ -434,6 +434,8 @@
"sputnik.module.jugadorfalso.desc": "invoca una entidad de jugador falsa por motivos de testeo",
"sputnik.module.jugadorfalso.name": "jugador falso",
"sputnik.module.keypearl.nopearls": "no tienes perlas",
"sputnik.module.lsd.desc": "distorsiona y tiñe la pantalla",
"sputnik.module.lsd.name": "lsd",
"sputnik.module.macekill.oops": "upsi: %s",
"sputnik.module.manos.desc": "modifica la manera en la que se renderizan las manos",
"sputnik.module.manos.name": "manos",
@@ -963,6 +965,14 @@
"sputnik.setting.jugadorfalso.general.nombre.desc": "qué nombre asignarle al jugador",
"sputnik.setting.jugadorfalso.general.nombre.name": "nombre",
"sputnik.setting.key.reset": "tecla del módulo %s restablecida",
"sputnik.setting.lsd.general.intensidad.desc": "cuánto se distorsiona y se tiñe la imagen",
"sputnik.setting.lsd.general.intensidad.name": "intensidad",
"sputnik.setting.lsd.general.rotaciones.desc": "cuántas vueltas da el desplazamiento; más = más remolinos",
"sputnik.setting.lsd.general.rotaciones.name": "rotaciones",
"sputnik.setting.lsd.general.tono.desc": "desplazamiento de tono que se aplica sobre la imagen",
"sputnik.setting.lsd.general.tono.name": "tono",
"sputnik.setting.lsd.general.velocidad.desc": "a qué ritmo se mueve el patrón (0 lo congela)",
"sputnik.setting.lsd.general.velocidad.name": "velocidad",
"sputnik.setting.manos.animaciones.animacionesviejas.desc": "como las de la 1.8, al pegar",
"sputnik.setting.manos.animaciones.animacionesviejas.name": "animaciones viejas",
"sputnik.setting.manos.animaciones.nocomer.desc": "no renderiza la animación de comer",
@@ -1,11 +0,0 @@
#version 330 core
layout(location = 0) in vec3 Position;
layout(location = 1) in vec2 TexCoord;
out vec2 texCoord;
void main() {
gl_Position = vec4(Position, 1.0);
texCoord = TexCoord;
}
@@ -0,0 +1,12 @@
#version 330
// copia el resultado de la pasada lsd (un objetivo intermedio) de vuelta al objetivo
// principal: una pasada de post no puede leer y escribir la misma textura a la vez
uniform sampler2D InSampler;
in vec2 texCoord;
out vec4 fragColor;
void main() {
fragColor = texture(InSampler, texCoord);
}
@@ -1,19 +1,23 @@
#version 330 core
#version 330
#define M_PI 3.1415926535897932384626433832795
layout(std140) uniform LsdUniforms {
float strength;
float seed;
float time;
float rotations;
};
uniform sampler2D DiffuseSampler;
uniform sampler2D InSampler;
in vec2 texCoord;
out vec4 fragColor;
// 26.2 pasó los samplers con nombre a bind groups; los uniforms van en un bloque std140
// que rellena LsdPostProcessor cada frame. el tiempo se lleva aquí en vez de leerlo de
// Globals.GameTime porque ese es una fracción del día (se reinicia cada 24000 ticks) y
// animaría la distorsión lentísimo con un salto cada 20 minutos
layout(std140) uniform LsdConfig {
float strength;
float seed;
float rotations;
float time;
};
vec4 permute(vec4 x){ return mod(((x*34.0)+1.0)*x, 289.0); }
vec4 taylorInvSqrt(vec4 r){ return 1.79284291400159 - 0.85373472095314 * r; }
vec3 fade(vec3 t) { return t*t*t*(t*(t*6.0-15.0)+10.0); }
@@ -114,13 +118,13 @@ vec3 hueShift(vec3 color, float hueAdjust){
}
void main() {
vec2 oneTexel = vec2(1.0) / vec2(textureSize(DiffuseSampler, 0));
vec2 oneTexel = vec2(1.0) / vec2(textureSize(InSampler, 0));
float perlin = cnoise(vec3(texCoord/oneTexel/100.0, time));
float ang = radians(perlin * 360.0) * rotations;
float s = sin(ang);
float c = cos(ang);
vec2 offset = vec2(s, c) * perlin;
vec4 tex = texture(DiffuseSampler, texCoord + (offset * strength * 30.0) * oneTexel);
vec4 tex = texture(InSampler, texCoord + (offset * strength * 30.0) * oneTexel);
fragColor = mix(tex, vec4(hueShift(tex.rgb, seed * 2.0 * M_PI), 1.0), strength);
}
}