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

395 Followers  |  91 Following  |  50 Posts  |  Joined: 15.11.2024  |  1.874

Latest posts by vrkomarov.bsky.social on Bluesky

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 โ€” ๐Ÿ‘ 9    ๐Ÿ” 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 โ€” ๐Ÿ‘ 44    ๐Ÿ” 10    ๐Ÿ’ฌ 4    ๐Ÿ“Œ 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 โ€” ๐Ÿ‘ 17    ๐Ÿ” 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 โ€” ๐Ÿ‘ 28    ๐Ÿ” 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

First, UpdateTileMappings is unpredictably slow, i.e it works fine most of the time in a background thread, but sometimes it stutters in the graphics queue in the render thread. It can handle about 30-40k tiles, but at 170k+ you definitely get stutters.

20.07.2025 19:47 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

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

20.07.2025 19:46 โ€” ๐Ÿ‘ 16    ๐Ÿ” 1    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Video thumbnail

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

05.06.2025 17:13 โ€” ๐Ÿ‘ 59    ๐Ÿ” 12    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 2

It has some problems with a lot of trees and I need to figure out what to do with clouds+fog, but overall it's insanely good. And a lot of what I did for my denoiser (for example demodulation for transparent materials) came in handy here too.

26.05.2025 22:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
DLSS RR test
YouTube video by Vladimir Komarov DLSS RR test

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

26.05.2025 22:30 โ€” ๐Ÿ‘ 31    ๐Ÿ” 4    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Yeah, It would be interesting to see the results. I tried DirectML implementation with float16 and it was ~2 times slower

20.05.2025 06:46 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

On my laptop 3080rtx 1080p is ~25 msec for high quality and ~12.6 for fast preset. I use fast in the video (it has pretty decent quality). You can easily check your GPU - there is oidnBenchmark.exe in binaries on github

19.05.2025 17:30 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Updated Intel OIDN denoiser in my renderer
YouTube video by Vladimir Komarov Updated Intel OIDN denoiser in my renderer

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

18.05.2025 16:35 โ€” ๐Ÿ‘ 14    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

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

05.05.2025 23:12 โ€” ๐Ÿ‘ 22    ๐Ÿ” 4    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Motion blur experiment
YouTube video by Vladimir Komarov Motion blur experiment

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

23.04.2025 20:28 โ€” ๐Ÿ‘ 18    ๐Ÿ” 2    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Paper teaser image showing quality improvements from the proposed technique.

Paper teaser image showing quality improvements from the proposed technique.

I'm excited to share our latest paper (work with Matt Pharr and Tomas Akenine-Mรถller), "Improved Stochastic Texture Filtering Through Sample Reuse" accepted to I3D'2025.
arxiv.org/abs/2504.05562
research.nvidia.com/labs/rtr/pub... 1/

11.04.2025 15:34 โ€” ๐Ÿ‘ 122    ๐Ÿ” 24    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Post image

Managed to get Nvidia Flow (PhysX) to compile and run, after initially failing the other week. Was curious for a quick peek now that it's been open sourced (github.com/NVIDIA-Omniv...)

Flow itself isn't CUDA based, but instead uses compute shaders

Some higher level observations in the replies 1/?

06.04.2025 12:40 โ€” ๐Ÿ‘ 34    ๐Ÿ” 7    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Thank you!

07.03.2025 21:53 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image Post image Post image

Another experiment with beautiful clouds by @samuel_krug. All colors here are just from the planet's atmosphere and lightning, just different angles of the sun. It's slow but interactive and without lightning mesh light it's 2-3 times faster. Something needs to be done about this

07.03.2025 17:24 โ€” ๐Ÿ‘ 20    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Video thumbnail

Iโ€™m excited to announce that due to popular demand, we will release the full animatic of Flow aka Float aka the Crazy Frog Edition. Instead of using storyboards, all the scenes are designed directly in 3D. Everything was made in Blender and rendered in EEVEE.

13.02.2025 17:43 โ€” ๐Ÿ‘ 2833    ๐Ÿ” 789    ๐Ÿ’ฌ 20    ๐Ÿ“Œ 39

@vrkomarov is following 20 prominent accounts