RadianceLab · Native implementation document

Surface receiver curves

Angular photon sheets meet actual scene surfaces. Inspect the measure, supported path class and stochastic versus quadrature routes.

Key relationships · typeset equations
Φ=Le(y,ω) ∣ny⋅ω∣plight pA pω N\Phi=\frac{L_e(y,\omega)\,|n_y\cdot\omega|}{p_{\mathrm{light}}\,p_A\,p_\omega\,N}
An area-emitter packet carries flux with its source, area and angular sampling probabilities. Misses remain in N.
ps=pu∣dX/du∣p_s=\frac{p_u}{\left|\mathrm dX/\mathrm du\right|}
The angular parameter induces nonuniform receiver arclength. The forward sampler keeps that parameter and its flux.

PP33 traces an emitted angular sheet into the actual scene. Its first non-delta hits form a receiver curve: a cone meeting a plane, a meridian plane meeting a sphere, or a refracted sheet meeting a mesh torus. Each ruling uses the native analytic intersections plus the mesh BVH. Nothing is projected onto a decorative proxy. Glass chains can produce surface caustics as well as the existing mode-32 volumetric caustics.

Two sampling choices

Stratified stochastic paths sample points in the sheet's parameter domain. Each angular cell receives one random sample. Light origin, the held angular coordinate, and Fresnel branch random numbers remain random. The result has no surface density-estimation radius and no screen smoothing. For the implemented finite-depth, geometric-normal, pinhole L[S]*DE path class, this is a correctly weighted Monte Carlo light tracer. It is not a claim to render every transport path or to be unbiased relative to arbitrary materials and cameras.

Finite curve quadrature uses a midpoint in every angular cell, evaluating the whole sampled curve. Optional Gaussian screen blur can join sparse deposits. Both its finite angular quadrature and screen filtering introduce approximation bias. More passes randomize the other coordinates but cannot remove the fixed quadrature or filter error. Increase curve samples and reduce blur to study it. This is sampled curve integration, not an analytic continuous-curve rasterizer.

The measure: no mysterious curve-length multiplier

For a point emitter use z = 1−2u, φ = 2πv, with pω = 1/(4π). For an area emitter use z = √u, φ = 2πv, with pω = z/π. Here z = cos θ; changing coordinates already includes sin θ dθ. The cone family holds u fixed and sweeps v. The meridian-plane family holds v fixed and sweeps u. A plane sheet covers the emitter's forward meridian half-plane; it does not emit backwards through a one-sided area lamp.

Cone + plane: balance MIS divides the same sheet budget between the two families. It combines them on their common emitted-path measure. Since these two charts have identical angular marginals, the balance weights reduce to their allocation fractions. Their different curve directions change batch correlation, not the marginal PDF. The pair is an orientation hedge; it does not inherit a guaranteed variance advantage from unrelated primitive MIS. The pair analysis and native measurements explain this distinction, including receiver folds, visibility and surface caustics.

An emitted sample carries flux

Φ = Le(y,ω) cosθy / (pLight pArea pω N)

for an area emitter, or I / (pLight pω N) for a point emitter. Directional profiles are evaluated at the actual ruling. Misses and blocked paths still count in N; normalizing by accepted hits would create a substantial bias.

If X(u) is the induced receiver curve, its arclength density is ps = pu / |dX/du|. Thus a curve's slower parameter regions receive more samples per unit arclength. Uniformly placing samples along a polyline and ignoring this factor changes the estimator. PP33 avoids that error by retaining the original angular parameter and flux. For an implicit receiver F(y+t d(u))=0,

dX/du = t [d′ − d (n·d′)/(n·d)].

This identity exposes the receiver tangency and varying curve speed; the native forward sampler does not divide by a near-zero speed. Refraction changes the mapping further, but the emitted flux still travels along the actual path. Caustic focusing arises from the density of those arrivals.

Connecting the receiver to the film

The receiver evaluates a bare BRDF f(wo,wi). Do not multiply the incoming receiver cosine again: photon flux already carries the incident measure. For a pinhole camera, a packet deposited into its actual projected pixel is

C = Φ f Tr · [wh/(4 halfW halfH)] cosθreceiver / (r² cos³θcamera).

The bracketed factor converts surface area to film-pixel area, so the pixel's running mean estimates its box-filtered radiance. This is a sensor Jacobian, not the Jacobian of a volume primitive. Both the light path and receiver-to-eye segment are tested against real geometry. Any glass on that final straight segment blocks it: camera-side specular paths ending on a receiver are outside this version's class.

Glass interfaces choose reflection/transmission by Fresnel probability; the chosen probability cancels its throughput factor. Photon power does not receive a radiance η² multiplier. Closed solid entry/exit and absorption are tracked; total internal reflection remains valid. Shared branch random numbers keep nearby rulings correlated without changing their individual distribution.

Scope and controls

Headless keys are under pp:

Key Default Meaning
strategy 33 Native surface curves
surfaceCurveFamily 0 0 cone, 1 meridian plane, 2 cone + plane balance MIS
surfaceCurveSampling 0 0 stratified stochastic, 1 midpoint quadrature
surfaceCurveBatch 64 Independent random sheets per pass
surfaceCurveSamples 128 Samples along each receiver curve
surfaceCurveDepth 12 Maximum light-side specular interfaces
surfaceCurveBlur 0 Gaussian sigma in pixels; quadrature only
surfaceCurveCausticOnly false Omit the zero-specular direct surface class
surfaceCurveContext true Separately show emitter/background through camera specular paths

Sources are enabled area/point scene.lights[], using matched emissive-entity directional profiles when present. Receivers include analytic planes/spheres/ boxes and transformed triangle meshes. Lambertian is the clean validation case. The existing BRDF evaluator additionally supplies rough metal, isotropic approximation of anisotropic metal, iridescent metal and the base of coated diffuse; the coat's delta lobe is not added. Unsupported receiver BSDFs do not receive substituted Lambertian shading.

Other limits: geometric normals; closed nonoverlapping dielectric solids; RGB smooth glass even if the source material advertises dispersion/roughness; homogeneous nonoverlapping fog extinction, without scattered radiance; one non-delta receiver; no environment illumination; pinhole camera regardless of the selected interactive lens. Finite depth deliberately truncates paths. The context layer shows emission/background only, so it cannot double-count the light-traced direct receiver. Analytic medium comp mode is refused.

Logs report receiver hits, caustic hits, film deposits, occlusion, invalid solid topology and depth truncations. These are useful diagnostics, not proof that every intended path has been implemented.

Validation

PrismSurfaceCurveTest independently checks angular power integrals, the nonuniform arclength density of a cone on a tilted plane, the film Jacobian against finite differences, and a sampled point-light/plane image mean against its closed-form radiance. The Monte Carlo comparison uses independent sheet means to estimate uncertainty rather than treating correlated points as IID.

Native images should compare cone and plane choices against the same direct surface reference, then compare quadrature resolutions and the caustic-only glass fixture. Equal pass counts are not equal work: cost scales with sheets times curve samples and the number of traversed specular interfaces.

The additive pair was checked on 54 native renders (three scenes, three families, six seeds each), with the same 524,288 launched rulings per image. Both existing single-family modes also reproduced their checkpoint films byte-for-byte in the retained direct-atlas regression fixture.