Profile avatar
guycalledfrank.bsky.social
Graphics programmer, indie game developer. Developed Bakery (a GPU lightmapper) and some other tools. Ex-PlayCanvas engine dev. Working on Faded: https://linktr.ee/fadedthegame Other stuff: https://ndotl.wordpress.com/cv/
50 posts 914 followers 80 following
Regular Contributor
Active Commenter

made a blog post out of some old thoughts about rarity in games (and how the coolest shit in games is the shit that hardly ever happens) www.joewintergreen.com/design-thoug...

⚡️⚡️⚡️ Luminal Spaces v0.1 is out! This is the voxel + realtime global illumination toy I've been working on in the past few weeks. It's a fun little experimental project where you can build small voxel scenes and play with lights and shadows. Try it out for free here: lisyarus.itch.io/luminal-spaces

FUN FACT: it seems In CUDA you can overwrite completely unrelated data by writing to a buffer out-of-bounds. AFAIK drivers guard against it for regular GAPI shaders, but here... just a fixed a bug that had an out-of-bounds write to a byte buffer corrupt an unrelated uint buffer😳

"open source tool for object destruction simulation in Unity" github.com/HunterProduc...

Hacked together some variance-guided blending rate & figured a way to share surfels between faces. Now big lighting changes converge faster (e.g. no "ghosts" after removing a light). Now it looks smooth as heck! This is real-time, video sped up 3x just to be less boring 😎

New post is up: http://www.ludicon.com/castano/blog/2025/02/gpu-texture-compression-everywhere/

I found really cool shadertoy: Fast Gaussian-blurred polygon www.shadertoy.com/view/fdffDS I have been looking for a way to draw blurry paths recently. I have a bag of tricks for SDFs, but nothing quite works. This shader kinda changes how I look at the whole GPU 2D drawing.

Yaay, it works! Smth like radiosity GI, but on voxels. In essence I spawn 4 surfels in corners of each visible face, and run real-time MC irradiance integration on them assuming diffuse materials. A lot can be done to improve convergence, but it's already fun to play with 🤩

a noisy foliage volume a.k.a the laziest-ass foliage workflow ever invented 🙃

Also implemented some simplistic "real-time GI" that works in both lighting and the froxel fog. It's similar to Crytek's LPV in spirit (as it propagates SH in a volume), but does it via downsampling (like you do for bloom)...

Having fun with a mix of froxels and raymarched primitives for volumetric fog

I just pushed a new "Lite" version of my spherical harmonics shader library for HLSL: github.com/TheRealMJP/S... The Lite version does not use templates, and is compatible with FXC or other compilers that don't support templates and operator overloads.

New blog post! You might've noticed that I was into water simulation lately. In this article I explain the method I used and why I need this simulation in the first place. lisyarus.github.io/blog/posts/s...

Apparently Unity found the answer...

A project I did last year that perhaps did not make the BlueSky rounds: Realtime path tracing via WebGPU compute shaders gnikoloff.github.io/webgpu-raytr...

Introducing Slow Roads 2.0 - procedurally-generated, scenic roads for endless driving zen. Built with @threejs.org to run in your browser - no installs, no ads, just roads. Play free at slowroads.io #threejs #webgame #javascript #procedural #webgl

For the love of our eyeballs, do not align your ember particles to velocity! Don’t give them that comet texture either, ugh. Let’s make ✨physically based flying embers✨ A Unity vfx graph implementation and explanation below. 🧵

I wrote a blog post on my implementation of the Surfel maintenance pipeline from my Surfel Radiance Cascades project. Most of what I learned came from "SIGGRAPH 2021: Global Illumination Based on Surfels" a great presentation from EA SEED :) m4xc.dev/blog/surfel-...

New on my blog: Part 1 of a 'manual' for tinybvh. jacco.ompf2.com/2025/01/24/t... This discusses basic setup, tracing rays, alternative BVH layouts, refitting, TLAS/BLAS setup. The second part of the manual will contain more advanced topics. Comments welcome.

Always wanted to figure out imposters. Here's a use case: cheap light shafts!

Back in 2016, I was idly going through HL2’s source code and started tweeting interesting tidbits; this interested people a lot and PC Gamer made an article out of it. I've collected all those tweets in a blog post now since Twitter's how it now is www.joewintergreen.com/half-life-2-...

I posted a few days ago the shader ISA code for the atan2() instruction, the size of which appeared to catch people by surprise. This inspired me to write a blog post to discuss the “hidden” cost of shader instructions a bit more. interplayoflight.wordpress.com/2025/01/19/t...

Shadertoy for SDF path rendering building blocks. Combines bunch of previous work from other fine folk, and tiny bit of ingenuity :) Distance, winding number, and arc length for line, arc and quad bezier. www.shadertoy.com/view/lXcBRj

The final part of my "Demystifying the PVS" blog series is now out! In "Portal flow brings it all together" you'll find an illustrated step-by-step example of Quake's recursive portal clipping. Also touches on Doom 3's interesting super-fast PVS builder. 📜 https://30fps.net/pages/pvs-portal-flow/

What's the state of the art solution for volumetric lights today? Say, I want a bunch of shadowed spotlights illuminating a foggy scene (fog is preferably textured/animated) Froxels feel like they'll be too low-res... Naive raymarch in 1/4 and smart upsample + directional blur?

May I present my new four-part article series “Demystifying the PVS” on Quake's precomputed visibility. The first three parts are out now! Read them here: 📜 https://30fps.net/pages/pvs-portals-and-quake/ Related code available at: 🖳 https://github.com/pekkavaa/vis.py/

Somehow I missed this cool 3D radiance cascades demo: shadertoy.com/view/X3XfRM