# HyprTile Cinematic Trilogy Pack

Three deliberately different GLES2 / GLSL ES 1.00 wallpaper shaders for `hyprtile-wallpaperd`.

## Presets

### `monolith`
A prestige title-card look: slow push-in, letterbox framing, subtle warm anamorphic sweep, grain, and large aspect-correct Now Playing typography. Bass/kick gently modulate the push-in and title scale; treble lifts the glow. If no Now Playing texture exists, the shader simply keeps the cinematic image treatment.

### `eclipse`
A cold sci-fi portal/eclipsed-lens composition. It bends the source around an offset orbital ring, uses three source samples for controlled chromatic separation, then adds a procedural ring/flare and grain. Audio changes the ring radius and intensity subtly. No history or text is required.

### `noir-echo`
A neo-noir temporal look using HyprTile history. Previous final frames are sampled with tiny zoom/drift offsets and alternating horizontal slabs, then mixed conservatively to avoid runaway feedback. It still works as a graded noir filter before history becomes available.

## Install

Copy this directory to:

```text
~/.hyprtile/shader/wallpaperd/hyprtile-cinematic-trilogy-pack/
```

The pack can then be resolved with `cinematic-trilogy:<preset>`.

## Example commands

Monolith Titles with a high-quality Now Playing font:

```bash
hyprtile-wallpaperd \
  --image /path/to/wallpaper.webp \
  --pack cinematic-trilogy:monolith \
  --pack-font /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf \
  --pack-font-size 220
```

Eclipse Lens:

```bash
hyprtile-wallpaperd \
  --image /path/to/wallpaper.webp \
  --pack cinematic-trilogy:eclipse
```

Noir Echo:

```bash
hyprtile-wallpaperd \
  --image /path/to/wallpaper.webp \
  --pack cinematic-trilogy:noir-echo
```

The default preset aliases the Monolith look:

```bash
hyprtile-wallpaperd --image /path/to/wallpaper.webp --pack cinematic-trilogy
```

## Tuning

All user-tunable parameters are floats or vectors in the `.params` files. Useful controls:

- `monolith.params`: `u_text_scale`, `u_text_y`, `u_text_glow`, `u_bar_size`, `u_audio_zoom`.
- `eclipse.params`: `u_radius`, `u_distortion`, `u_chromatic`, `u_ring_glow`, `u_audio_react`.
- `noir-echo.params`: `u_persistence`, `u_echo_zoom`, `u_slice_count`, `u_slice_shift`.

Keep `u_persistence` conservative; the supplied value is designed to avoid frozen or runaway history feedback.

## ABI / GLES2 notes

- GLSL ES 1.00 syntax only: `varying`, `texture2D()`, `gl_FragColor`.
- No extra texture units or undeclared HyprTile ABI samplers are assumed.
- No Y flip is performed inside the pack.
- Now Playing is sampled from `u_now_playing_tex.a` only and its texture aspect ratio is preserved.
- Audio values fall back to zero when unavailable.
- History is enabled only for `noir-echo`, with graceful startup fallback.
- Each shader uses a small number of samples and no large loops.

## Validation status

The pack was checked against the supplied HyprTile specification for manifest references, parameter declarations, allowed sampler names, GLSL ES 1.00-era syntax, Now Playing alpha sampling, history configuration, and fallback paths. The build environment used to assemble this ZIP did not provide a GLES2 shader compiler/runtime (`glslangValidator` / `libGLESv2`), so final driver compilation should be exercised on the target HyprTile system.
