# HyprTile Sine Cinema Pack

Three signature-quality TTF sine scrollers for `hyprtile-wallpaperd`, built for the GLES2 / GLSL ES 1.00 shader ABI.

## Looks

### `ribbon` — Luxe Ribbon
A prestige-trailer interpretation of the classic Amiga sine scroller: warm metallic typography, a two-harmonic screen-space wave, a moving specular sweep, controlled edge light, vignette and film grain. The wave phase lives in screen space, so wrapping the real text texture does not introduce a phase jump at the seam.

### `prism-echo` — Prism Echo
A modern retro-futuristic scroller with three independently phase-shifted TTF layers, cyan/magenta parallax echoes, subtle RGB source separation and restrained scan texture. Bass and kick gently expand the wave/separation, while treble adds a little more chromatic/specular energy. With no audio analyzer it remains fully animated and visually complete.

### `ghost-monolith` — Ghost Monolith
A giant, slow, cold-cinematic scroller where the wallpaper is revealed inside the moving type. A mirrored floor reflection, moving exposure shutters and two-frame history create temporal ghosts without turning the whole effect into uncontrolled feedback.

## Requirements

High-quality text uses HyprTile's TTF mask ABI. Supply both `--pack-text` and `--pack-font`. The shaders sample the mask from alpha only and preserve the rasterized text texture's aspect ratio.

Suggested fonts are bold or extended sans/mono faces with good large-size rasterization. No font is bundled with this pack.

## Install

Copy the whole folder to one of HyprTile's shader roots, for example:

```bash
mkdir -p ~/.hyprtile/shader/wallpaperd
cp -r hyprtile-sine-cinema-pack ~/.hyprtile/shader/wallpaperd/
```

The pack slug is `sine-cinema`.

## Launch examples

Luxe Ribbon:

```bash
hyprtile-wallpaperd \
  --image /path/to/wallpaper.webp \
  --pack sine-cinema:ribbon \
  --pack-text "WELCOME TO THE MACHINE  •  HYPRTILE  •  " \
  --pack-font /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf \
  --pack-font-size 220
```

Prism Echo:

```bash
hyprtile-wallpaperd \
  --image /path/to/wallpaper.webp \
  --pack sine-cinema:prism-echo \
  --pack-text "SIGNAL / DREAM / REPEAT  —  " \
  --pack-font /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf \
  --pack-font-size 192
```

Ghost Monolith:

```bash
hyprtile-wallpaperd \
  --image /path/to/wallpaper.webp \
  --pack sine-cinema:ghost-monolith \
  --pack-text "BEYOND THE HORIZON  •  " \
  --pack-font /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf \
  --pack-font-size 280
```

Default preset (`default.wallpaper`) is the Luxe Ribbon look:

```bash
--pack sine-cinema
```

## Tuning notes

All preset-controlled uniforms are `float`/`vecN` values as required by HyprTile's `.params` loader. Useful first knobs:

- Ribbon: `u_speed`, `u_wave_amp`, `u_wave_freq`, `u_text_height`, `u_gap`.
- Prism Echo: `u_echo_separation`, `u_chroma_shift`, `u_wave_amp`, `u_glow`.
- Ghost Monolith: `u_text_height`, `u_reflection`, `u_trail`, `u_outside_dim`.

`ghost-monolith.wallpaper` intentionally enables `history=2`; the other presets do not write global `history`, `fps`, `mix` or `brightness` values so they behave politely in longer pack chains.

## ABI / GLES2 design checklist

- GLSL ES 1.00 syntax: `varying`, `texture2D`, `gl_FragColor`.
- No ES3-only features, bitwise operations, `texelFetch`, SSBOs, UBOs or derivatives.
- No invented samplers or uniforms outside the documented HyprTile ABI plus preset params.
- `u_tex` is sampled without a Y flip.
- TTF text is sampled from `u_text_mask_tex.a` only.
- Text aspect ratio comes from `u_text_mask_resolution`.
- Seamless wrap uses the real text width plus a configurable physical gap.
- Sine phase is screen-space based so the wave remains continuous at wrap boundaries.
- Missing TTF text mask falls back to the input image unchanged.
- Missing audio in Prism Echo falls back to zero reactivity.
- Missing history in Ghost Monolith simply renders the current frame.
- Texture sample counts stay modest; no large blur kernels or dynamic heavy loops.

## Files

```text
hyprtile-sine-cinema-pack/
├── default.wallpaper
├── ribbon.wallpaper
├── ribbon.params
├── sine-luxe-ribbon.frag
├── prism-echo.wallpaper
├── prism-echo.params
├── sine-prism-echo.frag
├── ghost-monolith.wallpaper
├── ghost-monolith.params
├── sine-ghost-monolith.frag
└── README.md
```
