Skip to content
View lampmaker's full-sized avatar

Highlights

  • Pro

Block or report lampmaker

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
lampmaker/README.md

Hi, I'm Matthijs Keuper 👋

I'm an engineer and an artist, and most of what's here sits on the line between the two.

The engineer: about thirty years with light. LED systems, nonimaging optics, photobiological safety, and taking hardware to production at Philips, Lumileds and my own companies, with 25+ patents along the way.

The artist: studio code+wood. I turn digital logic into something physical.

  • Wood engravings. An AI portrait or a 3D-rendered night street, turned into a dense field of lines by my own generative JavaScript, laser-engraved into black wood on a laser cutter I built, then filled by hand with oil paint I mix from linseed oil and pigment. Up close it's a tangle of lines; step back and a face looks at you.
  • Wood relief prints in small editions, pressed by hand on a 60-year-old Korrex proof press.
  • Generative work: Trajectories, Linea (non) Recta on fx(hash), and flow and erosion simulations that sculpt landscapes in real time.
  • Vinny, a six-axis robot I'm teaching to paint.

The two halves feed each other. The erosion landscapes needed a path tracer, and what I learned from it is in the design of the one below.

Physically based light in the browser. A WebGPU path tracer that renders in real units, candela per square metre and lux, with a scene builder, a measuring tool, and an optics bench for LED and luminaire design that traces the same scene the picture shows. Nothing to install: it runs on your own graphics card. I think good optical tools shouldn't need an expensive licence and a workstation.

Run it →

Also here

  • tinywebgpu: one file, no dependencies, no build step. A WebGPU micro-framework for shader-first work (SDF tracers, GPGPU experiments, shadertoy-style pieces). ShadyTracer runs on it.
  • GUISTUFF: UI widgets built on Tweakpane: a property table, a tree view and a split-pane container.
  • CODEANDWOOD-TOOLKIT: the studio's JavaScript utilities for arrays, colour, SVG and paths.
  • TSON: JSON with tables, matrices and unquoted keys. Every JSON file is valid TSON.

Support

ShadyTracer is free and stays free, for students, makers, artists and anyone curious about light. If it's useful to you, a tip keeps it going, one-time or monthly: ♥ Sponsor on GitHub. Or hang one of my pieces on your wall: codeandwood.art.

Pinned Loading

  1. ShadyTracer ShadyTracer Public

    Physically based light in the browser: a WebGPU path tracer in real units (cd/m², lux), with a scene builder, a measuring tool and an optics bench for LED and luminaire design. Nothing to install.

    JavaScript 24 4

  2. tinywebgpu tinywebgpu Public

    A tiny WebGPU framework where one JS object is the single source of truth for uniforms and resources — WGSL structs, binding indices and buffer offsets are generated. Fullscreen WGSL shaders, compu…

    JavaScript 1 1

  3. GUISTUFF GUISTUFF Public

    Tweakpane add-ons as plain ES modules with no build step: a property table, a tree view and a split-pane container. ShadyTracer's properties and scene tree are built on them.

    JavaScript

  4. CODEANDWOOD-TOOLKIT CODEANDWOOD-TOOLKIT Public

    The code+wood toolkit: small JavaScript utilities for arrays, colour, SVG and paths, each with an HTML example.

    JavaScript

  5. TSON TSON Public

    Typed Structured Object Notation: a compact, human-friendly superset of JSON with tables, map tables, matrices, text blocks and unquoted keys. Every JSON file is valid TSON. A JavaScript parser wit…

    HTML