Vladimir Komarov's Avatar

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

413 Followers  |  96 Following  |  59 Posts  |  Joined: 15.11.2024
Posts Following

Posts by Vladimir Komarov (@vrkomarov.bsky.social)

Thank you!

23.02.2026 06:39 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
__OG_TITLE__ __OG_DESCRIPTION__

In this demo, in addition to shadows from the procedural volume, I also add lighting to the analytical volume when calculating the light from the spot light. @XorDev shader fragcoord.xyz/s/fxz51u1k is from his new FragCoord tool

22.02.2026 21:45 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Procedural + analytic volumes
YouTube video by Vladimir Komarov Procedural + analytic volumes

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...

22.02.2026 21:44 β€” πŸ‘ 22    πŸ” 2    πŸ’¬ 2    πŸ“Œ 0

Thanks!

15.02.2026 20:30 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Awesome shaders from @XorDev www.shadertoy.com/view/WXV3zt and www.shadertoy.com/view/3XtXzX

15.02.2026 19:39 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Procedural volumes prototype
YouTube video by Vladimir Komarov Procedural volumes prototype

Π‘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...

15.02.2026 19:39 β€” πŸ‘ 22    πŸ” 1    πŸ’¬ 3    πŸ“Œ 0
Rearchitecting Spatiotemporal Resampling for Production | Research Recent work by Bitterli et al. introduced a real-time, many-light algorithm for rendering dynamic direct illumination from millions of lights by iteratively applying resampled importance sampling usin...

For some time now, I've been using the approach from research.nvidia.com/publication/... with mip chain + restir presampling. Previously I used the classic CDF with presampling, but mip chain is more convenient and doesn't have any drawbacks for me.

11.02.2026 07:25 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Shaders used shadertoy.com/view/3fKSzc
and shadertoy.com/view/WcKXDV

09.02.2026 20:36 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Support for custom environment light shaders
YouTube video by Vladimir Komarov Support for custom environment light shaders

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...

09.02.2026 20:36 β€” πŸ‘ 22    πŸ” 0    πŸ’¬ 3    πŸ“Œ 0
Preview
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 ...

The recap of my third year of development on Ombre is finally available:
https://www.froyok.fr/blog/2025-11-ombre-dev-blog-3/

03.02.2026 16:18 β€” πŸ‘ 23    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0
Post image Post image Post image Post image

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.

02.02.2026 15:29 β€” πŸ‘ 40    πŸ” 13    πŸ’¬ 0    πŸ“Œ 0
Preview
Nanite Tessellation Nanite Tessellation, aka Nanite Dynamic Tessellation, aka Nanite Dynamic Displacement was the next major feature I worked on after Nanite it...

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...

02.02.2026 02:40 β€” πŸ‘ 160    πŸ” 51    πŸ’¬ 1    πŸ“Œ 1
Post image

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!

06.01.2026 19:53 β€” πŸ‘ 265    πŸ” 51    πŸ’¬ 13    πŸ“Œ 2
Post image

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.

20.12.2025 00:24 β€” πŸ‘ 39    πŸ” 10    πŸ’¬ 2    πŸ“Œ 0
Video thumbnail

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

14.12.2025 22:12 β€” πŸ‘ 52    πŸ” 12    πŸ’¬ 1    πŸ“Œ 0
Preview
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. ...

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.

04.12.2025 10:42 β€” πŸ‘ 25    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0

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

30.11.2025 15:51 β€” πŸ‘ 54    πŸ” 11    πŸ’¬ 5    πŸ“Œ 0

I push to GPU array of instances info including double3 pos. Every frame I fill bvh instances with float3 (camera relative) from global double3 pos buffer in compute shader and rebuild tlas relative to camera. I do it for all tlas bvhs. Also I do some work on CPU for other structures e.g. light tree

25.11.2025 10:16 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thank you! I thought about "frame selected" many times while recording the videoπŸ˜€

23.11.2025 14:12 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Double support for positions YouTube video by Vladimir Komarov

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...

22.11.2025 23:56 β€” πŸ‘ 31    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Post image Post image Post image Post image

Even if I'm not working directly on rendering clouds at the moment, I still somehow take screenshots of them as I workπŸ˜€

19.11.2025 19:52 β€” πŸ‘ 18    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Post image Post image Post image Post image

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

25.10.2025 23:12 β€” πŸ‘ 27    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Thank you! I don't have an end goal yet but there is a bunch of functionality I want to implement

06.10.2025 20:56 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Async scene loading
YouTube video by Vladimir Komarov Async scene loading

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...

05.10.2025 16:19 β€” πŸ‘ 17    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image Post image Post image 05.08.2025 19:16 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image Post image Post image

I store the texture with additional roughness separately with BC4 compression. Unfortunately in the case of a material with a custom shader additional complications are added, for example when a normal blend is needed.

05.08.2025 19:15 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image Post image Post image

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...

05.08.2025 19:15 β€” πŸ‘ 10    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

And in this case you don't need sampler feedback, min mip textures and tile management.

20.07.2025 19:47 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

In the end I decided to try simple mips streamer and it works much better and memory savings are almost the same (because for tiled mode I load a bit more tiles than necessary, otherwise sometimes there are filtering artifacts in the process of loading new tiles).

20.07.2025 19:47 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Besides UpdateTileMappings sampler feedback also has problems, at least on my laptop Nvidia 3080. There are crashes if you use it in any hit shaders and wrap mode for samplers doesn't work. Also found this list of problems on other vendors github.com/HansKristian...

20.07.2025 19:47 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0