# HyprTile Amiga Sine Scroller Pack (64-safe + tangent alignment)

This revision fixes two core issues:

1. **No more `too many params ... max is 64`**
   - The shader now uses grouped `vec4` uniforms (`u_motion1` ... `u_motion5`) so even rich presets and generated custom texts stay safely below wallpaperd's 64-param limit.

2. **Optional tangent-aligned letters**
   - You can now rotate each glyph so it follows the local slope of the sine curve.
   - This makes the text read like a real snake instead of only moving letters up and down.

## Direct pack presets

```bash
hyprtile-wallpaperd --pack sinus-scroller
hyprtile-wallpaperd --pack sinus-scroller:classic
hyprtile-wallpaperd --pack sinus-scroller:purple
hyprtile-wallpaperd --pack sinus-scroller:copper
hyprtile-wallpaperd --pack sinus-scroller:ice
hyprtile-wallpaperd --pack sinus-scroller:subtle
hyprtile-wallpaperd --pack sinus-scroller:big
hyprtile-wallpaperd --pack sinus-scroller:fast
hyprtile-wallpaperd --pack sinus-scroller:wild
hyprtile-wallpaperd --pack sinus-scroller:top
hyprtile-wallpaperd --pack sinus-scroller:giant
hyprtile-wallpaperd --pack sinus-scroller:tiny-fast
hyprtile-wallpaperd --pack sinus-scroller:mega-wave
hyprtile-wallpaperd --pack sinus-scroller:lowline
hyprtile-wallpaperd --pack sinus-scroller:centered
hyprtile-wallpaperd --pack sinus-scroller:copper-bars
hyprtile-wallpaperd --pack sinus-scroller:deep-space
```

## Helper usage

### Tangent-aligned snake text

```bash
./hyprtile-sinus-scroller --scene deep-space --align-to-wave 1 "THIS TEXT BENDS LIKE A SNAKE"
```

### Manual tuning

```bash
./hyprtile-sinus-scroller   --preset purple   --motion big   --speed 0.18   --height 0.16   --amplitude 0.10   --y 0.42   --waves 1.3   --letter-spacing 0.86   --gap 1.08   --align-to-wave 1   "HYPRTILE FOREVER"
```

### Chain-aware usage

```bash
hyprtile-wallpaperd --pack rasterbars:neon --pack sinus-scroller:deep-space
hyprtile-wallpaperd --pack starfield:warp --pack sinus-scroller:giant
```

## Important notes

- `--align-to-wave 0` keeps the old non-rotating behavior.
- `--align-to-wave 1` rotates every glyph to match the local tangent of the sine path in actual travel direction (right-to-left), so uphill segments lean right and downhill segments lean left.
- The helper still supports `--source-mix` for layering the scroller over previous packs or an input image/video.

## Rotated glyph edge fix

When tangent alignment is enabled, rotated 5x7 glyphs can extend beyond their original character cell. This revision evaluates the adjacent glyph cells too, so those overhanging bitmap pixels are no longer clipped at internal character boundaries.
