bevy_tiled_background
A small Bevy UI material plugin for repeating image patterns as full-screen or panel backgrounds. It keeps tiles in logical UI pixels, so high-DPI displays keep the same visual density as desktop.

What It Does
bevy_tiled_background renders a texture repeatedly inside a Bevy Node using a custom UiMaterial.
Use it for animated menu backgrounds, decorative panels, loading screens, card backdrops, or any UI area that needs a tiled image pattern.
Features
- Logical-pixel tiling that looks consistent across desktop, mobile, and high-DPI screens
- Native texture aspect ratio preservation without stretching
- Tint and opacity control through
color - Rotation for diagonal or stylized patterns
- Row staggering for brick-like layouts
- Pixel spacing between repeated images
- Smooth scrolling animation in any direction
Installation
Or add it manually:
[]
= "0.5"
Quick Start
Add TiledBackgroundPlugin, create a TiledBackgroundMaterial, then attach it to any UI Node with MaterialNode.
use *;
use ;
Run the included example with:
Material Properties
| Property | Type | Description |
|---|---|---|
color |
LinearRgba |
Tint multiplied with the texture. Use white for no tint; alpha controls opacity. |
scale |
f32 |
Tile image size multiplier. 1.0 uses the texture's native size. |
rotation |
f32 |
Pattern rotation in radians. |
stagger |
f32 |
Horizontal row offset as a fraction of the tile width. 0.5 creates a half-tile brick pattern. |
spacing |
f32 |
Gap between repeated images in logical pixels. |
scroll_speed |
Vec2 |
Pattern animation speed in logical pixels per second. |
pattern_texture |
Handle<Image> |
Texture image to repeat. |
pixel_scale |
f32 |
Plugin-managed window scale conversion. Leave this at the default value. |
Bevy Compatibility
| Bevy | bevy_tiled_background |
|---|---|
| 0.19 | 0.5 |
| 0.17 | 0.4 |
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.