Skip to Content
DocumentationFeaturesTriplanar Mapping

Triplanar Mapping

Triplanar projects a texture from three world axes (X, Y, Z), then blends the three samples by surface-normal weights. It is the standard solution for terrain, rocks, and any mesh where authoring clean UVs is not practical, and it pairs well with stochastic sampling for seamless tiling.

Video

The camera flying over procedural rocky terrain textured with triplanar mapping, showing consistent texel density on flat ground and steep cliff faces alike with no UV stretching.

features/triplanar/triplanar-terrain.mp4

Consistent texel density across flat and steep surfaces with no UVs.

When to use it

  • Terrain and rocks with no clean UVs.
  • Procedurally generated meshes such as Marching Cubes or voxel chunks.
  • Modular kits where UVs are inconsistent between pieces.
  • Snow and moss that should follow world-up regardless of mesh orientation.

Modes

  • Standard — three samples per map at a single tiling, blended by the normal.
  • Stochastic — hash-perturbed UV offsets per pixel kill the visible tile repeat at the cost of extra samples.

A procedural rock with one UV channel — the texture stretches on steep sides.

The same rock projected from world XYZ, with consistent texel density everywhere.

UV-stretched
Triplanar

Triplanar fixing stretched UVs on a sculpted rock. Drag to compare.

How it works

For each pixel, Genesis computes three samples projected onto the YZ, XZ, and XY planes, then blends them by abs(normalWS) ^ _BlendSharpness. Normal maps are reoriented per axis using Reoriented Normal Mapping so seams between projections do not show.

Properties

Inspector labelShader propertyTypeDefaultDescription
Enable Triplanar_TriplanarEnabledToggleOffMaster toggle.
World Tiling_TriplanarTilingFloat (0.1–10)1.0World-space scale. 1 unit = 1 tile.
Blend Sharpness_BlendSharpnessFloat (1–16)4.0Tightness of the axis blend region. 1 = wide, 16 = hard.
Stochastic_TriplanarStochasticToggleOffEnable stochastic anti-tiling sampling.
Normal Mode_TriplanarNormalModeEnumReorientedReoriented or Whiteout normal blending.
Top Offset_TriplanarTopOffsetVector4(0,0,0,0)Optional offset for the Y-projection (snow caps).

Usage

  1. Enable Triplanar on the material; UVs no longer matter.
  2. Set World Tiling in world units — 0.5 for small detail, 4 for large boulders.
  3. Tune Blend Sharpness to taste — softer for organic terrain, harder for blocky stylized rocks.
  4. Turn on Stochastic if you can see the tile repeat at gameplay distance.
material.SetFloat("_TriplanarEnabled", 1f); material.SetFloat("_TriplanarTiling", 0.5f); material.SetFloat("_BlendSharpness", 8f);

Tips & gotchas

  • Three texture samples per map adds up; measure before shipping on mobile.
  • Stochastic sampling adds four extra samples, so use it only when the tiling is genuinely visible.
  • The projection is world-space, so moving the mesh slides it. Fine for static terrain; use UVs for animated props.
  • Tangent-space normal maps need reorientation, which Genesis does automatically. The Whiteout mode is faster but less accurate.
Last updated on