Chisel

Bake texture maps directly from the SDF using orthographic raymarching. No mesh conversion required.

Bake settings

Bake panel preview

Workflow

  1. Switch to the Chisel render engine.
  2. Open Render Properties → Bake.
  3. Enable the map types you want.
  4. Set the bake direction (per object via Object Properties → Bake Direction) and resolution.
  5. Choose an output directory.
  6. Click Bake Maps.

Map types

  • Normal — RGB world-space normals (R = X, G = Y, B = Z). Computed from the SDF gradient, so all rounding, blending, and boolean detail is captured exactly.
  • Height — grayscale linear depth (white = nearest, black = farthest). Use for displacement maps, parallax, terrain.
  • Mask — silhouette (white surface on black background). Use for alpha masks, trim-sheet boundaries.
  • Diffuse — matcap-shaded render of the SDF.

Common settings

  • Resolution128–4096 pixels along the longer axis (default 1024)
  • Padding0.0–0.5 edge crop fraction (default 0.0). Removes the black border on baked normals.
  • Max Steps64–4096 ray-march iterations (default 1024).
  • Output Directory — where the maps land.

Mask-specific

  • Mask Edge Blend0–50 pixel softening on the mask edge (default 0.0).
  • Mask as Alpha — embed the mask in the normal map’s alpha channel (handy for packed textures in real-time engines).

Per-object bake direction

In Object Properties → Chisel → Bake:

DirectionLooking
Top (default)+Z down
Bottom-Z up
Front-Y forward
Back+Y backward
Left-X right
Right+X left

Plus Flip (swap horizontal axis), Height Origin, and Height Range for fine-tuning the height-map’s grayscale window.

Use cases

  • Trim sheets — bake an SDF stack to a normal + mask trim sheet for use in a real-time engine
  • Displacement maps — height-bake a stylized SDF for terrain or panel detail
  • Game-ready textures — combined normal + mask via Mask as Alpha in a single texture

v3 fixes

In 3.0.0 baking routes through the same wgpu renderer the viewport uses, which fixed two long-standing bugs:

  • All-black maps for boolean objects — chains now upload their per-primitive data the same way the viewport does, so booleans bake correctly instead of coming out solid black.
  • Standalone bakes rendering the wrong output map — a normal, mask, or height bake of a standalone primitive now produces the map you asked for instead of falling back to the diffuse/empty branch.

See also