Sign in

Daniel Schroeder

@dan5sch.bsky.social
548 followers 265 following 52 posts

Making pretty pictures with GPUs blog.danielschroeder.me

PostsRepliesMedia
Daniel Schroeder @dan5sch.bsky.social · 19/09/2026
It would feel more natural to me if the lumpiness of the tunnel surface were a function of world space position (plus any time variation)
210
Daniel Schroeder @dan5sch.bsky.social · 19/09/2026
Late to the conversation, but the thing that makes it feel "locked to the screen" the most for me is the fact that the geometric detailing of the tunnel seems to change only as a function of time and not because you move the tunnel around
120
Daniel Schroeder @dan5sch.bsky.social · 13/09/2026
Bringing this back to your question, no real world importance sampling technique can optimally sample to account for everything that affects the brightness you'll get from that path. So you just have to pick what to importance sample at each sampling event (or use multiple importance sampling)
131
Daniel Schroeder @dan5sch.bsky.social · 13/09/2026
For example, if you importance sample a BRDF, then the value of your BRDF eval for the sampled direction is proportional to the probability of having sampled it, so the one divided by the other cancel out to a constant -- *but* the other multiplicative terms in your estimator don't cancel. [cont]
120
Daniel Schroeder @dan5sch.bsky.social · 13/09/2026
I haven't done physically based raytracing in a long time, but to my understanding, people will use the term "importance sampling" to refer to any sampling operation whose probability distribution matches even *one* of the terms you have to evaluate after drawing the sample. [cont]
120
Daniel Schroeder @dan5sch.bsky.social · 28/08/2026
It's simultaneously depressing and validating to hear you voice these thoughts as well. I've been losing a lot of sleep over this lately. One small thing that gives me hope is that more and more people are feeling this way and are *willing to say it*. I'd like to think that this can only help.
0220
Reposted by Daniel Schroeder
Mike Turitzin @miketuritzin.bsky.social · 06/01/2026
The video: youtu.be/il-TXbn5iMA
youtu.be
I'm making a game engine based on dynamic signed distance fields (SDFs)
YouTube video by Mike Turitzin
2022358
Daniel Schroeder @dan5sch.bsky.social · 30/10/2025
I've been doing more research and thinking about this recently -- the merits of porting this into an engine vs. building out the engine features I'd need for a game myself. I'm increasingly favoring the path of doing a custom engine, for a range of reasons, but the jury's still out
030
Daniel Schroeder @dan5sch.bsky.social · 19/08/2025
Ok, this is relatable
110
Daniel Schroeder @dan5sch.bsky.social · 19/08/2025
Currently, all the light sources in my small-voxel renderer are dynamic (though without inter-object shadows). I didn't demo this in the new YouTube video, but somebody asked about it in the comments, so here's a quick example.
3231
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
Thanks! Though needless to say, I'm making some very particular tradeoffs to get there, compared to a general-purpose modern renderer...
020
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
Thanks! And yeah, shadows are something I'll be thinking about in the future. I mention this briefly in the blog post in the thread
020
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
Thank you!
010
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
For more information on what I've been up to and where I plan to go with this project from here, or to get in touch, see this blog post: blog.danielschroeder.me/blog/voxel-r...
blog.danielschroeder.me
Voxel Renderer — Handling Objects and Animated Characters
Introduction Somehow, it's been over a year since I wrote the first two posts introducing my small-voxel renderer, inspired by the look of classic 90's 3D games. These posts and the video received mor...
1235
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
I've made a new trailer-style video to show where the project stands today. Make sure to watch to the end... www.youtube.com/watch?v=bN9n...
youtube.com
Leveling up my small-voxel renderer
YouTube video by Daniel Schroeder
1283
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
To add those elements, I now support voxelizing detailed triangle meshes, producing voxel meshes that match the aesthetic of the environment geometry. The voxelizer tolerates off-the-shelf assets and produces good results across foliage, characters, and hard-surface meshes.
Top: three voxel meshes depicting different kinds of geometry you'd find in a game. Bottom: the triangle-mesh geometry I voxelized to create these meshes, visualized using surface normals to highlight geometric detailing.
1240
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
In last year's work, I modeled the environment as low-poly geometry and used textures with displacement maps to apply fine voxel detailing. This workflow is efficient for structures and terrain, but it can't handle things like foliage, small props, or animated characters.
Left: low-poly textured geometry. Right: the same geometry with small voxel detailing applied using displacement.
1150
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
Here's an update on my small-voxel renderer, inspired by the look of games like Doom and Quake. The work I shared last year focused on handling simpler environment geometry. Since then, I've greatly expanded the scope of what I can depict in this art style. More info in thread.
1428356
Daniel Schroeder @dan5sch.bsky.social · 18/08/2025
The pain is real. I had a mouse that developed this a few days before a deadline when I didn't have time to go buy a replacement. Much annoyance ensued
010
Daniel Schroeder @dan5sch.bsky.social · 02/08/2025
He, to be very clear, meaning me
110
Daniel Schroeder @dan5sch.bsky.social · 02/08/2025
Having no gameplay beyond being able to walk around? Nothing wrong with that, he says, self-servingly
110
Daniel Schroeder @dan5sch.bsky.social · 24/07/2025
Left feels practical, right has more personality IMO. Right feels like the posture of someone who feels threatened
020
Daniel Schroeder @dan5sch.bsky.social · 26/06/2025
I ran into this too recently, though not as a user. I was researching the APIs and their differences, and discovered that the early bug reports on the "gpuweb" spec repo are a great resource for discovering these differences.
110
Daniel Schroeder @dan5sch.bsky.social · 23/05/2025
I experimented with the same trick recently. Very useful when you're lighting an area with non-shadow-casting lights and don't want to use a huge number of them. Being able to configure *per light* what fraction of the light is ambient is also useful
020
Daniel Schroeder @dan5sch.bsky.social · 12/04/2025
Only took a quick look so far, but the interactive demos are very cool!
010
Daniel Schroeder @dan5sch.bsky.social · 30/03/2025
When I'm looking for info about how older engines solved problems, I try to find old modding community websites that are still active. There's usually somebody who has compiled this kind of information, or links to it
000
Daniel Schroeder @dan5sch.bsky.social · 26/03/2025
Getting there...
000
Daniel Schroeder @dan5sch.bsky.social · 26/03/2025
I took care of that days ago but my suitcase is still half packed. Results inconclusive.
110
Daniel Schroeder @dan5sch.bsky.social · 25/03/2025
OK, now this is super intriguing. Will have to look into your plugin...
010
Daniel Schroeder @dan5sch.bsky.social · 25/03/2025
Yikes. Thankfully I haven't met many people who talk this way. That said, I bet a lot of us have made the mistake of getting carried away and talking for too long about something we're working on that we care about. I sure have
110
Daniel Schroeder @dan5sch.bsky.social · 25/03/2025
Heck, I didn't even get sick and I feel destroyed. It's a draining week!
100
Daniel Schroeder @dan5sch.bsky.social · 22/03/2025
That's a wrap for GDC 2025! Thank you to everyone who met with me this week -- I got to have a lot of interesting conversations this year
050
Daniel Schroeder @dan5sch.bsky.social · 09/03/2025
Mixamo's Romero getting a glow-up?
110
Daniel Schroeder @dan5sch.bsky.social · 27/02/2025
Ooh, this looks nice. Brown or otherwise, one of the things that I think games from this era did well is to lean into an opinionated, stylized color palette
010
Daniel Schroeder @dan5sch.bsky.social · 27/02/2025
It makes me happy to see a big IP being willing to go for a project like this
010
Daniel Schroeder @dan5sch.bsky.social · 25/02/2025
Thank you! I really appreciate that
010
Daniel Schroeder @dan5sch.bsky.social · 25/02/2025
The environment geometry uses low-poly meshes and displacement; the new assets are voxelized from detailed triangle meshes. This screenshot uses CC0 assets from @polyhaven.com, the Cleveland Museum of Art, and the Virtual Museums of Małopolska
040
Daniel Schroeder @dan5sch.bsky.social · 25/02/2025
Previously, the renderer only supported environment geometry like the wall and floor seen in the background. Now, it can depict the smaller objects that populate a game environment -- the sorts of things that would have been sprites in Doom, or non-brush geometry in Quake
191
Daniel Schroeder @dan5sch.bsky.social · 25/02/2025
Hey folks. I'll be in San Francisco next month for GDC! Here's a look at what I've been adding to the small-voxel renderer I'm building, inspired by the visuals of classic 90s 3D games. Feel free to reach out if you're interested in meeting (DMs, or the email on my website)
A render of a potted plant, candelabra, statue, and pot, depicted using very small voxels for a stylized look reminiscent of the pixelated assets of classic 90s 3D games
3373
Daniel Schroeder @dan5sch.bsky.social · 24/02/2025
Importing something like Quake geometry unmodified wouldn't work too well -- you have to be more mindful of texture choice and alignment along hard edges compared to non-displaced geometry, and the look I'm going for really benefits from having smooth normals on things like arches
110
Daniel Schroeder @dan5sch.bsky.social · 23/02/2025
Thank you!
010
Daniel Schroeder @dan5sch.bsky.social · 22/02/2025
It's not the subject of your post, but I like the sound design on the second weapon in the clip
110
Daniel Schroeder @dan5sch.bsky.social · 03/02/2025
I really like this style of post. Being able to scroll through and see quick descriptions of how different people have solved a problem can be quite valuable
020
Daniel Schroeder @dan5sch.bsky.social · 18/01/2025
I'm getting "Winamp visualizer" vibes from this
010
Daniel Schroeder @dan5sch.bsky.social · 13/01/2025
Thank you! And yeah, handling the sharp edges was by far the hardest part of building what you see in the video. I spent a questionably wise amount of time solving that problem, but it really is essential to allow the intended visual style (and environment modeling workflow) to work.
120
Daniel Schroeder @dan5sch.bsky.social · 13/01/2025
I haven't shared any builds at this point. Continuing to flesh out more of the tech you'd need in order to create a full gameplay experience in this visual style
100
Daniel Schroeder @dan5sch.bsky.social · 13/01/2025
In short: no. My goal with this project is to modernize the aesthetic of classic 3D games, so my use of voxels is about art style, not gameplay (e.g., destruction). This also allows me to model the environment more efficiently, as low poly meshes plus displacement; I only need the *surface* voxels
120
Daniel Schroeder @dan5sch.bsky.social · 13/01/2025
Thanks! With respect to lighting: because the voxel-scale details here are formed by displacing the surface of a low-poly mesh, even a single object's geometry is more complicated than belonging to one voxel grid. So it's less friendly for ray traversal than typical voxel geometry
100
Daniel Schroeder @dan5sch.bsky.social · 12/01/2025
I went for a "medieval / castle" theme for this demo environment because it's a common setting in classic 3D games and it has surfaces (like stone block walls) where the three-dimensionality of the displacement will be obvious. And because it's fun :)
010
Daniel Schroeder @dan5sch.bsky.social · 10/01/2025
I've continued to work on this project since last May. I plan to upload another video in the next few months showing more recent progress.
2140