Dusklayer
Sign in Get Pro
N° 0015ScenePro

Cathedral Grid

Shafts of sun fall from roof lights into a hazy hall of stone columns, and scrolling walks you down the nave.

Source files, Studio plan

34 KB of text that builds one HTML file. Paste it into Claude Code, Cursor or v0 to rebuild this page.

Open full page Live. Scroll inside the preview to play it.
Loading the layer
LooksShowing Warm stoneEach look changes the colours of the live preview and goes into the prompt you copy.
Make it yoursYour brand, copy and colours go into the prompt you copy. Colours change the preview live.
Brand remix is a Pro feature at launch. It is open in the preview.

Overview

An endless hall of stone columns in warm haze for an invented Edinburgh architecture practice: thick shafts of sun fall from square roof lights into pools on the floor, dust drifts in the light, and scrolling walks you forward down the nave past two shafts toward a third.

Signature momentA quarter of the way down the nave, a shaft of sun falls past the nearest column into a bright square pool on the floor while two more shafts fade into the haze beside the headline.

  1. An endless hall

    Up to 380 instanced columns in one draw call on a laptop and 160 on a phone, 6 m apart and 14 m tall by default, as round stone drums, octagonal piers or square board marked concrete with plinths, abaci and beams. The window of columns travels with the camera, nearest rows first.

  2. Light in dust

    Each shaft is a camera facing slab drawn additively at half resolution and softened against the hall's depth: a soft core, streaks drifting at 0.03 and 0.07 a second and dust motes that rise and twinkle. Six shafts in view by default, one to twelve, each landing as a soft square pool.

  3. Haze with no end

    Distance fog, height fog falling off at 0.3 per metre and a cubic ramp to seven optical depths where each ray leaves the grid, so the nave recedes into haze at every scroll position and never shows a wall.

  4. A walk on scroll

    A 250svh pin walks the camera 30 m down the nave on a Catmull Rom spline, past two shafts toward a third, with a 2 cm bob, a lean into the walk and a pointer spring of up to 4 degrees.

  5. A passing cloud

    A seeded flicker dims one or two roof lights by up to 55% for about a second every 7 to 12 s, and replays frame for frame under capture.

  6. Light on phones

    Hand written WebGL2, four programs in a Worker on an OffscreenCanvas, 81 KB of HTML. Phones draw 160 columns with shafts baked as gradient slabs; nine looks run from Warm stone to Night hall and White gallery.

Build details

Kind
Scene
Plan
Pro
Tone
Light, Dark
Industries
Agency, Portfolio, AI and tech
Technique
WebGL 3D
Built with
Lenis 1.3.27, plain HTML, CSS and one ES module
Looks
9
Weight
95 KB, layer files only
Mobile performance
100
Accessibility
100
Fidelity Score
In review
Licence
Commercial, including client work. No redistribution. Read it
Version
1, updated 3 November 2026
Released
3 November 2026
Parameters, 16 of them, all live through DUSKLAYER.set()
ControlKeyRangeDefault
Column spacing (m)columnSpacing3.5 to 106.0
Column height (m)columnHeight8 to 2414
Column shapecolumnShapeselect: square, octagonal, roundround
Shafts in viewshaftCount1 to 126
Shaft width (m)shaftWidth0.6 to 3.21.8
Light warmthlightWarmth0 to 10.55
Fog densityfogDensity0.01 to 0.120.026
Dustdust0 to 10.5
Walk speedwalkSpeed0.4 to 21.0
Camera swaysway0 to 10.5
Fog colourfogcolor#BBB2A6
Stone colourstonecolor#A99D8E
Accentaccentcolor#8C6219
Page tonepageToneselect: light, darklight
Graingrain0 to 0.60
Seedseed1 to 99997

Something wrong with this layer? Report a problem and we fix it in the next version.

The prompt

One text file, 34 KB, 10 sections. Every number the page uses is in it, so another model can rebuild the layer without seeing this one.

  1. Role
  2. Output contract
  3. Design tokens
  4. Layout
  5. Scene
  6. Presets
  7. Motion
  8. Responsive and performance
  9. Acceptance checklist
  10. Customize

How to use it

  1. Pick a look. The look you choose above is written into the prompt’s parameter block.
  2. Copy the prompt. Paste it into Claude Code, Cursor or v0 as the first message of a new session.
  3. Make it yours. Change the brand name, copy, colours and fonts first; every placeholder is marked. Keep the structure.
  4. Check it. The prompt ends with an acceptance checklist. Run through it before you ship.
Read the opening of the prompt
# Cathedral Grid: build prompt

## Role
You are a senior creative front-end developer. Build one self-contained `index.html`, the home page of {{BRAND_NAME}}, a practice of 28 in {{CITY}} that plans public buildings around daylight. The hero is hand written WebGL2: an endless hall of tall columns in haze ({{COLOR_FOG}} fog, {{COLOR_STONE}} stone), thick shafts of sun falling from square roof lights into soft pools, dust in the light. Scroll walks the camera down the nave past two shafts toward a third; now and then a cloud dims a roof light. It renders in a Worker on an OffscreenCanvas. Below: buildings with stills from the scene, the method and numbers, the studio with jobs and an enquiry card, a footer. It must read as a real practice's site.

## Output contract
- Files: `index.html` (classic head script, inline CSS, one ES module) and four stills in `assets/` (see Layout).
- Lenis 1.3.27 through an import map (`https://cdn.jsdelivr.net/npm/lenis@1.3.27/dist/lenis.mjs`), imported once the renderer starts, `{ lerp: 0.1, smoothWheel: true, autoRaf: false }`, `raf(now)` from the page loop; never under capture or reduced motion.
- Fonts: one non-blocking link (`media="print" onload="this.media='all'"`, plus `noscript`): `{{FONT_BODY}}:wght@400;500`, `{{FONT_DISPLAY}}:wght@300;500`, `display=swap`. Fallback faces, line gap 0: display from Times New Roman, Liberation Serif, Tinos (300: size-adjust 114.4%, ascent 93.4%, descent 25.6%; 500: 120.8%, 88.5%, 24.3%); body from Arial, Liberation Sans, Arimo (400: 98.6%, 89%, 21.3%; 500: 100.5%, 87.4%, 20.9%).
- Presets in `<script type="application/json" id="dusklayer-presets">/*PRESETS*/[nine looks]/*/PRESETS*/</script>`: defaults, then `?preset=001` to `008`, then `?seed=n`. A head script `window.CG` writes the look's custom properties and `theme-color` before the body parses and adds `html.js`.

[32,270 more characters. Copy the prompt to get all of it.]

More layers

Open the library

Tidal Glass

N° 0022

An underwater scene that rises through the surface as you scroll.

ScenePro

Chrome lettering breaks apart under soft studio light, one letter at a time as you scroll.

ScenePro

Ferro Mark

N° 0018

A chrome C forms from liquid metal, bristles into ferrofluid spikes near your cursor and slumps into a pool on scroll.

ScenePro