Sprites, impostors & billboards
Baked content placed in 3D: the look of heavy geometry at the cost of a flat image.
The appearance of a complicated 3D object, a detailed sphere, a forest of plants, a swarm of shapes, can be baked into an image and placed in the scene rather than rendered in full every frame. The Rasterize node does this in two forms, impostors and sprites.
Impostors
Set Rasterize's mode to Raster and it bakes whatever it is fed into a flat image that lives natively in the scene. When the input is 3D geometry, wire a camera (Viewport Camera) to choose the viewpoint, or leave it unconnected and the object is auto-framed.
Re-baking is what makes it an impostor. reproject is Live by default, so the image re-captures as you orbit and the flat card keeps showing the correct 3D look. It stays a raster, continuously refreshed, holding its position and 3D appearance.
Set reproject to Baked and the capture happens once, then stays put. A frozen snapshot is the cheapest of these options, and it suits a look that does not need to change with the camera. Change bake_frame to re-bake from the scene as it stands now.
Because the result is a real image, it can feed a feedback loop for glowing trails, run through filters, or move with a content-space transform. See Rasters (images) and Loops & feedback.
Sprites
Switch Rasterize's mode to Sprite and the baked image is attached to a point and placed in the 3D scene as a textured sprite, which puts you in Points: light, fast, easy to multiply.
A single sprite carries one baked image. Each sprite also carries its own colour: @Cd rides the batch per particle and in high dynamic range, so a value pushed above 1 stays bright instead of clipping, which is what an emissive spark or a hot ember needs.
How that sprite is oriented is the next choice.
Billboard or card
Sprite mode has a face_camera toggle, on by default.
On gives a billboard. The sprite always turns to face the camera. It is cheap, flat, softens with depth, and scales to millions. Particles, sparks, distant crowds, foliage.
Off gives a card. The sprite holds a fixed orientation, taken from
@orientif the points carry it and composed from@Notherwise. It sits correctly in depth and behaves like a real surface in the scene, at more cost than a billboard.
Use a billboard for many cheap, always-facing flecks. Use a card when the sprite needs to lie flat on the ground, lean against a wall, or otherwise stay put in 3D.
Both come out unlit. A textured billboard can only render on the forward path, which has no lighting at all, so it stays unlit whatever you do. A card sits on the mesh path, so binding a PBR material to it does light it.
Many at once
Rasterize bakes exactly one sprite. Hand that single sprite to the Iterator and it multiplies into as many instances as you like, each placed, scaled and rotated however you drive it. A common pattern:
Object → Rasterize (Sprite) → Iterator → a field of instanced impostors
Billboards are what make this scale: thousands or millions of camera-facing sprites stay smooth where the same count of full geometry would crawl.
Choosing between them
The look of 3D, sitting in one place and refreshing with the camera: an impostor (Raster + Live).
A frozen image to filter or feed back: a Raster bake (Baked).
Lots of placed, camera-facing flecks: a Sprite billboard.
A tiltable flat surface in the scene: a Sprite card.
| Parameter | Type | Default | What it does |
|---|---|---|---|
input | Color Field or Volume or Field or Primitives or Collection | — | Content to rasterize into pixels — shapes, geometry, a field, or a volume (slice it with a plane) |
mode | String | "Raster" | Raster: bake to a raster (data). Sprite: place the bake as a textured sprite in the 3D scene. One of: Raster, Sprite. |
face_camera | Boolean | true | On: the sprite faces the camera (billboard). Off: a fixed-orientation quad you can tilt. |
camera | Camera3D | — | Camera for capturing 3D content (optional; flat 2D content ignores it) |
plane | Transform | — | Slice plane for a field/volume — wire a Transform3D and drag to slice |
projection | String | "First" | Field slice: First (flat), Max (MIP), Min, Average, Sum over the slab. One of: First, Max, Min, Average, Sum. |
samples | Number | 1 | Slab depth samples (1 = flat slice; more = smoother projection) |
resolution_mode | String | "Canvas" | How the baked raster's pixel size is chosen. One of: Canvas, Custom, Scale, Fit Content. |
res_width | Number | 1024 | Baked width in pixels |
res_height | Number | 1024 | Baked height in pixels |
res_scale | Number | 1 | Multiple of the canvas size |
padding | Number | 0 | Transparent bleed added around the content (px) |
fit_padding | Number | 0 | 3D auto-frame margin as a fraction of the content size |
supersample | String | "1×" | Render at N× then downsample for clean edges. One of: 1×, 2×, 4×. |
format | String | "16-bit float" | Pixel format / bit depth. Float = HDR (needed for feedback / accumulation). One of: 8-bit, 16-bit float, 32-bit float. |
premultiply | Boolean | true | Store premultiplied alpha |
color_space | String | "Linear" | How baked pixel values are encoded. One of: Linear, sRGB. |
background | String | "Transparent" | What fills pixels not covered by content. One of: Transparent, Solid. |
background_color | Color | rgba(0.00, 0.00, 0.00, 1.00) | Solid background fill color |
reproject | String | "Live" | Live: re-bake every change. Baked: render once and freeze. One of: Live, Baked. |
bake_frame | Number | 0 | Frame stamp for the baked capture — change it to re-bake |
strength | Number | 1 | Effect strength / wet-dry (0 = no effect, 1 = full). Editable, wirable, keyframable. |