Skip to content
Andrew Voirol
Work → Hair-Raising DemoGod Build
ThreadActive

Hair-Raising DemoGod Build

Building and shipping the DemoGod presentation tool — hair physics, compositing, and live demo capture.

Started Aug 14, 2026·Latest Aug 22, 2026·3 entries

DemoGod Studio default state — Brooklyn loft viewport with Demogod avatar, Hair Lab controls showing presets, tallness/volume/gloss sliders, color palette

Hair Lab at default: I/Ø Keynote preset, 100% height, 65% gloss, spring physics and audio-reactive bounce enabled.

DemoGod Power Mode activated — hair cranked to 220% height, 140% volume, 100% gloss in Demogod Gold with DEMOGOD ENERGY ACTIVE badge

Building and shipping the DemoGod presentation tool — hair physics, compositing, and live demo capture.

Latest Update

Pruning the demogod for open source release

Sat, Aug 22, 2026

Timeline

I wanted a presentation setup where my hair reacts to my voice and defies physics in real time. Built a parametric hair rendering engine in HairEngine.ts (449 lines) backed by MediaPipe's 468-point 3D face mesh. Instead of static overlay PNGs, the hair is rendered dynamically with height scaling up to 320%, horizontal volume expansion to 200%, and Marschner-style anisotropic specular highlights. Connected a second-order spring-damper model with 0.88 damping and 0.22 stiffness to head yaw and pitch velocities, so turning your head produces satisfying inertia recoil. Added real-time voice reactivity via the Web Audio API FFT analyzer, isolating speech frequency bins 2 through 45 (150 Hz to 3 kHz) to pulse the pompadour height upward whenever speaking. When you push height past 1.25x, 18 procedural bezier curves stitch seamless sky-high hair extensions, while 28 glint particles sparkle across the crest. It is completely absurd and completely impossible to stop playing with.

CanvasWebAudioCreative CodingPhysics
Permalink →

Turned a raw webcam feed into a polished tech keynote studio without touching an external broadcast tool. Wrote a 665-line HTML5 Canvas compositor in StudioRenderer.ts that layers background environments, presenter avatars, studio lighting, and foreground props in a single 60 FPS render loop. The camera face-swap mode uses a feathered elliptical clipping aperture centered on the nose landmark to blend real webcam video onto a custom procedural crewneck shirt. Added studio props right on the virtual desk: a Google DeepMind laptop with a gradient I/Ø badge and a yellow ribbed ceramic coffee mug. Integrated a built-in auto-scrolling teleprompter with adjustable speed and font size directly above the lens line so eye contact never drops. For recording, RecordingEngine.ts captures the 60 FPS canvas stream and mixes microphone audio locally using MediaRecorder, outputting ready-to-share WebM clips with zero cloud processing.

CanvasReactVideoUX
Permalink →

Before pushing the project to GitHub, I stripped out every trace of boilerplate and dead weight. Deleted 184 lines of unused App.css, scrapped boilerplate Vite SVGs, and pruned stale dependencies down to a clean 3,788 lines of TypeScript and CSS across 16 files. Configured .oxlintrc.json to catch lint regressions without slowing down iteration. The production Vite build now transforms 1,818 modules and bundles the complete client app in just 183ms. Pushed the repository to ais-hair-raising-demogod on GitHub with complete documentation, animated demo GIFs, and studio state screenshots. A goofy creative coding experiment is great, but a goofy creative coding experiment with zero lint warnings and instant builds is even better.

ViteCleanupShippingOpen Source
Permalink →

Andrew Voirol

Builder, hacker, shipper. Currently leaving localhost.

Navigate

WorkThreadsBuilder's LogAboutContactRSS Feed

Connect

X / TwitterGitHubLinkedIn

© 2026 Andrew Voirol·Back to top ↑
✦Just one prompt away from figuring it all out.