Running now, not on video.
Six plates. Every one of them computes in your tab while you look at it: real WGSL compute kernels, a PDE solver over real Norwegian terrain, a million points in a single draw call. The readout beside each plate is measured live, on your machine.
This is craft evidence. The commercial work, proving an old calculation core and its replacement equal to the krone, is on the Norwegian main page.
A million grid assets, one draw call
A live MapLibre + deck.gl scene rendering 1,000,000 synthetic grid-asset points over Norway. All geometry is uploaded once as binary GPU buffers, so pan, zoom and animation cost no CPU re-tessellation. The hard part is keeping the buffer identity stable across frames so deck.gl never re-uploads.
Plate 01 · deck.gl + MapLibre · WebGL2 Drag to pan · scroll to zoom · colour = simulated grid load · synthetic points
Power flow, entirely GPU-resident
Hundreds of thousands of particles advected through an analytic flow field on a WGSL compute shader that models transfer from northern hydro generation to southern load centres. Trails accumulate in a ping-pong texture. The CPU writes one uniform per frame; everything else stays on the GPU.
WebGPU not available in this browser
This plate needs a WebGPU-capable browser (Chrome/Edge 113+, or Safari 18+).
The compute-shader source ships in the bundle either way, so open
src/webgpu.ts to read the WGSL.
Plate 02 · WebGPU Real @compute kernel · 64-thread workgroups · GPU-resident particle state
A risk surface repriced every frame
A 73k-triangle grid displaced entirely in a custom GLSL vertex shader by an animated exposure field of asset clusters that reprice per frame. The fragment shader ramps colour by exposure and shades with a screen-space normal. Zero CPU geometry work; drag to orbit.
Plate 03 · custom GLSL vertex shader · WebGL2 Surface height and colour = simulated risk · synthetic field
Travel time over real terrain, solved on click
A real-time isochrone over Estenstadmarka / Jonsvatnet outside Trondheim. A WebGPU compute shader solves the anisotropic eikonal equation on a 455k-cell DEM, giving hiking time from any point, with cost from Tobler's hiking function. The full relaxation converges in a single GPU submit per click, so the isochrone snaps in instantly. Real Kartverket-derived elevation; the backend is static files.
WebGPU not available in this browser
The eikonal solver needs a WebGPU-capable browser (Chrome/Edge 113+, or Safari 18+).
The WGSL source ships in the bundle either way, so open src/hiking.ts to read it.
Plate 04 · eikonal solver · WGSL compute Click or drag the terrain to move the trailhead · right-drag to orbit · scroll to zoom · Terrarium z13 DEM · 3.5× vertical and 5× slope exaggeration for legibility
Urban wind, turbulence included
An unsteady 3D solver over a city (Stam stable-fluids plus a Smagorinsky LES eddy viscosity). Each frame: semi-Lagrangian advection → turbulent diffusion νt = (Cs·Δ)²|S| → pressure projection ∇²φ = ∇·u by red-black SOR, no-flow on buildings. Momentum advection produces real wakes, recirculation and vortex shedding behind the towers. It has to run live, because turbulence is unsteady. 70k tracers, coloured by speed.
WebGPU not available in this browser
The LES solver needs a WebGPU-capable browser (Chrome/Edge 113+, or Safari 18+).
The WGSL source ships in the bundle either way, so open src/wind.ts to read it.
Plate 05 · unsteady 3D Navier–Stokes · WGSL Drag to orbit · scroll to zoom · procedural city · stepped live on the GPU
An energy-system globe that costs nothing to load
A 3D globe of the Norwegian energy system: offshore platforms, onshore substations and transmission lines over the real coastline. Runs token-free on bundled public-domain imagery: no Ion account, no external calls. The engine is loaded on demand, so it contributes nothing to first paint.
Loads the CesiumJS engine on demand, kept out of the initial bundle.
Plate 06 · CesiumJS, lazy-loaded Drag to orbit · scroll to zoom · nodes pulse in real time · synthetic node data
Happy to walk through any of it.
Also built: embedded systems, moving-map engines, production Rust against Norwegian national geodata, and a live product of my own at solrapport.no.
bjreppen@gmail.com