CAUSTIC
Real-time optics workbench

Optics asa 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
02 / Fracture

Nothing teaches you glasslike 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 closerand 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
04 / Index

Every material bendslight by a number.

Crown glassn 1.520
05 / Dispersion

One numberis 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 / Coating

A quarter of awavelength 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.

Film thickness380 nm
07 / 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 the field seen through that glass.

08 / 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.

7Cells
60FPS target
0Requests
Specimen · BK7Index 1.520
01Backdrop buffer
02Refraction ray
03Volume absorption
04Rough transmission
05Thin-film coating
06Single-file export
09 / Caustics

Light keepsits 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
10 / Field notes

Read by people whogrind 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
11 / Export

Leave with thematerial 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;
12 / Anneal

Then put itback 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.

四宫格