{"id":50872165,"url":"https://github.com/lostjared/shaders","last_synced_at":"2026-06-15T06:06:13.547Z","repository":{"id":350452556,"uuid":"1206902101","full_name":"lostjared/shaders","owner":"lostjared","description":"Collection of GLSL Shader Effects ","archived":false,"fork":false,"pushed_at":"2026-05-26T04:09:34.000Z","size":2041,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T06:16:20.673Z","etag":null,"topics":["effects","glsl","post-processing","shaders"],"latest_commit_sha":null,"homepage":"https://lostsidedead.biz/acmx2/shader_browser.html","language":"GLSL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lostjared.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-10T11:18:35.000Z","updated_at":"2026-05-26T04:09:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lostjared/shaders","commit_stats":null,"previous_names":["lostjared/shaders"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lostjared/shaders","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2Fshaders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2Fshaders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2Fshaders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2Fshaders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lostjared","download_url":"https://codeload.github.com/lostjared/shaders/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lostjared%2Fshaders/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34349976,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["effects","glsl","post-processing","shaders"],"created_at":"2026-06-15T06:06:07.942Z","updated_at":"2026-06-15T06:06:13.540Z","avatar_url":"https://github.com/lostjared.png","language":"GLSL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GLSL Shader Collection\n\nA collection of **2000+ OpenGL GLSL fragment shaders** for real-time video and image processing. These shaders are designed to be used as post-processing effects applied to live camera feeds, video textures, or generated visuals.\n\n## Overview\n\nAll shaders are written in **GLSL (OpenGL Shading Language)** and operate as fragment shaders. They take texture input (typically a webcam or video source) and apply various visual transformations in real time. Many shaders support interactive control via mouse input and react to time-based animation.\n\n## Directory Structure\n\nShaders are organized alphabetically into folders by the first character of their filename:\n\n| Folder | Contents |\n|--------|----------|\n| `0-9/` | Shaders starting with a digit |\n| `A/`–`Z/` | Shaders starting with the corresponding letter (case-insensitive) |\n| `material/` | Material-based texture blending and compositing shaders |\n\n## Effect Categories\n\n### Color Manipulation\n- **Color shifting \u0026 grading** — `color_shift_fade`, `color_grad_rainbow`, `color_increase`, `chue`, `hue-mouse`, `sepia`, `grayscale`, `negative`\n- **RGB channel effects** — `rgb`, `rgb_blur`, `rgb_fade`, `rgb_control`, `rgb_time`, `rgbchecker`\n- **Strobe \u0026 flash** — `strobe`, `strobe_colors`, `strobe_light`, `flash`, `flash_gradient_strobe`, `blue_strobe`, `red_strobe`, `purple_strobe`\n- **Rainbow effects** — `rainbow_blur`, `rainbow_bright`, `rainbow_spiral`, `rainbow_fractal`, `rainbow_ink`, `rainbow_prisim`, `bright_rainbow`\n\n### Geometric Distortion\n- **Mirror effects** — `mirror1`–`mirror3`, `mirror-twist`, `mirror-wrap`, `mirror-spiral`, `mirror-zoom`, `mirror-bowl`, `funny_mirror`\n- **Fisheye \u0026 lens** — `fisheye`, `fisheye_mouse`, `fisheye_warp`, `bubble`, `bubble-zoom-mouse`, `thick_glass`, `prism_glass`\n- **Warp \u0026 twist** — `twist`, `twist_full`, `warp_tunnel`, `warpcursor`, `bend`, `bend_twist`, `elastic`\n- **Zoom effects** — `zoom_fish`, `zoom_in_out_mouse`, `zoom_pulse`, `cd_zoom`, `brot-zoom-mouse`\n- **Spiral \u0026 swirl** — `spiral_wave`, `spiral_mirror`, `swirl_by_mouse`, `color_swirl_beautiful`, `gptswirl`, `g_swirl`\n- **Page turn \u0026 fold** — `page_turn`, `fold`, `fold-mirror`, `fold-spin`, `tex_fold`\n\n### Fractal \u0026 Mathematical\n- **Fractal patterns** — `fractal`, `frac_shader01`–`frac_shader05`, `frac_zoom1`–`frac_zoom8`, `new_fractal`, `fractal_diamond_rainbow`\n- **Mandelbrot / Julia** — `mandella1`, `julia`, `brot-zoom-mouse`, `frac_shader02_dmd_mandella`\n- **Geometric patterns** — `geometric`–`geometric5`, `grid_pattern`, `grid_spiral`, `diamond`, `prism_quad`\n- **Kaleidoscope** — `kale`, `kale2`–`kale4`, `kscopic`, `gkale`, `gkalei`\n\n### Video Echo \u0026 Feedback\n- **Echo effects** — `echo_color`, `echo_mirror`, `echo_mix`, `echo_rainbow_spin`, `echo_xor`, `echo_shift`, `echo_sin`\n- **Feedback loops** — `echo_loop`, `echo_loop2`, `gpt_echo`\n- **Trail effects** — `gtrail`, `gtrail2`, `HyperFocusTrails`\n\n### Glitch \u0026 Digital\n- **Glitch effects** — `glitch1`, `glitch_boil`, `glitch_effect`, `glitch_wave`, `glitch-react`, `new_glitch`, `atan-glitch`\n- **VHS \u0026 retro** — `vhs`, `vhs2`, `vhs_damage`, `vhs-palette`, `old-film`, `snes`, `8bit`, `analog`\n- **Pixel \u0026 block** — `pixels`, `block_pixels`, `smooth_pixel`, `random_pixels_static`\n- **XOR operations** — `xor_rgb`, `xor_sine_swirl`, `xorstrobe`, `xorsheet`, `subtle_xor`, `alpha_xor`\n\n### Lighting \u0026 Atmosphere\n- **Glow \u0026 bloom** — `glow`, `bloom`, `bright`, `brighten`, `whitelight`, `light_pulse`\n- **Aura effects** — `aura`–`aura9`, `auraXi1`–`auraXi3`, `green_aura`, `gem-aura`\n- **Neon** — `neon`, `neon_mouse`, `frac_shader01_smooth_neon`\n- **Fire \u0026 energy** — `genergy`, `material_energy`, `heat`, `heat-wave`\n\n### Motion \u0026 Animation\n- **Wave effects** — `wave_diag`, `wave_spiral`, `blue_wave`, `code_wave`, `psyche_wave`, `spiral_wave`\n- **Ripple effects** — `ripple`, `ripple_cycle`, `ripple_rainbow`, `ripple_prisim`, `c_ripple`, `psyche_ripple`\n- **Shake \u0026 tremor** — `shake`, `tremor1`–`tremor4`, `tearing`\n- **Rotation \u0026 spin** — `rotate_xyz`, `rotate_xyz_zoom`, `fold-spin`, `rainbow_cd_spin`\n\n### Nature \u0026 Organic\n- **Water effects** — `water`, `water_full`, `water_rgb`, `waterbend`, `underwater`, `ocean`, `fold-water`\n- **Smoke \u0026 air** — `smoke`, `air`, `air_full`, `air-bowl`\n- **Psychedelic** — `psych`, `psyche_ripple`, `psyche_wave`, `acid_color2`, `acidcam`, `acidcolor`, `halluc_gem`, `halluc_liquid`\n\n### Blending \u0026 Compositing (material/)\nThe `material/` folder contains **200+ shaders** focused on texture blending and compositing techniques:\n- **Alpha blending** — `material_alphablend`, `material_alphablend_xor`, `material_alphablend_bright`\n- **Echo compositing** — `material_echo`, `material_echo_half`, `material_echo_mirror`, `material_echo_xor`\n- **Mirror compositing** — `material_mirror1`–`material_mirror3`, `material_mirror_alpha`\n- **Fill effects** — `material_fill`, `material_fill_black`, `material_fill_white`, `material_fill_pencil`\n- **XOR blending** — `material_xor`, `material_xor_blend`, `material_xor_rgb`\n- **Special** — `material_matrix`, `material_psychedelic`, `material_underwater`, `material_ripple`\n\n### Interactive (Mouse-Controlled)\nMany shaders respond to mouse position for real-time control:\n- `air_full_mouse`, `audio_mouse`, `apart_mouse`, `bubble-zoom-mouse`, `code_flux_mouse`, `fisheye_mouse`, `hue-mouse`, `kale_mouse`, `matrix_mouse`, `neon_mouse`, `spiral-mouse`, `swirlMouse`, `xorMouse`, `zoom_in_out_mouse`\n\n### Gem \u0026 Crystal\n- `gem-color-spiral`, `gem-deep`, `gem-fish`, `gem-ripple`, `gem_frac`, `gem_glass`, `gem_metal`, `gem_rainbow_metal`, `gem_polar`, `halluc_gem`\n\n## Additional Shader Families\n\nThe categories above are summaries — the collection contains many large named series that share a common style. The sections below describe those families. Each family has many numbered/themed members; only representative names are shown.\n\n### `ant_gem_*` series (≈146 shaders)\nAudio-reactive layered overlays that combine the geometry of the `ant_*` shaders with the saturated palette of the `gem_*` shaders. They drive a multi-pass color/warp on top of the camera frame using `amp_*` audio uniforms. Representative members: `ant_gem_aurora_tunnel`, `ant_gem_chrome_wave`, `ant_gem_cosmic_web`, `ant_gem_crystal_pulse`, `ant_gem_deep_bloom`, `ant_gem_diamond_storm`, `ant_gem_fire_spoke`, `ant_gem_fractal_ocean`, `ant_gem_glass_mandala`, `ant_gem_metal_*` (many subvariants: `_aurora`, `_cascade`, `_chrome`, `_coil`, `_crystal`, `_ember`, `_flux`, `_forge`, `_fracture`, `_glacier`, `_helix`, `_inferno`, `_lattice`, `_nebula`, `_opal`, `_orbital`, `_prism`, `_pulse`, `_ripple`, `_shard`, `_storm`, `_tessera`, `_vortex`, `_weave`).\n\n### `game_*` and `game_ant_*` series (≈126 shaders)\nGameplay-friendly post-process variants — calibrated to be visible without significantly distorting screen-space gameplay (no aggressive UV warping, controlled alpha, no gameplay-occluding overlays). Two sub-families:\n\n- **Tone / film looks** — `game_amber_mono`, `game_anamorphic`, `game_anime_cel`, `game_arcade_crt`, `game_bleach_bypass`, `game_chroma_split`, `game_cinema_wide`, `game_color_grade_*`, `game_film_grain`, `game_lcd_subpixel`, `game_lo_fi`, `game_neon_outline`, `game_night_vision`, `game_paper_sketch`, `game_retro_vhs`, `game_thermal`, `game_tilt_shift`, `game_vignette_*`.\n- **`game_ant_*` boosted overlays** — gameplay-tuned versions of the `ant_gem_*` family (same names: `aurora_tunnel`, `chrome_wave`, `cosmic_web`, `metal_*`, `gem_*`, `frac_*`). Higher base alpha so the effect is visible during gameplay but the underlying scene remains readable.\n\n### `react*` series (≈21 shaders)\nNumbered audio-reactive shaders (`react`, `react2` … `react20+`). Each reacts to `amp` / `amp_*` uniforms with a different visual response (color shift, warp, bloom, kaleidoscope, wave). Useful as drop-in audio-visualizer post-effects.\n\n### `random_*` series (≈60 shaders)\nHash- or noise-driven randomized effects. Examples: `random_colors`, `random_pos_fish`, `random_resize`, `random_rgb`, `random_rgb_strobe`, `random_soul`, `random_soul_by_mouse`, `random_spectrum_deep_melt`, `random_pixels_static`. Many use `seed` / `random_seed` to reproducibly drive pixel scrambling, color jitter, or position shuffling.\n\n### `Liquid_*` series (≈11 shaders)\nLiquid / molten distortion overlays — `Liquid_Censorship`, `Liquid_Crystal`, `Liquid_Crystal_2`, `Liquid_Crystal_Rainbow1`, `Liquid_Fractal_Tunnel`, `Liquid_Heat`, `Liquid_Heat_blend`, `Liquid_Light_Rainbow_Blend`. These animate flowing UV warps with chromatic separation.\n\n### `drain*` series (≈9 shaders)\nWhirlpool / drain swirls pulling toward screen center: `drain`, `drain_bend`, `drain_mandella`, `drain_mirror`, `drain_mirror_amp`, `drain_mirror_top`, `drain_mouse`, `drain_rainbow`. The `_amp` and `_mouse` variants drive the swirl center / strength via audio or pointer.\n\n### `huri*` series (≈8 shaders)\nHurricane-style rotating swirl/zoom effects — `huri`, `huri1`–`huri3`, `huri_af`, `huri_create_mouse`, `hurixyz`, `huriz`. The `_af` variant uses audio-frequency drive (`amp_high`/`amp_low`); the `_mouse` variant tracks the pointer.\n\n### `af_scale*` series (≈5 shaders)\nAudio-frequency-driven uniform-scale shaders — `af_scale`, `af_scale2`, `af_scale3`, `af_scale_puple`, `af_scale_spectrum`. Frame is uniformly scaled in/out using bass / spectrum bin energy.\n\n---\n\n## Frame Cache \u0026 Spectrum History\n\n### Frame Cache Uniforms (`samp1`–`samp8`)\n\nThe host maintains a rolling ring buffer of the most recently rendered frames and binds them to `samp1`–`samp8`:\n\n| Uniform | Age | Meaning |\n|---------|-----|----------|\n| `samp` | 0 (now) | Current live frame |\n| `samp8` | −1 | 1 frame ago (newest cache entry) |\n| `samp7` | −2 | 2 frames ago |\n| `samp6` | −3 | 3 frames ago |\n| `samp5` | −4 | 4 frames ago |\n| `samp4` | −5 | 5 frames ago |\n| `samp3` | −6 | 6 frames ago |\n| `samp2` | −7 | 7 frames ago |\n| `samp1` | −8 | 8 frames ago (oldest cache entry) |\n\nThe cache is only populated when the host has texture caching enabled. In that mode, shaders can:\n- **Stack ghost echoes** — blend `samp` through `samp8` at decreasing opacity.\n- **Build feedback tunnels** — zoom/rotate before each cache lookup so older frames appear as receding rings.\n- **Drive motion blur trails** — offset each cache layer along an audio-driven direction vector.\n- **Detect movement** — subtract `samp8` from `samp` to isolate pixel change.\n\nConvenience helper used by many shaders in this collection:\n```glsl\nvec4 cacheHist(int i, vec2 uv) {\n    if (i == 0) return texture(samp,  uv);\n    if (i == 1) return texture(samp1, uv);\n    // ... samp2 through samp8 ...\n    return texture(samp8, uv);\n}\n```\n\n### Spectrum History Uniforms (`spectrum0`–`spectrum7`)\n\nIn addition to the per-frame FFT exposed through `amp_*` scalars and `spectrum`, the host maintains a ring of 8 consecutive FFT frames:\n\n| Uniform | Age | Meaning |\n|---------|-----|----------|\n| `spectrum0` | 0 (now) | Current frame's FFT spectrum |\n| `spectrum1` | −1 | 1 FFT frame ago |\n| `spectrum2` | −2 | 2 FFT frames ago |\n| `spectrum3` | −3 | 3 FFT frames ago |\n| `spectrum4` | −4 | 4 FFT frames ago |\n| `spectrum5` | −5 | 5 FFT frames ago |\n| `spectrum6` | −6 | 6 FFT frames ago |\n| `spectrum7` | −7 | 7 FFT frames ago (oldest) |\n\nEach is a `sampler1D` with `GL_R32F` internal format. Sample with a normalized frequency coordinate `[0, 1]`:\n```glsl\nfloat bass_now    = texture(spectrum0, 0.03).r;\nfloat bass_oldest = texture(spectrum7, 0.03).r;\n```\n\nCommon frequency landmarks (approximate, depends on FFT size and sample rate):\n\n| Frequency coord | Approx. range | Band |\n|----------------|---------------|------|\n| 0.00 – 0.06 | \u003c ~150 Hz | Sub-bass |\n| 0.06 – 0.20 | ~150–500 Hz | Bass |\n| 0.20 – 0.35 | ~500–1 kHz | Low-mid |\n| 0.35 – 0.55 | ~1–3 kHz | Mid |\n| 0.55 – 0.75 | ~3–8 kHz | Presence/treble |\n| 0.75 – 1.00 | \u003e ~8 kHz | Air/high-treble |\n\nConvenience helper for reading any history slot:\n```glsl\nfloat specHist(int i, float freq) {\n    if (i == 0) return texture(spectrum0, freq).r;\n    if (i == 1) return texture(spectrum1, freq).r;\n    // ... spectrum2 through spectrum7 ...\n    return texture(spectrum7, freq).r;\n}\n\n// Accumulated energy across all 8 slots (useful for sustain detection)\nfloat histEnergy(float freq) {\n    float e = 0.0;\n    for (int i = 0; i \u003c 8; i++) e += specHist(i, freq);\n    return e;\n}\n```\n\n---\n\n## New Shader Families (Added 2026)\n\n### `ant_cache_spectrum8_*` series (25 shaders)\nAudio-reactive shaders that combine an 8-frame texture cache (`samp1`–`samp8`) with per-slot FFT history (`spectrum0`–`spectrum7`). Each shader has a distinct visual theme but shares the same feedback architecture: the cache is used for zoom/rotate feedback layering and the spectrum history modulates per-layer hue shift, zoom depth, and rotation speed. All use `iTime` for smooth animation.\n\nMembers: `acid_rain`, `caustic_storm`, `chromatic_pulse`, `fractal`, `galaxy_swirl`, `glitch_storm`, `hex_grid`, `holographic`, `kaleidoscope`, `lava_flow`, `lightning`, `mandala`, `neon_grid`, `neural`, `oilslick`, `plasma`, `radial_echo`, `spectrum_rings`, `starburst`, `strobe_tunnel`, `tunnel`, `voronoi_pulse`, `vortex`, `warp_drive`, `zebra_wave`.\n\n### `ant_peak_inversion_cache_spectrum_time_*` series (25 shaders)\nBuilt on the same architecture as `ant_cache_spectrum8_*` but with effects tuned to be approximately 5× more intense. Historical FFT energy is accumulated across all 8 spectrum slots via `histEnergy()` and then used with large multipliers for zoom collapse, rotation snap, and color inversion. Uses `iTime`. Adds hard peak inversion (`mix(color, 1-color, ...)`) at `amp_peak` thresholds.\n\nMembers: `acid_rain_flood`, `caustic_drowning`, `chromatic_quake`, `fractal_inferno`, `galaxy_devourer`, `glitch_apocalypse`, `hex_seizure`, `hologram_collapse`, `hyperspace_tunnel`, `kaleidoscope_storm`, `lightning_god`, `magma_eruption`, `mandala_pulse`, `neon_grid_inferno`, `neural_overload`, `oilslick_meltdown`, `plasma_furnace`, `radial_echo_chamber`, `spectrum_visualizer`, `starburst_supernova`, `strobe_void`, `voronoi_seizure`, `vortex_singularity`, `warp_drive_overload`, `zebra_riot`.\n\n### `ant_time_f_color_*` series (25 shaders)\nA new family that makes the use of frame history and FFT history **visually obvious and structural** — the history is not just a subtle feedback modifier but the primary compositional device. Uses `time_f` (safe to use since the host now wraps at `65536 × 2π` rather than `2π`, preserving trig and `mod()` continuity). Each shader presents the 9 cache frames and/or 8 spectrum slots as explicit visible elements:\n\n| Shader | How history is shown |\n|--------|----------------------|\n| `ringbuffer_spiral` | 9 spiral arms, each sampling a different cache frame |\n| `echo_chamber` | 8 ghost copies of past frames offset in an audio-driven ring |\n| `spectrum_waterfall` | y-axis = age; top row = `spectrum0` (now), bottom = `spectrum7` |\n| `timeline_strips` | Screen divided into 9 vertical strips, one per cache frame |\n| `trail_blaze` | Motion-blur trail through all 9 frames along an audio path |\n| `ghost_train` | 8 ghosts marching across the screen at different speeds |\n| `memory_kaleidoscope` | Pie-slice kaleidoscope where each slice = different cache frame |\n| `tunnel_recall` | Concentric rings, one ring per cache frame, with visible borders |\n| `fft_aurora` | 8 aurora curtain bands, one per `spectrum0`–`spectrum7` |\n| `shutter_burst` | 3×3 grid showing all 9 cache frames simultaneously |\n| `polar_history` | Clock-face wedges: angle = age, radius = FFT frequency |\n| `radial_smear` | Concentric rings of cache frames blended outward |\n| `crosshatch_recall` | 3×3 grid cells with per-cell FFT history overlay bar |\n| `afterimage_burn` | max-blend of all 9 frames for a long-exposure burn-in look |\n| `quantum_freeze` | Random per-tile pick from 9 cache frames |\n| `light_painting` | Additive long-exposure trail across all cache frames |\n| `bass_pulse_rings` | 8 expanding rings; each ring's brightness = bass history at that age |\n| `glitch_archive` | Scanline bands snap to different cache frames at audio intervals |\n| `data_stream` | 8 vertical columns, each scrolling one `spectrum*` slot |\n| `parallax_layers` | 9 depth planes scrolling at speeds proportional to their age |\n| `mirror_corridor` | 8 receding mirror planes, each showing an older cache frame |\n| `timeline_swirl` | Spiral where angle encodes age and radius encodes FFT frequency |\n| `acid_smear` | Each cache frame distorted by its matching `spectrum*` waveform |\n| `spectrogram_paint` | Full 2-D spectrogram (x = frequency, y = age 0–7) |\n| `holo_replay` | 9 transparent holographic layers with chromatic aberration per layer |\n\n### `crystal*` series\nCrystal lattice / refraction overlays — `crystal`, `crystal-2`, `crystal-3`, `crystal-4`, `crystalball`, `crystalbend`, `crystalblend2`, `crystalprism`. Faceted UV reflections, often combined with chromatic dispersion.\n\n### `plasma*` series\nClassic plasma-field overlays — `plasma`, `plasma2`, `plasma3`, `plasma_prism`, `plasma_rainbow`, `plasma_xor`. Sine-mixed sample positions yield the canonical demo-scene plasma color field.\n\n### `comb3*` series\nThree-tap comb-filter / lattice samplers (`comb3`, `comb3-frac-mouse`, `comb3-frac-mouse2`, `comb3_geo_mouse`, `comb3_mouse`). Sample the input at three offset positions and recombine — pointer-controlled in `_mouse` variants.\n\n### `composite*` series\nNTSC / CRT / VHS composite-video emulators: `composite`, `composite-static`, `composite2`, `composite3`, `composite_crt`, `composite_vhs`, `composite_vhs_flat`. Each adds chroma bleed, scanlines, and noise characteristic of analog signal degradation.\n\n### `pong-atan*` series\nATAN-based wave shapers reminiscent of CRT scope output: `pong-ataan-ex`, `pong-atan`, `pong-atan2`, `pong-atan3`, `pong_tex`. Polar-coordinate atan2 warps create rolling wave bands across the frame.\n\n### `fat-*` series\nThick / blocky color variants: `fat`, `fat-blue`, `fat-green`, `fat-red`, `fat-rgb`, `fat-slow`. Quantize and saturate the frame into chunky color regions.\n\n### Smaller named families\nEach of these is a small set (3–6 shaders) following the same naming pattern:\n\n| Family | Members | Description |\n|--------|---------|-------------|\n| `scramble*` | `scramble`, `scramble-2`, `scramble-3` | Block / pixel scrambling that shuffles regions of the frame. |\n| `snake*` | `snake`, `snake_dir`, `snake_updown` | Snake-style directional UV displacement. |\n| `splash*` | `splash`, `splash-x`, `splash-y` | Radial / axial splash distortions. |\n| `optxtime*` | `optxtime`, `optxtime_cos`, `optxtime_tex` | `optx`/time-driven parameter sweeps. |\n| `Electric*` | `Electric`, `Electric_*` | Electric arc / lightning overlays. |\n| `DispersionX*` | `DispersionX`, `DispersionX_*` | Chromatic dispersion variants along the X axis. |\n| `tremor*` | `tremor1`–`tremor4` | Frame-shake / tremor effects of escalating intensity. |\n| `cyclone*` | `cyclone*` (3) | Spiraling cyclone warps. |\n| `glitchy*` | `glitchy*` (3) | Lighter-weight glitch variants distinct from `glitch_*`. |\n| `code*` | `code_flux_mouse`, `code_wave`, … | Matrix/code-rain styled overlays. |\n| `gpt*` | `gpt_echo`, `gptswirl`, … | AI-generated / experimental shaders. |\n| `dream*`, `ghost*`, `magic*`, `light*`, `lightfade*` | various | Atmospheric soft-glow overlays. |\n\n### Standalone named shaders\nNotable individual shaders not part of a family that may not be in the categories above: `wormhole`, `tornado`, `tridim`, `triwavedistort`, `twirl`, `twarp`, `twarp2`, `tv`, `weirdlines`, `whirlx`, `wlight`, `wrap`, `wspiral`, `xcordstrobe`, `yin`, `zigzag`, `today`, `timeval`, `underwaterenchanced`. Each is a single-file effect — see the source for specific behavior.\n\n### `material/` folder additions\nBeyond the blending categories listed earlier, the `material/` folder also contains many less-common compositors. Patterns include `material_*_xor`, `material_*_blend`, `material_*_alpha`, `material_*_strobe`, and effect-specific variants such as `material_psychedelic`, `material_underwater`, `material_ripple`, `material_matrix`, `material_energy`, `material_pencil_*`. Most expect both `samp` (current frame) and `mat_samp` (overlay texture) plus `mat_size` and `image_pos`.\n\n## Uniforms Reference\n\nThe shaders in this collection expect the uniforms listed below. Not every shader uses every uniform — most use a small subset (typically `samp`, `time_f`, `iResolution`, and optionally `iMouse` or one of the `amp_*` audio uniforms). Hosts loading these shaders should provide whichever of these uniforms are referenced by the shader being run.\n\n### Core Inputs\n\n| Uniform | Type | Description |\n|---------|------|-------------|\n| `samp` | `sampler2D` | Primary input texture (camera/video frame, or current scene). The most common sampler in this collection. |\n| `iResolution` | `vec2` | Viewport resolution in pixels (width, height). A few shaders also accept `vec3`-style resolution; `vec2` is the canonical form here. |\n| `time_f` | `float` | Elapsed time in seconds — main animation clock used by the majority of shaders. |\n| `iTime` | `float` | Alternate elapsed-time uniform (Shadertoy-style). Equivalent to `time_f` where both are present. |\n| `iTimeDelta` | `float` | Time since the last frame, in seconds. |\n| `iFrame` | `int` | Current frame number (monotonically increasing). |\n| `iFrameRate` | `float` | Target/measured frame rate in frames per second. |\n| `iDate` | `vec4` | Wall-clock date packed as `(year, month, day, seconds-since-midnight)`. |\n| `time_speed` | `float` | Multiplier controlling the rate at which `time_f` advances (used by hosts that scrub or accelerate animation). |\n\n### Mouse / Pointer\n\n| Uniform | Type | Description |\n|---------|------|-------------|\n| `iMouse` | `vec2` / `vec4` | Mouse position. As `vec2`: current pointer in pixels. As `vec4`: `(xy = current position, zw = last click position; z/w sign indicates button state)`. |\n| `iMouseClick` | `vec2` | Position of the last mouse click in pixels. |\n\n### Additional Texture Samplers\n\nSome shaders blend, echo, or composite multiple textures. Hosts should bind these as needed.\n\n| Uniform | Type | Description |\n|---------|------|-------------|\n| `samp1` … `samp8` | `sampler2D` | **Frame history ring buffer.** When the texture cache is enabled the host fills these as a rolling window of the 8 most-recently rendered frames: `samp1` = oldest (furthest back in time), `samp8` = newest (most recent previous frame), `samp` = the current live frame. Shaders can build motion-blur trails, persistent ghost echoes, feedback tunnels, and other time-layered effects by sampling across this ring. See *Frame Cache Uniforms* below. |\n| `mat_samp` | `sampler2D` | Material/overlay texture (paired with `mat_size` and `image_pos`). Used by shaders in the `material/` folder. |\n| `mat_size` | `vec2` | Pixel dimensions of `mat_samp`. |\n| `image_pos` | `vec2` | Position offset (in pixels or normalized coords) at which the material texture should be placed. |\n\n### Audio Reactivity\n\nShaders that respond to live audio expect any subset of these. Values are typically in the range `[0.0, 1.0]` unless noted.\n\n| Uniform | Type | Description |\n|---------|------|-------------|\n| `amp` | `float` | Generic audio amplitude / bass level (0.0–1.0). Often the simple \"loudness\" input. |\n| `uamp` | `float` | Audio amplitude after sensitivity scaling — the user-tunable version of `amp`. |\n| `iamp` | `float` | Estimated dominant frequency in Hz (via zero-crossing rate); not a 0–1 value. |\n| `amp_peak` | `float` | Peak absolute sample value in the current audio buffer. |\n| `amp_rms` | `float` | RMS energy of the current audio buffer. |\n| `amp_smooth` | `float` | Exponentially-smoothed amplitude for gradual transitions. |\n| `amp_low` | `float` | Bass-band energy (below ~300 Hz). |\n| `amp_mid` | `float` | Mid-band energy (~300–3000 Hz). |\n| `amp_high` | `float` | Treble-band energy (above ~3000 Hz). |\n| `spectrum` | `sampler1D` | 1-D frequency spectrum texture (FFT bins) for shaders that read individual bands. |  \n| `spectrum0` … `spectrum7` | `sampler1D` | **FFT history ring.** Eight 1-D spectrum textures capturing recent FFT frames: `spectrum0` = the current frame's spectrum (newest), `spectrum7` = the oldest stored spectrum. Each texture contains `FFT_SIZE/2` red-channel texels in `[0, 1]` representing normalized magnitude per frequency bin. Shaders can compare current and historical spectra to detect transients, build spectrograms, or drive effects whose intensity depends on how long a band has been active. See *Spectrum History Uniforms* below. |\n| `iSampleRate` | `float` | Audio sample rate in Hz (e.g. 44100). |\n| `iChannelTime[4]` | `float[4]` | Playback time for each texture channel (Shadertoy-compatible). |\n| `iChannelResolution[4]` | `vec3[4]` | Resolution of each texture channel. |\n\n### Color / Channel Controls\n\nUsed by shaders that expose per-channel mixing, fading, or alpha blending.\n\n| Uniform | Type | Description |\n|---------|------|-------------|\n| `alpha` | `float` | Generic alpha / blend factor (0.0–1.0). |\n| `alpha_value` | `float` | Alternate scalar alpha used by some shaders. |\n| `alpha_r`, `alpha_g`, `alpha_b` | `float` | Per-channel alpha multipliers for red/green/blue. |\n| `value_alpha_r`, `value_alpha_g`, `value_alpha_b` | `float` | Per-channel alpha values (alternate naming used by some shaders). |\n| `blendAmt` | `float` | Generic blend amount between two layers (0.0 = base only, 1.0 = overlay only). |\n| `blendMode` | `int` | Discrete blend-mode selector (0 = normal, additional values shader-specific). |\n| `inc_value`, `inc_valuex` | `vec4` | Color/parameter offsets accumulated per frame (used by stateful color-shift shaders). |\n| `optx` | `vec4` | Generic 4-component option vector (shader-specific). |\n\n### Effect / Animation Parameters\n\nCommon tweak knobs exposed by individual effects.\n\n| Uniform | Type | Description |\n|---------|------|-------------|\n| `frequency` | `float` (default `0.5`) | Main spatial/temporal frequency of warps and waves. |\n| `strength` | `float` (default `1.0`) | Intensity multiplier for warps and distortions. |\n| `uDistortion` | `float` (default `0.5`) | Distortion magnitude for glitch / warp shaders. |\n| `uPhaseRate` | `float` (default `0.1`) | Phase advance rate for cyclic effects. |\n| `uRandRate` | `float` (default `0.2`) | Rate at which random/jitter values evolve. |\n| `uRotateSpeed` | `float` (default `1.0`) | Rotation speed multiplier. |\n| `uWarpSpeed` | `float` (default `0.1`) | Warp animation speed multiplier. |\n| `seed`, `random_seed`, `random_var` | `float` / `vec4` | Seed inputs for hashed/randomized shaders. |\n| `index_value` | `float` | Discrete index input (selector for palettes, modes, etc.). |\n| `restore_black` | `float` | Toggle (0/1) used by the \"strip black / restore black\" pipeline so cropped letterboxing can be re-applied after a color-altering pass. |\n\n### 3-D / Geometry (rarely used)\n\nA handful of shaders expect a model-view-projection setup for vertex transforms.\n\n| Uniform | Type | Description |\n|---------|------|-------------|\n| `mv_matrix` | `mat4` | Model-view matrix. |\n| `proj_matrix` | `mat4` | Projection matrix. |\n\n## License\n\nThis shader collection is **free to use** and released under the **MIT License**. You may use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of these shaders in personal, educational, or commercial projects, provided that the original copyright notice and permission notice are included in all copies or substantial portions of the work.\n\nThe shaders are provided **\"as is\", without warranty of any kind**, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement.\n\nSee [LICENSE](LICENSE) for the full license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flostjared%2Fshaders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flostjared%2Fshaders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flostjared%2Fshaders/lists"}