MATHEMATICAL DRAFTSMAN SPEC · REV 0.1.3
* No GPU. No neural weights. No Monte Carlo variance.

A renderer that doesn't sample.
It solves.

Noise-free CPU global illumination using deterministic surfel radiosity on signed distance fields.0.5 MB standalone binary. Three dependencies.

← 8 samples/pixel: grainy guesses (takes 28s to clean up)
BOTH TOOK ~1.5 SECONDS
1 evaluation/pixel: closed-form solve (zero noise!) →
0102030405060708090100%
Interflect clean noise-free render in 1499ms
Interflect1499 ms · 1 eval/px · 0 grain
Path tracer noisy render in 1642ms with 8 spp
CPU Path Tracer1642 ms · 8 spp · Monte Carlo
|
SPEC: 6-CORE CPU · NO GPU · NO DENOISER · BIT-IDENTICALDRAG HAIRLINE TO INSPECT
0.5 MB
Standalone Binaryzero model weights
17.6–22.4×
Measured Speedup vs Path Tracerto reach converged quality
100%Bit-Identicalsame MD5 on 1 or 12 threads
3Dependenciesglam, rayon, image
0.5 MB BINARY
$curl -fsSL https://raw.githubusercontent.com/Cherie05/interflect/main/install.sh | sh
PS>irm https://raw.githubusercontent.com/Cherie05/interflect/main/install.ps1 | iex
$cargo install interflect
$cargo binstall interflect
$git clone https://github.com/Cherie05/interflect && cd interflect && cargo build --release

Radiosity died in the 1990s because it needed meshing.

Signed distance fields don't have meshes. So it deserves a second look — and with no GPU and no neural denoiser allowed, the calculus inverts.

1984–1995 · FAILED BY MESHING

Classical Polygonal Radiosity

Classical radiosity (Goral et al., 1984) produced beautiful, completely noise-free, view-independent global illumination. It lost to path tracing for one reason: it needed every surface subdivided into well-conditioned planar patches.

✖ Seam artifacts & fragile topology
  • Fragile automatic meshing algorithms
  • Topological singularities & light leaking at T-junctions
  • Quadratic matrix explosion on complex polygon models
2026 · SOLVED BY SDFS

Interflect: Meshless SDF Radiosity

An SDF has no mesh to subdivide. Its surface is the zero level set, and any point in space projects onto it by Newton iteration along the gradient in a handful of steps.

Surface: f(p) = 0p₀ (Halton)p ← p − f(p)·∇f(p) (Newton projection)
  • Zero Meshes: Patches generate directly at any density
  • No Topological Seams: Analytic continuity of distance fields
  • Bit-Identical: Low-discrepancy Halton sequences replace RNG

Nobody revisited radiosity because from 1995 onward everyone moved to GPUs, where Monte Carlo plus a neural denoiser is unbeatable.Refuse the GPU and refuse the denoiser, and the calculus inverts.

— Interflect Architecture Notes

The 5-Stage Pipeline

How Interflect turns mathematical level sets and pure calculus into deterministic, converged radiance without throwing a single random ray.

STAGE 01src/sdf.rs · bvh.rs

Analytic SDF & Binned-SAH BVH

Scene objects are exact mathematical distance functions: spheres, capsules, boxes, cylinders, cones, and tori with constructive solid geometry (CSG).

d = minᵢ(fᵢ(p))  ·  𝒪(log n)
Binned-SAH BVH bounds nearest distance queries across hundreds of primitives.
STAGE 02 · NEWsrc/surfel.rs

Newton Surfel Projection

A deterministic Halton low-discrepancy point set in space is projected onto the SDF zero level set via Newton iteration along the gradient vector.

p ← p - f(p) · ∇f(p)
Poisson-disc thinning ensures even surface spacing with zero RNG.
STAGE 03src/ltc.rs · shade.rs

Analytic Closed-Form LTC Lighting

Area lights are integrated in closed form using Lambert's 1760 polygon formula (identity case of Linearly Transformed Cosines). Shadows are cone-traced.

E = 1/(2π) ∑ᵢ γᵢ · (vᵢ × vᵢ₊¹)
Zero random shadow rays sampled. Zero noise.
STAGE 04 · NEWsrc/formfactor.rs

Sparse CSR Transfer Matrix

Disc-to-disc Nusselt-analog form factors between surfels and normal-bucketed clusters, with cone-traced visibility, cached into a sparse Compressed Sparse Row matrix.

Fᵢⱽ = (cos θᵢ cos θⱽ) / (π r² + Aⱽ) · Vᵢⱽ
Built once per scene geometry. Reusable for all camera frames.
STAGE 05 · NEWsrc/solve.rs

Jacobi Radiosity Solve

Jacobi iteration on the cached transfer matrix. Each bounce is simply one sparse matrix-vector multiplication until residual convergence.

Lᵐᵌ⁺¹⁾ = E + ρ · M · Lᵐᵌ⁾
100% deterministic float order: bit-identical across 1 to 12 threads.

The View-Independence Payoff: --turntable 12

Because the radiosity solve is view-independent, a new camera pays only the gather pass. Orbiting a scene solves global illumination once in 390 ms, then renders each extra camera frame in just 80 ms.

390ms SOLVE → 80ms/FRAME

What the Radiosity Solve Contributes

Inspect the light transport. In --mode direct, shadows are pitch-black. Everything the human eye reads as fill light, ambient occlusion, and color bleed arrives strictly from the solve.

Alcove scene in beauty mode: indirect color bounce on spheres
BEAUTY PASSLight never hits the colored walls directly. Every trace of red/blue is 100% bounced light.
Simulated direct pass
DIRECT PASS ONLYZero radiosity. Shadows are pitch black. Unlit block faces receive zero fill light.
Simulated indirect radiosity pass
INDIRECT RADIOSITY SOLVEThe Jacobi solution alone. Pure ambient interreflection and color transfer matrix.

The Converged Solution

Combines closed-form LTC area lights with 12–16 Jacobi bounces on the surfel form-factor matrix. Because distance fields don't sample, the result has zero high-frequency grain.

$ interflect render scenes/alcove.rad -o beauty.png
Total Solve: 564 msMatrix Transfer: 87 msEnergy Conservation: >0.8 row-sum

Zero Radiosity Fill

Renders without the radiosity solve. Only direct rays from the area light emitters are computed. Shadows cast by the cone tracer are unlit and harsh. The difference between direct and beauty is mathematically exact.

$ interflect render scenes/alcove.rad -o direct.png --mode direct

Pure Interreflection

Subtracts direct illumination to isolate the radiant transfer matrix. You see only the light that bounced off surfels into other surfels.

$ interflect render scenes/alcove.rad -o indirect.png --mode indirect

Analytic Geometry Vocabulary

Interflect's vocabulary consists of pure primitives: spheres, boxes, capsules, cylinders, cones, and tori. Drill a hole in a sphere with CSG: subtract_sphere: [[0, 1.2, 0], 0.4] without re-tessellation or boolean rebuilding!

$ interflect render scenes/product.rad -o product.png

Measured, not claimed.

Benchmarked against a converged path trace of the identical scene. Reproducible with ./bench.sh.

AMD Ryzen 5 4600H (6C/12T) · 260×260 RES · REF @ 384 SPP
17.6× – 22.4× SPEEDUP
Scene NameInterflectCPU Path TracerSpeedupSSIM AccuracyEnergy Ratio
sphere_only1,381 ms26,136 ms18.9×0.8501.090
box_only1,757 ms39,115 ms22.3×0.8391.066
high_albedo1,395 ms31,190 ms22.4×0.8201.049
cornell1,613 ms28,364 ms17.6×0.8061.050

Draftsman note on SSIM: Read SSIM against a ceiling of 0.892, not 1.0. The reference path tracer is stochastic, and SSIM penalises its own residual noise even against a perfect image. Total energy lands within 4.9–9.0% of ground truth.

★ BIT-IDENTICAL DETERMINISM GATE ★
27 REGRESSION TESTS
Zero RNG. Verified locally and in CI.

Same file on 1 or 12 threads. Verified in CI.

Floating-point order is strictly governed. Halton sequences replace random numbers, and Jacobi iteration guarantees that every thread evaluates light independently without reduction races.27 automated regression test scenes enforce bit-identical MD5 checksums on every single commit across 1, 4, 8, and 12 threads.

terminal — determinism proof
$ interflect render scenes/cornell.rad -o a.png -t 1
$ interflect render scenes/cornell.rad -o b.png -t 12
$ md5sum a.png b.png
766c77aeb5d34275625765212ebaa9b6  a.png
766c77aeb5d34275625765212ebaa9b6  b.png
[PASS: HASHES IDENTICAL]

Scenes are plain text. You never touch Rust.

Define geometry, materials, and area lights with zero boilerplate. CSG boolean operations work right out of the box.

THE VISUAL PATH

Web Scene Builder

Drag shapes in dual front and top views, tweak dimensions, and adjust colors with live sliders. Runs entirely in your browser with zero dependencies—no server, no 3D experience needed.

Y = 0 (FLOOR)
Launch Scene Builder ↗
scenes/product.rad
* Two rules: Floor is Y=0. To rest, set Y=radius.
render   { width: 800, height: 600, surfels: 20000, bounces: 16 }
camera   { pos: [0, 1.8, 6.0], look: [0, 0.7, 0], fov: 38 }
material "red" { albedo: [0.70, 0.15, 0.12], roughness: 0.8 }

sphere   { center: [0, 0.6, 0], radius: 0.6, mat: "red" }
box      { center: [1.6, 0.5, 0], size: [1, 1, 1], round: 0.08, mat: "red" }
capsule  { a: [0,0,0], b: [0,1.3,0], radius: 0.25, mat: "red" }
torus    { center: [0, 0.12, 0], major: 0.45, minor: 0.12, mat: "red" }

# Drill a hole with CSG -- no polygon rebuild, no re-tessellation
sphere   { center: [0,1,0], radius: 0.5, mat: "red", 
           subtract_sphere: [[0,1.2,0], 0.4] }

# Analytic area light emitter (Lambertian LTC closed form)
light    { verts: [[-1.5,4,-1.5],[1.5,4,-1.5],[1.5,4,1.5],[-1.5,4,1.5]], 
           emit: [13,12.5,11.5] }

The Limits of the Formulation

Every rendering architecture is a compromise. Marketing pages dress strengths as negatives; serious systems software states its boundaries plainly. Here is what Interflect cannot do today.

GEOMETRYNO TRIANGLE MESHES

Analytic SDF Primitives Only

Scene objects must be expressed as exact mathematical distance functions (spheres, capsules, boxes, cylinders, cones, tori) and CSG operations. There is no importer for .obj, .gltf, or polygon meshes.

CSG booleans are exact; complex scanned topology is not supported.
OPTICSNO REFRACTION

No Caustics & No Refraction

Interflect solves diffuse-to-diffuse interreflection using Nusselt disc form factors. Specular transmission, Snell refraction through glass or water, and focused caustic light patterns are outside this formulation.

Surfel radiosity evaluates diffuse bounce, not curved dielectric transmission.
ATMOSPHERENO VOLUMETRICS

No Participating Media

Light transfer coefficients assume unobstructed travel through clear air or vacuum. Volumetric fog, smoke, atmospheric dust scattering, and subsurface scattering (SSS) are not simulated.

Surfel-to-surfel rays do not scatter through medium volumes.
SPECULARITYATTENUATION ONLY

Reflections Attenuated, Not Blurred

Non-zero material roughness scales specular highlight intensity down rather than convolving across a multi-sample BRDF lobe. Glossy reflections are sharp or faded, not physically blurred.

A deliberate speed tradeoff to preserve zero-sample determinism.
SHADOW ARTIFACTKNOWN STEPPING

Penumbra Banding Artifact

Cone-traced soft shadows across grazing angles can produce subtle discrete stepped bands near occluder silhouettes where the analytical sphere marcher crosses distance threshold boundaries.

Documented in TESTING.md; visible at extreme light grazing angles.
DYNAMICSMATRIX RE-SOLVE

Static Geometry for Radiosity

Orbiting a camera costs only 80 ms/frame because the radiosity solve is view-independent. However, moving geometry or area lights alters form factors and requires a matrix re-solve.

Ideal for architectural visualization & product turntables.

When to use Interflect vs a Path Tracer

If your scene requires refractive caustics on a million-polygon mesh, use a path tracer. If your scene requires instant, bit-identical, noise-free global illumination on analytic geometry without a GPU or neural denoiser, Interflect was designed specifically for you.

Standing on the shoulders of giants.

Almost nothing in this renderer is original. The one novel piece is the combination:meshless surfel placement on an SDF feeding a classical radiosity solve. Every component was solved decades before there was a reason to render with it.

1760

The closed form for a polygon's cosine-weighted solid angle. A modern path tracer spends hundreds of shadow rays approximating what he solved analytically 266 years ago.

1928

The disc-to-disc geometric form factor at the heart of Interflect's transfer matrix. A heat-transfer physicist working on thermal radiation who never saw a digital computer.

1960

The deterministic sequence that seeds every surfel in space. Choosing this over a pseudo-random number generator is precisely why Interflect is bit-identical across thread counts.

1984

Modeling the Interaction of Light between Diffuse Surfaces. Radiosity itself. This renderer is an argument about their landmark paper.

1996

Every primary and shadow ray. Sphere tracing requires only a bound on the derivative, which is why it survives creased and non-differentiable CSG surfaces.

2016

Linearly Transformed Cosines: the modern generalization of Lambert's result for real-time and analytical area light integration with microfacet distributions.

2001–

Every signed distance primitive, cone-traced soft shadows, and tone-mapping formulations. Published freely for decades, and the primary reason SDF rendering is accessible to anyone today.

Built by Arunvpp

Product Engineer building dynamic web applications, mobile systems, and open-source tools.

DEV-ID: ARUNVPP* Creator of Interflect
AVAILABLE FOR COLLABORATION
AV

Arunvpp

Product Engineer · Apps, Websites & Tools

Product Engineer building modern apps, responsive websites, offline-first mobile systems, and developer tools. Focused on creating resilient, fast, and thoughtful digital products that solve real problems.