Image Triplanar*

Performance Cost 🟡 Medium
Signal Type Texture → Color
Implementation Native Compiled C++
Devices (Cycles) CPU / GPU (1:1)

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

Standard UV (Seams & Stretching)
Rombo Triplanar (Seamless)
Workflow for Bump Mapping

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.

Best Used For: Cliffs, rocks, terrain, sculpted concept art, procedural assets, and any object where UV unwrapping is difficult or impossible.

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.

✅ Works with Stochastic Maps

Textures that are naturally random or chaotic.
Examples: Grass, Dirt, Asphalt, Concrete, Sand, Rust, Plaster, Fabric (Micro-weave).

❌ Avoid Structured Maps

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.

The Node-Group Way (Slow)
  • 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.
The Rombo Way (Optimized)
  • 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".

Why is this necessary?

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

Mode Enum
Selects the operating mode:
  • 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.
Vector Vector
Input coordinate vector.
Active only when Mode is set to BUMP. Connect a Texture Coordinate node here.
Image Pointer
The texture asset to project.
Space Enum
Defines the coordinate system (Regular Mode only).
  • OBJECT: Texture sticks to the object as it moves/rotates.
  • WORLD: Texture stays fixed in world space.
Normal Enum
Which surface normal controls the projection blending.
  • SMOOTH: Uses interpolated vertex normals.
  • GEOMETRIC: Uses face normals.
Triplanar Softness (default: 0.25)
Widens the blending zone between the three axes.
Triplanar Contrast (default: 0.5)
Sharpens the blend mask. Higher values reduce the area where textures overlap.
Triplanar Exponentiation (default: 1.0)
Adjusts the blending curve. A higher exponent makes the blend favor the brighter/dominant texture sample, which helps preserve high-contrast details like cracks or pebbles.

Hex Tiling Controls

U / V Tiling (default: 2.0)
Controls the density of the texture.
Tiles Rotate (default: 0.0)
Randomizes rotation per tile to break repetition.
Tiles Contrast (default: 0.5)
Controls the blending sharpness between the stochastic hexagonal tiles.
Exponentiation (default: 1.0)
Adjusts the blending curve. A higher exponent makes the blend favor the brighter/dominant texture sample, which helps preserve high-contrast details like cracks or pebbles.

Quick Recipes

Setup guides for different object types.

Cliff Face

  • Space WORLD
  • Normal GEOMETRIC
  • Triplanar Contrast 0.8
  • U/V Tiling 0.1
World space locks the texture to the environment; Geometric normals keep the rock faces sharp.

Sculpted Clay

  • Space OBJECT
  • Normal SMOOTH
  • Triplanar Softness 0.5
  • Tiles Rotate 3.14
Object space moves with the sculpt; Smooth normals wrapping the clay texture softly.

Moving Vehicle (Rust)

  • Space OBJECT
  • Triplanar Contrast 0.2
  • Exponentiation 1.5
Object space ensures the rust stays on the car as it drives; high exponentiation preserves rust details.
© 2025 Rombo Tools. All rights reserved.
↑ Back to Top

Leave a Reply