Paths sampled from the light and from the camera have to meet, and a single meeting point has zero measure. Connecting the two endpoints fails at specular vertices; blurring them together adds bias. Photon primitives take a third route: sweep, that is integrate analytically, some of the random choices made while building a path. The endpoint then becomes a curve, sheet or volume that the other subpath crosses with nonzero probability. Any choice made during path construction can be swept: the direction angles θ and φ and the flight distance t at any vertex, the emitter’s surface coordinates, or the aperture sample on the camera side.
Once the swept dimensions are picked, the framework builds the technique. A primitive is a list of swept terms, each naming a dimension, the vertex it belongs to and whether it is integrated analytically or sampled. A classifier names the shape: θ and φ at one vertex give a sphere, φ and t a cone, θ and t a disk, all three a ball, two distances a plane, φ at one vertex with t at the next a cylinder, and three distances a parallelepiped. The matching intersector and Jacobian then evaluate it, always through one template: swept dimensions, manifold, crossing roots, Jacobian, contribution. Three free coordinates in total, split between the two subpaths in any way, give an unbiased connection; with fewer, a blur kernel is needed, which is where photon points and beams sit.
Established techniques belong to the same family. The UI names each technique by what it sweeps: L[θφT]=C, with all three coordinates swept on the light side, is NEE (equivalent to the photon ball), and naive path tracing sweeps the light’s own surface and meets the camera ray there. The Photon Primitive Editor draws the idea: toggle θ, φ and distance at any vertex of a camera or light subpath, and it names the shape, shades its Jacobian-weighted density and shows two chosen sweeps combined with the balance heuristic.
Every primitive is a sampling strategy, and techniques combine under MIS by re-evaluation: a primitive pretends to be another one, asks how that technique would have generated the same contributing path, and the balance heuristic weights the densities on a shared measure. Primitives of the same type combine too, such as three planes that sweep different pairs of distances, and so does a continuum of them: arbitrarily oriented planes are MIS-weighted analytically. The best partners behave most differently as the view changes; a photon sphere always has a bright rim, while a plane’s brightness depends on how it faces the camera ray. In the renderer the shared measures group emitter planes on the light-area measure; sphere, disk and cone conditional on the light point; beam, point and hourglass along the camera ray; and beam, ring and arc at one shared radius. Strategy 31 lets you pick your own pair or trio from ten members.
Every non-temporal dimension is supported. Time is the one dimension left out, because a temporal dimension makes the primitive too hard for the algorithm to reason about and adds much more complexity. A time gate removes one more support dimension, so isolated crossings would need three swept coordinates instead of two, and once the camera leg counts, the level set changes from a sphere around the light to an ellipsoid, with an extra coarea factor, degenerate gradients and several branches.
Earlier photon-primitive implementations, including ours from the photon-primitive research project, supported only a handful of these strategies; stock Tungsten, for one, implements photon points, beams and two plane variants.
A technique created this way rarely covers a whole scene on its own, so the next layer stacks techniques into complete transport.
| Aspect | In RadianceLab |
|---|
| Dimension choice | Any non-temporal swept dimension: directions and distances at any vertex, emitter coordinates and the camera aperture sample; refracted, glossy, mesh-sheet and surface-curve constructions |
|---|
| MIS | Balance heuristic on shared measures (strategies 12, 13, 15, 21, 26 and 30) and a user-picked pair or trio (31); the camera walk (2) combines phase sampling and NEE with the power heuristic |
|---|
| Time | Left out |
|---|
| Stacking | Comp mode: a primary technique owns its declared path classes and a camera-walk backup covers the rest; a surface caustic photon map and specular NEE join as further layers, and every transport has exactly one owner |
|---|