If you've been watching recent engine-related news from the industry and are feeling disenchanted with that trajectory, I'd like to share some non-mainstream projects that might brighten your day:
Vladimir Komarov
@vrkomarov.bsky.social
Graphics programmer at Lesta Games (prev Wargaming St. Petersburg) Here I post about computer graphics and my engine/renderer mastodon.gamedev.place/@VrKomarov https://x.com/VrKomarov
I'm a little late to the party on this one since it's from January, but I just read this great blog post by Jure Triglav walking through implementing surfel-based global illumination. It's got a bunch of really cool interactive toys/visualizers! juretriglav.si/surfel-based...
I'm trying to write a little more frequently, so I wrote some words about the development of the original Fable. Yay! blog.simoncarter.me/blog/the-ori... #gamedev #fable #games
The Origins of Fable
The story of Fable's origins - failed pitches, a game called Wishworld, and unlikely sources of inspiration.
blog.simoncarter.me
It turns out I can use my procedural volumes to draw anything, including surfaces. Did a quick experiment with a water. I haven't had time to do FFT or proper geometry yet, so I'm using heightmap raymarching and waves from some cool shadertoy www.youtube.com/watch?v=CKRu...
Water rendering as a procedural volumetric
YouTube video by Vladimir Komarov
youtube.com
INTRODUCTION TO SPHERICAL HARMONICS FOR GRAPHICS PROGRAMMERS finally done. gpfault.net/posts/sph.html
Introduction to Spherical Harmonics for Graphics Programmers
gpfault.net
Playing with procedural volumes in my renderer. It's difficult to combine tracking/analytical/procedural volumes but since there is full control over procedural volumes from per-material shader, something can be done. Shaders from @XorDev fragcoord.xyz www.youtube.com/watch?v=xfzz...
Procedural volumes another test
YouTube video by Vladimir Komarov
youtube.com
Adobe just released an Apache-2.0 licensed reference implementation of the OpenPBR Surface standard, extracted from their in-house Eclair renderer. Neat trick: the reference implementation cross-compiles for C++, GLSL, Cuda, Metal, and Slang! github.com/adobe/openpb...
GitHub - adobe/openpbr-bsdf: Adobe's reference implementation of the OpenPBR BSDF
Adobe's reference implementation of the OpenPBR BSDF - adobe/openpbr-bsdf
github.com
I'm continuing to experiment with fully procedural volumetrics. Added interaction with analytical volumes. Because of the difficulty in combining these two different volumes, I had to use dithering to create transparency. www.youtube.com/watch?v=h0b1...
Procedural + analytic volumes
YouTube video by Vladimir Komarov
youtube.com
Сreated the first prototype of a fully procedural volumetric that can run any custom shader (not just specifying density and phase function) in my path tracer. Problem of intersecting volumes is more difficult to solve here, I'll think about it some more. www.youtube.com/watch?v=IqGi...
Procedural volumes prototype
YouTube video by Vladimir Komarov
youtube.com
Added support for custom environment light shaders/materials in my path tracer and now I can use @XorDev shadertoy magic as a light source. CDF mip chain for light sampling is rebuilt every frame. www.youtube.com/watch?v=p_1T...
Support for custom environment light shaders
YouTube video by Vladimir Komarov
youtube.com
The recap of my third year of development on Ombre is finally available: https://www.froyok.fr/blog/2025-11-ombre-dev-blog-3/
OMBRE Dev-Blog Year 3 | Froyok - Léna Piquet
It's November, which means it is time for another year long recap of the development of my own game engine. I'm a bit late compared to the anniversary date (November 5), but this year has been hectic ...
froyok.fr
Marcin Zalewski informed me that his blog post on real-time hair rendering using ray tracing is now available: mmzala.github.io/blog/hair-ge... This is nice work, in which he compares NVidia's hardware accelerated hair to several alternatives, including Reshetov's Phantom Ray Hair Intersector.
I'm finally writing up how Nanite Tessellation works. The first few blogs posts are up. More will be coming. graphicrants.blogspot.com/2026/02/nani...
Nanite Tessellation
Nanite Tessellation, aka Nanite Dynamic Tessellation, aka Nanite Dynamic Displacement was the next major feature I worked on after Nanite it...
graphicrants.blogspot.com
I just released my video about the engine (and game) I've been working on. The engine is based on dynamic SDFs, and the video describes how it works and what it makes possible. Link in the reply! This is my first YouTube video and it took forever - please repost!
Ever seen one of these, and wondered *why* they work? 🧵 This is a so-called Bitonic sorting network, and the illustrations show the two common ways to implement them. From an implementation point of view the two methods are effectively the same, so which one you pick just comes down to preference.
Our #SIGGRAPHAsia 2025 paper "Sample Space Partitioning and Spatiotemporal Resampling for Specular Manifold Sampling" improves #realtime #caustics rendering. Project Page: graphics.cs.utah.edu/research/pro... @daqilin.bsky.social @tizian.bsky.social
Another SIGGRAPH Asia gem: research.nvidia.com/labs/rtr/pub... "Sample Space Partitioning and Spatiotemporal Resampling for Specular Manifold Sampling" by Hong et al., which combines sample space partitioning with ReSTIR to efficiently handle caustics.
Sample Space Partitioning and Spatiotemporal Resampling for Specular Manifold Sampling | NVIDIA Real-Time Graphics Research
Caustics rendering remains a long-standing challenge in Monte Carlo rendering because high-energy specular paths occupy only a small region of path space, making them difficult to sample effectively. ...
research.nvidia.com
The z-buffer and depth testing (aka z-testing) have been the dominant way of hidden surface elimination for over 50 years, introduced but not implemented in W. Straßer's PhD thesis in 1974, and actually implemented in Ed Catmull's PhD thesis in the same year. 1/4
I finally added double support for positions in my engine and I can now draw objects at enormous distances from each other. This only cost ~15% scene graph update perf on CPU and it's almost free for GPU since everything is drawn relative to camera using float www.youtube.com/live/eYZ6wS9...
Double support for positions
YouTube video by Vladimir Komarov
youtube.com
Even if I'm not working directly on rendering clouds at the moment, I still somehow take screenshots of them as I work😀
I had previously used triangle meshes to render giant planetary atmospheres but after many unsuccessful attempts to fix all the artifacts, especially when intersecting atmosphere geometry, I decided to add support for spheres to my renderer. It works much better
Finally got around to implementing async scene loading in my engine. DX12 async compute for BLAS + background threads for bvh command list and resource loading. A lot of pain with synchronizing all of this and the ability to delete objects during loading www.youtube.com/watch?v=kkWa...
Async scene loading
YouTube video by Vladimir Komarov
youtube.com
Because of texture streamer it became necessary to almost always use mip maps, so I had to do basic normal map filtering, otherwise the surfaces become too shiny and flat. Only roughness without anisotropy for now. Images in order: mips disabled/enabled/+filtering. More below...
I'm working on texture streaming right now, and the first thing I tried was hardware tile streaming with sampler feedback. And yes, the state of hardware streaming is very sad. bsky.app/profile/fabr...
Hardware virtual textures look like a marvelous tool for large terrains or volume compression. Alas, they are in a sad state in terms of performance and usability. And strangely, the (very bad) binding perfs varies a lot with the driver. → read here: hal.science/hal-05138369 @rcmz0.bsky.social
Holy shit, I am just catching up with this article, which goes way further down the mipmap filtering rabbit hole than any other resource I've seen, including showing differences in GPU vendor hardware implementations. pema.dev/2025/05/09/m...
Tried DLSS RR in my path tracer and it's pure magic. I think it's quite expensive for games (~7ms for this image on laptop 3080), but for previz in path tracing it's really good, very resposive and high quality. www.youtube.com/watch?v=xtzW...
DLSS RR test
YouTube video by Vladimir Komarov
youtube.com
Just updated Intel OIDN for the first time in a couple of years in my renderer so I can use GPU version, and it works so well with DOF, motion blur, volumetrics and it's pretty fast. There is a little blurriness in some cases but it's totally solvable www.youtube.com/watch?v=YcHG...
Updated Intel OIDN denoiser in my renderer
YouTube video by Vladimir Komarov
youtube.com
New old blog post: I wrote this back in 2020 but didn't bother to finish editing/uploading until yesterday about how I made this forest scene as a technical art exercise. Slowly working my way through finishing/editing/uploading unfinished old blog posts... blog.yiningkarlli.com/2020/12/lupi...
Implemented a very simple timeline and motion blur in my path tracer. Just animating the scene a bit and accumulating frames (works well with rotation). Even 128 camera samples seems to be enough for even fairly fast movement www.youtube.com/watch?v=cwzP...
Motion blur experiment
YouTube video by Vladimir Komarov
youtube.com