CAUSTIC
Real-time optics workbench

Optics as
a medium.

01 · WholeAuthor dispersion, thin-film and transmission against your own geometry — then export the material, not a screenshot. 02 · BrokenA pane you were never meant to notice. Put a crack through it and every seam becomes a lens. 03 · AuthoredThat is the moment glass stops being a picture of something and starts being a thing you can measure.
Scroll
nD 1.520Abbe 58.6BK7
02 / Fracture

Nothing teaches you glass
like breaking it.

A pane is a boundary you were never meant to notice. Split it and every seam becomes a lens — the physics stops being invisible and starts being something you can author.

7 cells0.4 mm seamBeveled edge
03 / Loupe

Look closer
and it bends.

Move the loupe across the plate. Nothing here is pre-rendered — the glass resamples what is behind it every frame, magnifying, bending at the rim and splitting the channels the way a real element would.

Move to inspectScroll raises the power
Specimen plate · BK72.0×
04 / Index

Every material bends
light by a number.

Crown glassn 1.520
Vacuum1.000
Water1.333
Crown glass1.520
Sapphire1.770
Diamond2.417
05 / Dispersion

One number
is a lie.

A material has an index per wavelength. Blue turns harder than red, so one ray leaves as three. The width of that fan is the Abbe number — the difference between glass that looks rendered and glass that looks real.

F line · blue
486.1 nm
n 1.5240
d line · yellow
587.6 nm
n 1.5200
C line · red
656.3 nm
n 1.5150
06 / Assembly

Take the
stack apart.

Seated · 0.00 mm separation
07 / Coating

A quarter of a
wavelength thick.

An anti-reflective stack is measured in nanometres and judged in colour. Get the thickness wrong by a tenth and the whole element turns the wrong shade of magenta under a softbox.

Deep blue reflect380
Cyan reflect470
Neutral bloom550
Warm reflect640
Film thickness380 nm
08 / Specimens

The library,
in the hand.

One plate, cut into five materials and seated so the seams close. Bring the pointer in and it fractures — every piece separates along its own radial, and the one you are over separates furthest, turns to face you and fills its whole frame with a photograph of that glass.

09 / Workbench

Author it,
don't fake it.

Every value below is a live parameter of the specimen on the right. Change one and the glass changes in the same frame — then leaves as a material, not a screenshot.

0Cells
0FPS target
0Requests
Specimen · BK7Index 1.520
Index1.520
DispersionAbbe 58.6
Roughness0.06
Absorption0.12
Thin film420 nm
Bevel1.4 mm
01Backdrop buffer
02Refraction ray
03Volume absorption
04Rough transmission
05Thin-film coating
06Single-file export
10 / Caustics

Light keeps
its own notes.

A caustic is what is left on the floor after the glass has finished deciding. Every fold in the field behind this is a place where the surface focused more rays than the ones beside it — the signature a material leaves.

Scroll drives the fieldNo wall clock240 × 135 source
11 / Field notes

Read by people who
grind their own glass.

“
We stopped shipping screenshots of glass and started shipping the glass. The Abbe slider alone paid for the quarter.
−38%look-dev time
Mira HalvorsenOptical lead · Lattice
“
The first tool where the number on screen is the number in the shader. Our coating team reads it without a translator.
1 filehanded to engineering
Jonas ReierThin-film · Meridian Optics
“
It exports a material, not a mood board. That distinction is the entire reason it survived our pipeline review.
4 renderersone source of truth
Anneke VossRendering · Cassini Studio
“
I stopped asking the simulation team for a sanity check. The dispersion here already matches the bench data.
0 round-tripsto the sim team
Priya RaghunathanLens design · Aperture Works
“
Our glass library used to be forty files and a folklore document. It is now one panel and a number I can defend.
3 days → 2 hper material
Tomas EkLook dev · Northlight
“
We added a fourth renderer and did not rewrite a single material. That has never once been true before.
+1 rendererno rewrite
Sofie LindqvistTechnical art · Vantage
Drag01 / 06
12 / Export

Leave with the
material itself.

Nothing here is trapped in the tool. Every parameter you set writes out to the format your renderer already speaks.

GLSLFragment · uniforms
MaterialX1.39 · node graph
USDPreview surface
glTFKHR transmission
// caustic — bk7.glsl
const float ior = 1.5168;
const float abbe = 64.17;
const float roughness = 0.06;
const vec3  attenuation = vec3(0.88, 0.94, 1.00);
const float film_nm = 420.0;
13 / Anneal

Then put it
back together.

Annealing is the slow cool that takes the stress out of glass. Seven cells, one pane, no seams left to see — and everything you just read is still a parameter.

This page needs a modern browser with canvas support.