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.

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

ParameterTypeDefaultWhat it does
inputColor Field or Volume or Field or Primitives or CollectionContent to rasterize into pixels — shapes, geometry, a field, or a volume (slice it with a plane)
modeString"Raster"Raster: bake to a raster (data). Sprite: place the bake as a textured sprite in the 3D scene. One of: Raster, Sprite.
face_cameraBooleantrueOn: the sprite faces the camera (billboard). Off: a fixed-orientation quad you can tilt.
cameraCamera3DCamera for capturing 3D content (optional; flat 2D content ignores it)
planeTransformSlice plane for a field/volume — wire a Transform3D and drag to slice
projectionString"First"Field slice: First (flat), Max (MIP), Min, Average, Sum over the slab. One of: First, Max, Min, Average, Sum.
samplesNumber1Slab depth samples (1 = flat slice; more = smoother projection)
resolution_modeString"Canvas"How the baked raster's pixel size is chosen. One of: Canvas, Custom, Scale, Fit Content.
res_widthNumber1024Baked width in pixels
res_heightNumber1024Baked height in pixels
res_scaleNumber1Multiple of the canvas size
paddingNumber0Transparent bleed added around the content (px)
fit_paddingNumber03D auto-frame margin as a fraction of the content size
supersampleString"1×"Render at N× then downsample for clean edges. One of: 1×, 2×, 4×.
formatString"16-bit float"Pixel format / bit depth. Float = HDR (needed for feedback / accumulation). One of: 8-bit, 16-bit float, 32-bit float.
premultiplyBooleantrueStore premultiplied alpha
color_spaceString"Linear"How baked pixel values are encoded. One of: Linear, sRGB.
backgroundString"Transparent"What fills pixels not covered by content. One of: Transparent, Solid.
background_colorColorrgba(0.00, 0.00, 0.00, 1.00)Solid background fill color
reprojectString"Live"Live: re-bake every change. Baked: render once and freeze. One of: Live, Baked.
bake_frameNumber0Frame stamp for the baked capture — change it to re-bake
strengthNumber1Effect strength / wet-dry (0 = no effect, 1 = full). Editable, wirable, keyframable.

See also