Contents
Image Triplanar combines two powerful technologies to solve the hardest texturing problems at once. First, it uses Triplanar Mapping to project a texture from three orthogonal axes (X, Y, Z), eliminating the need for UV unwrapping on complex organic shapes or landscapes. Second, it applies our Stochastic Hex-Tiling engine to each of those projections. This means you get a perfectly seamless, non-stretching, non-repeating texture that wraps around any geometry automagically.
Usage & Behavior
This node is a "Material Solver" for complex geometry. Instead of spending hours unwrapping a cliff face or a sculpted character, you can drop this node in. It analyzes the surface normal to decide which projection plane (Front, Side, or Top) to use, blending them together where angles curve. Because it also includes the Hex-Tiling logic, you don't even have to worry about the texture repeating visibly across large surfaces.
Key Features
- No UVs Required: Projects based on World or Object coordinates.
- Double Seamless: Hides seams between projections AND hides repetition within the texture itself.
- Normal Aware: Choose between Smooth or Geometric normals for the projection logic.
Controlling the Blend
Triplanar mapping works by blending three different images. The quality of the result depends on how you manage the transition zones (the 45-degree angles).
- Triplanar Contrast: Controls the sharpness of the transition between the Top, Side, and Front projections. High values create a sharp cut; low values create a wide, soft blend.
- Triplanar Softness: Adds a blur to the blend mask itself, further softening the transition area to hide "ghosting" where textures overlap.
- Normal Source: Using Geometric normals creates hard, faceted projections (good for low-poly boxes). Using Smooth normals wraps the texture organically around curved surfaces.
Hex Tiling Algorithm
Why does this look better than "Box Mapping"?
- Triangular Tessellation: The algorithm transforms UV space into a skewed hexagonal grid. Every pixel sits inside a triangle formed by 3 hex centers.
- Triple Sampling: The texture is sampled 3 times (once for each vertex of the triangle), each with a unique random offset and rotation derived from the cell ID.
- Barycentric Blending: These 3 samples are blended based on how close the pixel is to each vertex. This ensures the texture is continuous everywhere, with no visible seams or sudden jumps.
Stochastic vs. Structured
This node works by randomizing rotation and position. This process is destructive to straight lines. Therefore, it is essential to understand which textures work with this technique.
Textures that are naturally random or chaotic.
Examples: Grass, Dirt, Asphalt, Concrete, Sand, Rust, Plaster, Fabric (Micro-weave).
Textures that rely on straight lines or specific grid alignment. The random rotation will break the pattern.
Examples: Bricks, Tiles, Wooden Planks, Geometric Patterns, Text/Logos.
The Native Advantage
You may have seen node-groups that attempt this effect. While clever, they come with a heavy cost. Rombo Image Tiler is the first and only Native C++ Implementation for Cycles.
- Requires chaining 3 separate Image Nodes manually.
- Call 3 times those 3 Image Nodes lookups.
- Dozens of Math nodes to calculate barycentric weights.
- Triple the overhead for the texture cache lookups.
- Messy, unreadable shader graph.
- Single Node: Calls the internal SVM texture engine directly.
- Zero Overhead: Rotations and weights are calculated in native code.
- Texture Cache Friendly: Optimized lookup pattern minimizes memory trashing.
- Clean Graph: Drop it in, load texture, done.
Important: Bump Mapping Workflow
When using this node for Bump or Displacement, you must change the Mode to "BUMP".
Cycles calculates bump maps by evaluating the shader graph three times with slightly offset coordinates (dX, dY) to measure the surface slope.
In REGULAR mode, the node uses the internal object/world position, which ignores these offsets. In BUMP mode, the node unlocks the Vector input socket. You must connect a Texture Coordinate node (Object or Generated) into this socket. This allows Cycles to pass the correct perturbed coordinates into the triplanar engine, ensuring the bump map renders with correct depth and detail.
Parameters
- REGULAR: Uses internal World/Object coordinates. Best for Color/Roughness. The Vector input is ignored.
- BUMP: Uses the Vector input socket. Essential for Bump/Displacement to allow Cycles to calculate derivatives correctly.
Active only when Mode is set to BUMP. Connect a Texture Coordinate node here.
- OBJECT: Texture sticks to the object as it moves/rotates.
- WORLD: Texture stays fixed in world space.
- SMOOTH: Uses interpolated vertex normals.
- GEOMETRIC: Uses face normals.
Hex Tiling Controls
Quick Recipes
Setup guides for different object types.
Cliff Face
- Space WORLD
- Normal GEOMETRIC
- Triplanar Contrast 0.8
- U/V Tiling 0.1
Sculpted Clay
- Space OBJECT
- Normal SMOOTH
- Triplanar Softness 0.5
- Tiles Rotate 3.14
Moving Vehicle (Rust)
- Space OBJECT
- Triplanar Contrast 0.2
- Exponentiation 1.5
