Caster Atlas
Home › Guides
What the caster atlas is
In Textured mode, alpha-clipped and transparent casters are drawn from the light's point of view into a shared texture, the caster atlas, one square tile per caster. The tile decides where their shadow has holes and how much light passes through. Casters are redrawn each frame, and only these casters use the atlas.
The main light uses one atlas (Resolution, default 2048). Point and spot lights use a second one of perspective tiles (Local Light Resolution, default 2048).
Tile sizing
Each tile is sized so one atlas texel covers about one screen pixel where its shadow is seen, scaled by Texel Density (default 1).
- Receiver Sizing (default on) measures, on the GPU, how far from the camera the surfaces under each shadow are, and sizes the tile for that distance. A canopy high above the camera still casts a sharp shadow at the viewer's feet. The measurement arrives a frame or more later: shadows sharpen at once and soften over about half a second. Without compute shaders, it uses the caster's distance instead.
- Detail Levels (default
1, up to4) and Detail Distances halve the texel density past each distance. - Shadow Stretch (default
0) adds texels for low lights that stretch shadows across the ground, up to four times at elevations below about 15°. - Continuous Tile Sizes (default on) gives each tile the texels it needs, without rounding, so moving casters sharpen and soften smoothly. Off, tiles round up to a power of two: sharper, but changing in visible steps. To match that sharpness with continuous sizes, set Texel Density to about
1.4. - Max Tile Size (default
8192) caps any one tile, so a single close caster can't fill the atlas.
Filtering
Filtering reconstructs shadow edges between atlas texels:
| Mode | Result |
|---|---|
| Match Caster (default) | Nearest for point-filtered base maps, Bilinear for the rest |
| Nearest | Texel-stepped edges, for pixel-art cutouts |
| Bilinear | Cutout edges placed at sub-texel precision, glass blended between texels |
| Bicubic | Smoother cutout edges, glass stays bilinear |
Shadows stay hard: filtering moves the edge, not its sharpness.
Planar alignment
With Planar Alignment (default on), flat casters such as grates, fences, windows, and foliage cards get a tile lying in their own surface. Straight rows of texture pixels then cast straight shadow edges at any light angle. Skinned and statically batched renderers, and lights within about 12° of the surface, use a light-facing tile instead.
Self-shadowing and bias
Atlas casters shadow themselves through their tile. Depth Bias and Normal Bias (default 1 texel each) work like URP's shadow bias. Raise them if an atlas caster shows acne on lit surfaces, and lower them if its shadow detaches from contact points.
A double-sided card seen from its unlit side is in its own shadow there. URP Lit lights that side with the front normal, so the card's back faces are shadowed where they show, except through its holes.
When the atlas is full
When tiles don't fit, the most distant tiles shrink first (Shrink Distant First, default on). With it off, all tiles shrink together. Casters that still don't fit cast with Uniform Opacity for that frame, counted by AtlasOverflowCasterCount. Point and spot light tiles that don't fit cast from their volumes.
Tuning quality and memory
At the default 2048 resolution, the main light atlas uses:
- 8 MB of depth, always
- up to 16 MB of transmittance, while transparent casters are in view
- up to 12 MB for a coverage layer, while filtered alpha-clipped casters are in view
To tune:
- Sharper shadows: raise Texel Density or Resolution, or Shadow Stretch for low suns.
- Less memory and fill: lower Resolution, add Detail Levels, or lower Max Tile Size. Uniform Opacity mode needs no atlas at all.