Fast pattern synthesis preserving local tile constraints. Safe Rust implementation with CLI and library interfaces.
| Source | Generated | Visualized |
|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
# Install with Rust 1.88.0 or later
cargo install greedytile
# Generate pattern from source image
greedytile input.png
# Process directory of images including rotation, mirroring, and animation
greedytile ./patterns/ -r -m -vGreedyTile generates patterns by placing 3×3 tiles extracted from a source image. Weights for randomly selecting placement are influenced by several factors:
- Entropy weighting: Prioritizes positions where fewer tile options are valid (similar to WFC)
- Global balance correction: If pixels are under-represented then selection is biased towards the source balance
- Distance-based probabilities: Pixel distance patterns in the source are replicated in the output
- Deadlock recovery: If no choices exist which respect tiles, pixels in a local area are removed before continuing
- Fixed tile size: Currently hardcoded to sample 3×3 pixel tiles from the source
- Extensibility: Would be improved by a plugin interface for adding new probability rules
































