January 1, 2026
Half-Lambert, full drama
A silly diffuse shading model
Half-light, full drama: devs cry 'Half-Lambert' while others vibe with 80s glow
TLDR: The author proposes a simple lighting tweak that keeps dark areas visible by remapping and squaring the light math. Commenters split: some nostalgic about its 80s look, others say it's basically Valve’s Half-Lambert from Half-Life, sparking a debate between quick, pretty hacks and physics-accurate rendering.
An artist-developer suggests a ‘silly’ fix for the classic lighting problem where half your scene goes pitch-black: remap the light angle to sit between 0 and 1, then square it for softer shading. The community didn’t just nod; they felt things. One user, dewitt, said the “sillier” look screams 80s fantasy, pointing straight to the Dragon Magazine #100 cover. Cue a flood of nostalgia and “bring back airbrushed chrome helmets” jokes.
But then came the plot twist: skocznymroczny asked if it’s simply Valve’s Half-Lambert from Half-Life—“add half, multiply half, square it.” Boom: accusations of reinventing the wheel vs cheers for rediscovering a classic. The physics purists grumbled about “not accurate,” PBR (physically based rendering) loyalists cited math and GTAO (a shading trick called ambient occlusion), while indie devs rallied behind the one-liner: “It looks good, ships fast.” The author’s cheeky “Happy Arbitrarily Chosen Point in Earth’s Orbit” line turned into a meme, with folks posting “new year, new shader.” Between retro vibes, game-engine pragmatism, and a dash of math flex about Hermite curves, this tiny tweak sparked big feelings—and a reminder that in graphics land, pretty + simple often beats perfect. And yes, the screenshots looked slick today.
Key Points
- •Lambertian diffuse shading max(0, dot(L, N)) can produce entirely black regions on surfaces facing away from a single light, hindering geometry visibility in quick demos.
- •Common fixes (multiple lights, textures, ambient occlusion like GTAO) are more complex than a simple one-line shader term.
- •A linear remap (1 + L·N)/2 avoids black areas but brightens the image compared to true Lambertian shading.
- •Squaring the remap, ((1 + L·N)/2)^2, yields results closer to Lambertian in lit areas while preserving gradients on the unlit side.
- •Matching values and slopes at x = ±1 suggests using Hermite interpolation to design functions approximating max(0, x) with smoother behavior.