Documentation / Node reference / geo nodes
geo/SDFImprint
Marks an SDF object with a second one: a raised pad, a recess, a groove or an engraving.
Sdf Operations
Input 0 is the SHAPE and input 1 is the TOOL. Only the shape comes out, displaced by `amount` wherever the tool covers it: positive raises a pad, negative sinks a recess, so one signed slider covers both directions. That is the operation geo/SDFBoolean cannot express, since a boolean always joins the tool in whole. Each input's own objects are hard-unioned first, so a geo/Copy or geo/Merge fan-in works on either side. Non-SDF objects are skipped, and a 2D field works exactly as a 3D one does.
**The profile decides what the tool leaves behind.** RAMP is a graded push with a smoothstep across the band, and it is the one that reads as a stamped or embossed marking. GAIN is the same ramp with one exponent on it, from a straight slope at 1 to a near-step as it grows, for when the wall wants to be steeper without the footprint moving. GROOVE cuts a square recess along the tool's surface, TONGUE raises the square pad that fits it, and those two come straight from hg_sdf's carpentry pair. ENGRAVE cuts a V, whose width follows its depth and which therefore reads no `width` at all.
`amount` is the depth or the height, `width` is HALF the band the ramp runs over, measured in the tool's own distance. So the tool's surface sits in the MIDDLE of the transition, not at its edge, and a wider band spreads the same displacement over more of the shape. Changing profile regenerates the preview shader; dragging the three numbers does not.
**RAMP and GAIN are not safe distance bounds, and that costs march steps.** The field overestimates distance by `1 + amount * 0.75 / width` under RAMP, so the preview march shortens its step for the whole object by that factor. A narrow band under a large amount can shorten it a great deal: `amount` 0.4 with `width` 0.05 asks the march to take steps seven times shorter than usual, which is a scene that may want a higher `maxStepsCount` on its mat/MeshSDF. Keeping `width` in the same order as `amount` is the cure, and it is also what looks right. GROOVE and TONGUE cost nothing at all, being built only from min, max and abs; ENGRAVE costs the same sqrt(2) a chamfered boolean does. geo/SDFTriangulate only samples the field, so the meshed result is exact for every profile regardless.
**Per-region colours come with it.** Put a geo/MaterialAttributes on the tool, leave its mode on OBJECT, and the pad or the groove takes the tool's colour while the rest of the shape keeps its own: under RAMP and GAIN the colour fades across the same band the shape is displaced over, and under the other three it switches where the profile switches. That is what makes an engraved marking on a printed part come out coloured, and geo/SDFTriangulate carries those values onto the meshed points for multi-colour export.
**What this replaces.** Before this node, a raised pad was `SDFBoolean(union, A, SDFBoolean(intersection, B, SDFRound(A, +t)))` and a recess was A minus `SDFBoolean(intersection, B, A minus SDFRound(A, -t))`. Both give the right thickness and both conform to A's curvature, and both leave the footprint edge as the tool's hard silhouette with no ramp at all. That missing ramp is the reason this node exists.
Parameters
| Name | Type | What it does |
|---|---|---|
| profile | UInt8 RAMP · GAIN · GROOVE · TONGUE · ENGRAVE | What the tool leaves behind. RAMP and GAIN push the surface across a graded band, GROOVE and TONGUE cut and raise a square step, ENGRAVE cuts a V. |
| amount | Float | How far the tool pushes the shape. Positive raises a pad, negative sinks a recess. |
| width | Float | HALF the band the transition runs over, in the tool's own distance, so the tool's surface sits in the middle of it. Keep it in the same order as the amount, or the march pays for it. |
| gain | Float | The ramp's exponent: 1 is a straight slope, larger is progressively closer to a step, with the band unchanged. |
See also
This page is generated from the engine, so it describes the release you can download. The same text is in the editor's Help panel next to the node itself.