runnable fragment

8bit

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform int   u_palette;   // 0=CGA1, 1=CGA2, 2=EGA, 3=GameBoy
uniform float u_pixelate;  // block size (1-16)

vec3 pal(float l, int p) {
  if (p == 0) {
    if (l < 0.33) return vec3(0, 0, 0);
    if (l < 0.66) return vec3(0, 1, 1);
    return vec3(1, 0, 1);
  }
  if (p == 1) {
runnable fragment

Channel Invert

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform int u_channel; // 0=all, 1=red only, 2=green only, 3=blue only

void main() {
  vec4 c = texture2D(u_texture, v_texCoord);

  if (u_channel == 0) {
    c.rgb = 1.0 - c.rgb;
  } else if (u_channel == 1) {
    c.r = 1.0 - c.r;
  } else if (u_channel == 2) {
runnable fragment

Crt

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_gap;         // pixel gap (1-8)
uniform float u_curve;       // curvature (0-0.3)
uniform float u_vignette;    // vignette intensity (0-1)
uniform float u_dispersion;  // chromatic dispersion (0-0.2)

void main() {
  vec2 uv = v_texCoord;
  vec2 d = uv - 0.5;
  float r = length(d);
  float safeCurve = min(u_curve, 0.25);
runnable fragment

Data Glitch

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_intensity; // 0-1
uniform float u_block;     // 4-64
uniform int   u_seed;      // 1-999

float hash(vec2 p) {
  return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453 + float(u_seed) * 123.456);
}

void main() {
  vec2 uv = v_texCoord;
runnable fragment

Edge Detect

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_intensity; // 0-3
uniform int   u_mode;      // 0=sobel line art, 1=overlay, 2=edges only

float lum(vec3 c) {
  return dot(c, vec3(0.299, 0.587, 0.114));
}

void main() {
  vec2 ps = 1.0 / u_resolution;
runnable fragment

Glitch Scanline Bloom

stronghold-curated generative glsl runnable fragment MIT
code snippet
precision mediump float;
uniform vec2 resolution;
uniform float time;
float hash(float n){return fract(sin(n)*43758.5453);} 
void main(){
 vec2 uv=gl_FragCoord.xy/resolution.xy;
 float row=floor(uv.y*90.0);
 float shift=(hash(row+floor(time*12.0))*2.0-1.0)*0.035*step(0.86,hash(row));
 vec2 p=uv+vec2(shift,0.0);
 float bars=sin(p.x*24.0+time*2.0)+sin(p.y*19.0-time*1.5);
 float scan=0.72+0.28*sin(uv.y*resolution.y*3.14159);
 vec3 col=0.5+0.5*cos(bars+vec3(0.0,2.0,4.0)+time);
 float mask=smoothstep(0.65,1.0,abs(sin(p.x*8.0))*abs(cos(p.y*7.0)));
 gl_FragColor=vec4(col*mask*scan,1.0);
runnable fragment

Gn Modulation Synth.fs

gnomalab-vdmx-isf-effects utility glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "Signal",
        "Gnomalab",
        "Modulation"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Procesador de modulación de señal inspirado en la síntesis analógica. Transforma la imagen en patrones de onda rítmicos con soporte para espacios de color CMYK/HSV, filtrado Lowpass y 11 modos de fusión extrema.\"",
    "INPUTS": [
        {
            "NAME": "inputImage",
            "TYPE": "image"
        },
runnable fragment

Gn Pixel Sort Clean.fs

gnomalab-vdmx-isf-effects utility glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "Gnomalab",
        "Stylize"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Pixel sorting de una sola pasada optimizado para mantener fondos limpios. Permite ordenar por Luma, Hue o Sat y realizar un fundido suave hacia la imagen original mediante un sistema de límites de rango.\"",
    "INPUTS": [
        {
            "NAME": "inputImage",
            "TYPE": "image"
        },
        {
runnable fragment

Gn Q Smear Noise.fs

gnomalab-vdmx-isf-effects generative glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "DistortionEffect",
        "Glitch"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Smear caótico con ángulos cuantizados por brillo. Incluye ruido espacial/temporal y un motor de feedback inestable que genera texturas de glitch orgánico y estéticas similares al datamosh.\"",
    "INPUTS": [
        {
            "NAME": "inputImage",
            "TYPE": "image"
        },
        {
runnable fragment

Gn Signal Trinity.fs

gnomalab-vdmx-isf-effects utility glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "Signal",
        "Gnomalab",
        "Glitch",
        "Modulation",
        "Feedback"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Procesador triple por bandas de luminancia. Rutea dinámicamente tres motores (Síntesis Analógica, Glitch Radial y Feedback Geométrico) entre negros, medios y blancos con control de orden conmutable.\"",
    "INPUTS": [
        {
            "NAME": "inputImage",
runnable fragment

Gn Topo Scan.fs

gnomalab-vdmx-isf-effects utility glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "Geometry",
        "Stylize",
        "Gnomalab"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Generador de isolíneas topográficas basadas en luminancia. Incluye motor de pre-procesado Blur/Sharpen para suavizar o enfocar el mapa, animación de erosión rítmica y modo de mezcla estilo HUD.\"",
    "INPUTS": [
        {
            "LABEL": "Source Image",
            "NAME": "inputImage",
            "TYPE": "image"
runnable fragment

Gn Vandalizer.fs

gnomalab-vdmx-isf-effects utility glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "Glitch",
        "Destruction",
        "Gnomalab",
        "Vandalizer"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Procesador de destrucción quirúrgica. Aplica Slices rítmicos, Melt vertical, TV Warp y RGB Split mediante un sistema de máscaras de precisión (Luma, RGB, Saturación). Incluye 7 modos de fusión para una integración estética del error.\"",
    "INPUTS": [
        {
            "LABEL": "Source Image",
            "NAME": "inputImage",
runnable fragment

Gn Vasulkas FX.fs

gnomalab-vdmx-isf-effects utility glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "Gnomalab",
        "Distortion",
        "Video Synth"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Sintetizador de barrido analógico inspirado en el Rutt-Etra. Transforma la imagen en una escultura topográfica 3D mediante deflexión por luminancia, con inestabilidad CRT, deriva de escaneo y aberración cromática.\"",
    "INPUTS": [
        {
            "NAME": "inputImage",
            "TYPE": "image"
        },
runnable fragment

Gn XORmear.fs

gnomalab-vdmx-isf-effects utility glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "Glitch",
        "Distortion",
        "Gnomalab"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Procesador de estelas digitales con corrupción bitwise XOR. Permite aislar rangos de luminancia específicos y alternar entre texturas de barrido rugosas o sólidas mediante su ruteo de doble etapa.\"",
    "INPUTS": [
        {
            "NAME": "inputImage",
            "TYPE": "image"
        },
runnable fragment

Gn XORter.fs

gnomalab-vdmx-isf-effects utility glsl runnable fragment MIT
code snippet
precision mediump float;
/*{
    "CATEGORIES": [
        "Glitch",
        "Gnomalab",
        "Destruction"
    ],
    "CREDIT": "Gnomalab",
    "DESCRIPTION": "\"Procesador híbrido de destrucción binaria y desplazamiento. Combina un motor XOR Bitwise con Pixel Sorting persistente. Permite alternar el orden de la cadena de proceso, generar aberración cromática rítmica y controlar la persistencia del error en el buffer.\"",
    "INPUTS": [
        {
            "LABEL": "Source Image",
            "NAME": "inputImage",
            "TYPE": "image"
runnable fragment

Grain

glitch-core material glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_intensity; // 0-1
uniform float u_size;      // grain size (0.5-10)
uniform int   u_color;     // 0=color, 1=grayscale

float hash(vec2 p) {
  return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453);
}

void main() {
  vec4 c = texture2D(u_texture, v_texCoord);
runnable fragment

Halftone

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_size;      // dot size (2-30)
uniform float u_angle;     // degrees (0-90)
uniform int   u_type;      // 0=dots, 1=lines

float lum(vec3 c) {
  return dot(c, vec3(0.299, 0.587, 0.114));
}

void main() {
  vec2 uv = v_texCoord * u_resolution;
runnable fragment

Kaleidoscope

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_sides;     // number of sides (2-16)
uniform float u_angle;     // rotation angle (0-6.28)
uniform vec2 u_center;     // center point (0-1)

void main() {
  vec2 uv = v_texCoord - u_center;
  float a = atan(uv.y, uv.x) + u_angle;
  float r = length(uv);
  float seg = 3.14159 * 2.0 / u_sides;
  a = mod(a, seg);
runnable fragment

Pixelate

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_block; // pixel block size (2-64)

void main() {
  vec2 uv = v_texCoord;
  uv = floor(uv * u_resolution / u_block) * u_block / u_resolution + u_block / u_resolution * 0.5;
  gl_FragColor = texture2D(u_texture, uv);
}
runnable fragment

Pixel Sort

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_intensity;   // 0.0-1.0
uniform float u_threshold;   // 0.0-1.0 brightness threshold
uniform float u_direction;   // 0=horizontal, 1=vertical

float luminance(vec3 c) {
  return dot(c, vec3(0.299, 0.587, 0.114));
}

void main() {
  vec2 uv = v_texCoord;
runnable fragment

Rgb Shift

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform vec2 u_rOffset;  // red channel offset (px)
uniform vec2 u_bOffset;  // blue channel offset (px)

void main() {
  vec2 pixelSize = 1.0 / u_resolution;

  float r = texture2D(u_texture, v_texCoord + u_rOffset * pixelSize).r;
  float g = texture2D(u_texture, v_texCoord).g;
  float b = texture2D(u_texture, v_texCoord + u_bOffset * pixelSize).b;
  float a = texture2D(u_texture, v_texCoord).a;
runnable fragment

Scanlines

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_density;    // scanline spacing (px)
uniform float u_opacity;    // 0.0-1.0
uniform vec3 u_color;       // scanline color

void main() {
  vec4 texColor = texture2D(u_texture, v_texCoord);
  float lineY = v_texCoord.y * u_resolution.y;

  float line = step(0.5, mod(lineY, u_density) / u_density);
  vec3 blended = mix(texColor.rgb, u_color * texColor.rgb, line * u_opacity);
runnable fragment

Stretch

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_intensity; // 0-1
uniform int   u_direction; // 0=horizontal, 1=vertical

void main() {
  vec2 uv = v_texCoord;

  if (u_direction == 0) {
    float band = floor(uv.y * u_resolution.y / 8.0);
    float off = (fract(sin(band * 127.1) * 43758.54) - 0.5) * u_intensity * 0.05;
    uv.x += off;
runnable fragment

Vhs

glitch-core generative glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_track;     // tracking noise (0-1)
uniform float u_noise;     // noise level (0-0.5)
uniform float u_bleed;     // color bleed (0-1)

float hash(vec2 p) {
  return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);
}

void main() {
  vec2 uv = v_texCoord;
runnable fragment

Wave

glitch-core pattern glsl runnable fragment MIT
code snippet
precision mediump float;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform vec2 u_resolution;
uniform float u_amplitude; // px
uniform float u_frequency; // waves across image
uniform int   u_direction; // 0=horizontal, 1=vertical, 2=radial

void main() {
  vec2 uv = v_texCoord;
  float amp = u_amplitude / u_resolution.x;
  float freq = u_frequency * 6.28318;
  float offset = 0.0;