Skip to content

Projection Mapping

Projection mapping

projection mapping output Warping and positioning the final image onto the physical shapes of your projection surfaces. Corner-pin a single projector, subdivide into a mesh for curved surfaces, or edge-blend multiple projectors into one seamless wall.

is what lets you send Lightbridge’s output onto real-world shapes — a flat wall you need to trapezoidal-correct for, a curved surface that needs a mesh warp, or a multi-projector rig where three projectors overlap into one seamless wall. The mapping system sits between the chain’s output and the pixels that actually reach the screen.

For the dual-canvas side (preview vs live, hold mode, the output window), see Output Visuals.

The mapping hierarchy

Projection mapping has three levels:

Mapping
└── Screens (one per physical display)
└── Surfaces (one per warped surface on that display)

The mapping is the whole setup, stored in your show file. A screen is assigned to one physical display — typically one screen per projector. A surface surface output A single warped area on a screen. Samples a rectangle of the composition and lands it somewhere on the physical screen. A screen can have many surfaces. is the unit of warping: a single quad or mesh that samples some rectangle of your composition and lands it somewhere on the screen.

Each surface has enough state to describe a complete warp:

  • Input crop — which region of the composition this surface samples. Defaults to the full composition; crop to half if you want this surface to show only the left side of the chain.
  • Control points — the positions on the screen the surface bends through. Four corners gives you simple corner-pin warping; subdividing to a finer mesh (up to 8×8) gives you more control points for curved surfaces.
  • Bezier smoothing — turn on Catmull-Rom interpolation between control points for smooth curves instead of straight grid segments.
  • Edge blend — per-edge blend zones for multi-projector overlap.
  • Brightness and gamma — per-surface multipliers for matching projector hardware differences.

That’s enough state to describe a four-projector blended wall with curved screens — or a single flat projector that just needs a bit of trapezoidal correction.

Corner-pin to mesh warping

The simplest warp is a corner-pin corner-pin output The simplest warp: four control points, one per corner. Drag them to align the projected image with a flat real-world rectangle. Fixes basic trapezoidal distortion from an off-axis projector. : four control points, one in each corner. Drag them to match the real-world rectangle you’re projecting onto. This is all most venues need.

When you need more — a curved surface, a dome, a wall with bumps — you subdivide the surface into a finer mesh. A 2×2 subdivision gives you nine control points, 3×3 gives you sixteen, and so on up to 8×8 (eighty-one). Each control point bends a small piece of the image.

Bezier smoothing bezier smoothing output Turns straight grid lines between control points into smooth Catmull-Rom curves. Use it for organic curved surfaces where a faceted mesh would look wrong. turns the straight grid lines between control points into smooth Catmull-Rom curves, which is what you want for organic curved surfaces. Without it, a mesh looks faceted; with it, it flows.

Edge blending

For multi-projector installations, edge blending edge blending output Blending zones along the edges where two projectors overlap, so the seam between them disappears. Each edge has width, gamma, and power controls to tune the falloff curve. is the difference between “visible seam” and “seamless wall.” Each surface can blend independently along its four edges. Each edge has four knobs:

  • Enabled — on/off for that edge
  • Width — how wide the blend zone is, as a fraction of the surface
  • Gamma — perceptual gamma correction for the blend zone
  • Power — falloff curve exponent

This is the hard part of multi-projector mapping, and no algorithm gets it right without tuning by eye. Lightbridge exposes the three falloff knobs so you can adjust per-edge until the overlap zone doesn’t look brighter or darker than the non-overlap areas.

Advanced — edge blend falloff math

The falloff function is pow(pow(t, gamma), power), where t is the distance into the edge zone (0 at the edge, 1 at the inside boundary of the blend zone). Setting both gamma and power to 1 gives you a linear ramp; tuning them lets you match the blend curve to your projector’s native response.

Per-surface brightness and gamma

Every surface also has its own brightness and gamma multipliers independent of edge blending. These exist to compensate for projector hardware differences — one projector in your rig might be brighter than another, or have a different gamma response.

Set them once per venue during soundcheck, and forget about them during the show.

The warp is mesh-based, not shader-based

This is the core design choice behind the mapping system. Many projection mapping tools do warping by sampling the source texture with distorted coordinates inside a shader. Lightbridge does the opposite: it actually moves the mesh geometry to match the warp, and the shader stays trivially simple. The control points you drag are literally where the corners of the mesh sit on the screen.

This has three wins:

  1. Corner-pin and subdivided mesh use the same code path. Corner-pin is four vertices; a subdivided mesh is many more vertices. Nothing else changes.
  2. Bezier smoothing is cheap. Turn it on and the geometry is tessellated more finely along Catmull-Rom curves between control points. The shader never knows the difference.
  3. Edge blending composes naturally. The blend zones are computed per-pixel inside the surface, so adjacent surfaces combine cleanly across their overlap regions.
Advanced — mesh-based warping implementation

For each surface, Lightbridge builds a mesh geometry where:

  • Vertex positions = control point positions in NDC ([-1, 1] normalized to the display)
  • UVs = regular grid positions mapped through inputRect

The fragment shader samples the composition texture at the interpolated UV and applies brightness, gamma, and edge blend falloff. All the warping happens because the vertex positions were distorted.

When bezier is enabled, Lightbridge tessellates the grid by evaluating a Catmull-Rom spline between adjacent control points at every 1/bezierDetail step, writes those into the geometry, and the fragment shader never knows the difference.

The edge-blend shader reads vUv (position within the surface) and applies the falloff curve to the output alpha, which the GPU then blends with anything else already drawn on the screen.

Advanced — surface field reference

The full set of fields on a projection mapping surface:

  • inputRect — the region of the composition to sample, in normalized [0,1] coordinates. Default is {0,0,1,1} (full composition).
  • controlPoints — positions in output space. 1×1 subdivision = four corners (corner-pin). 4×4 subdivision = twenty-five control points. Up to 8×8.
  • meshDivisions — how many grid cells the surface is cut into.
  • edgeBlend — per-edge (left, right, top, bottom) blend zone configuration.
  • bezier flag + bezierDetail — whether to smooth the mesh with Catmull-Rom interpolation, and how many interpolated segments per grid span.
  • brightness — per-surface multiplier in [0, 2].
  • gamma — per-surface gamma correction in [0.5, 3].

Where to go from here