Advertisement · 728 × 90

Posts by Vladimir Komarov

Introduction to Spherical Harmonics for Graphics Programmers

INTRODUCTION TO SPHERICAL HARMONICS FOR GRAPHICS PROGRAMMERS

finally done.

gpfault.net/posts/sph.html

1 week ago 269 82 8 2

It's quite complex overall and approach for procedural volumes a bit hacky but at least it's controllable from material user shaders for them, so you can tweak it until you like it

2 weeks ago 0 0 0 0

collision from analytic volume and calc lighting here. Also I can use analytic volumes with priorities stack, in this case they cut space from additive volumes. For procedural I just use some random collision point to compare with other volumes including other procedural volumes

2 weeks ago 1 0 1 0

Thank you! Clouds+mist and volume in sphere are procedural volumes and I use ray marching for them. Also there is analytic volume on this scene. For overlapping I render heterogeneous and part of analytic volumes as additive, i.e use nearest collision in delta tracking and ...

2 weeks ago 1 0 1 0
Sunset [280] Based on my [url=https://x.com/XorDev/status/1918764164153049480]tweet shader[/url] by @Xor

Shaders fragcoord.xyz/s/sewg07xf and fragcoord.xyz/s/qvpyllck

2 weeks ago 0 0 0 0
Procedural volumes another test
Procedural volumes another test YouTube video by Vladimir Komarov

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

2 weeks ago 4 0 2 0
Preview
GitHub - adobe/openpbr-bsdf: Adobe's reference implementation of the OpenPBR BSDF Adobe's reference implementation of the OpenPBR BSDF - adobe/openpbr-bsdf

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

1 month ago 38 7 0 0

Thank you!

1 month ago 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

1 month ago 1 0 0 0
Advertisement
Procedural + analytic volumes
Procedural + analytic volumes YouTube video by Vladimir Komarov

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

1 month ago 22 2 2 0

Thanks!

2 months ago 0 0 0 0

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

2 months ago 1 0 0 0
Procedural volumes prototype
Procedural volumes prototype YouTube video by Vladimir Komarov

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

2 months ago 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.

2 months ago 2 0 0 0

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

2 months ago 1 0 0 0
Support for custom environment light shaders
Support for custom environment light shaders YouTube video by Vladimir Komarov

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

2 months ago 22 0 3 0
Advertisement
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/

2 months ago 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.

2 months ago 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...

2 months ago 161 50 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!

3 months ago 271 53 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.

4 months ago 39 10 2 0
Video

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

4 months ago 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.

4 months ago 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

4 months ago 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

4 months ago 2 0 0 0
Advertisement

Thank you! I thought about "frame selected" many times while recording the video😀

4 months ago 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...

4 months ago 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😀

5 months ago 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

5 months ago 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

6 months ago 0 0 0 0