# Texture Generation Scripts

## Blue Noise Generator

`generate_blue_noise.py` - Generates blue noise textures for high-quality dithering effects.

### Requirements

```bash
pip install numpy pillow scipy
```

### Usage

Basic usage (generates 128x128 texture):
```bash
python generate_blue_noise.py
```

Custom size:
```bash
python generate_blue_noise.py --width 256 --height 256
```

Custom output path:
```bash
python generate_blue_noise.py --output ../my_blue_noise.png
```

Advanced options:
```bash
python generate_blue_noise.py --width 128 --height 128 --sigma 1.5 --method void_cluster
```

### Parameters

- `--width`: Texture width in pixels (default: 128)
- `--height`: Texture height in pixels (default: 128)
- `--method`: Generation method
  - `void_cluster`: High-quality void-and-cluster method (default, recommended)
  - `annealing`: Simulated annealing method (slower)
- `--sigma`: Gaussian kernel sigma for void_cluster method (default: 1.5)
  - Lower values (0.8-1.2): Tighter clustering, more high-frequency
  - Higher values (2.0-3.0): Smoother distribution
- `--iterations`: Number of iterations (optional, auto-calculated if not specified)
- `--output`: Output file path (default: ../blue_noise.png)

### What is Blue Noise?

Blue noise is a type of noise with energy concentrated in high frequencies and minimal low-frequency content. This makes it ideal for dithering because:

- No visible patterns or clustering
- Smooth gradients without banding
- Perceptually pleasing distribution
- Better than Bayer or white noise for transparency effects

### Use Cases in snow_trail_sdl

- **Tree dissolve effect**: Dither trees between camera and player for unobstructed view
- **Temporal effects**: Screen-space dithering for transitions
- **Transparency**: High-quality alpha dithering
- **LOD transitions**: Smooth fade between detail levels
