Max Liani's Avatar

Max Liani

@maxliani.bsky.social

Tracing rays at NVIDIA. Former lighting artist, working on computer graphics rendering tech for all humans and robots alike. I mostly post stuff about light transport simulation, and my hobby project Workbench.

1,064 Followers  |  48 Following  |  414 Posts  |  Joined: 27.10.2024  |  2.5359

Latest posts by maxliani.bsky.social on Bluesky

๐Ÿ™ I am doing better, thank you. My energy envelope is still tight, so I take it easy and rebuild.

05.08.2025 05:22 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Reading your post, if I didnโ€™t know about the subject I may have thought that stratified samples cannot be progressive on their own, while there are stratified samples sequences that already have those properties and more (I.e. pmj02).
The main part of the post is cool nonetheless.

04.08.2025 21:57 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

That will break any stratification and the intersection of the 1d and 2d samples will result in white noise.

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

In general I tend to stay clear about using 1d samples. Nowadays lots of things are evaluated stochastically. Using a 1d sequence to sample something that will sample over some other dimension (i.e. use a 1d sequence to pick a light to sample, than use a 2d sequence to sample the light area),

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

Most stratified sample sequences are โ€œtoroidalโ€ in nature, but some may have some constraint about what is optimal, for example some work best if the starting point is at increments of 4โ€ฆ

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

Stratified sampling can make a set or a sequence. A set requires all samples to deliver the desired quality, while sequences deliver a progressively good result, similarly to your golden ratio test.
Maybe I missed it, as I am surprised you donโ€™t write about the difference between set and sequences.

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

The way I understand that is that Linโ€™s paper introduces a fast GPU builder for the light treeโ€ฆ but I may be wrong.
My current implementation is a simpler and less capable version of that where I mostly figured out from first principles the math to compute the correct PDFs for MIS with brdf sampling

26.07.2025 10:31 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image Post image

First rather naive implementation of Stochastic Light Cuts. Here comparing uniform sampling vs SLC with 1spp over 16,000 lights.

26.07.2025 08:59 โ€” ๐Ÿ‘ 31    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Thank you so much! I am getting there.

25.07.2025 07:24 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Itโ€™s been a long break away from my projects. Work deadlines + sickness + low energy slow recoveryโ€ฆ
I think Iโ€™ll try to make some progress on light transport, at least for a bit. Workbench doesnโ€™t handle many lights (not gracefully at least).

25.07.2025 07:11 โ€” ๐Ÿ‘ 21    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

This is really cool, I like the frame composition too.

19.07.2025 23:53 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I see first public mentions of some of the advanced techniques I implemented while I was there. Like quantized quaternions for OBB ray traversal, variable bit rate encoding, deduplication, among other stuff.

22.06.2025 01:15 โ€” ๐Ÿ‘ 10    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

How did you manage to keep the browser open for that long without running out of memory?

19.06.2025 12:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image Post image Post image Post image

Histogram Stratification for Spatio-Temporal Reservoir Sampling

Corentin Salaรผn, Martin Bรกlint, Laurent Belcour, Eric Heitz, Gurprit Singh and Karol Myszkowski

(Max Planck Institute for Informatics, Germany & Intel, France)

iribis.github.io/publication/...

19.06.2025 01:31 โ€” ๐Ÿ‘ 63    ๐Ÿ” 15    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 1

So, highlights have to be faked to show consistent positioning between left and right eye, and not break the illusion.

05.06.2025 12:51 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

That said, often in animation the eyes are so big that their placement is faked. I mean they are pointing outwards, and the position of the iris between the eyelids makes it look the eyes are parallel, instead of divergent. This gives problems because the highlights would be at different places.

05.06.2025 12:51 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Back when I was in lighting, eyes were heavily treated in comp, to get the look right.
With modern lights (I mean PBR) itโ€™s probably not needed to fake the highlight. One can use a small emitter, not bright enough to affect much the character illumination, but enough to produce a highlight.

05.06.2025 12:51 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I wrote an allocator which sub-allocates from large pages, the โ€œproblemโ€ is that the allocated dedicated blocks for large allocation that exceeds the page size and it returns all those fields no matter what.
This is a straight port. I need to implement something better.

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

I really, really, really dislike year-based software version numbers.

30.05.2025 09:18 โ€” ๐Ÿ‘ 6    ๐Ÿ” 1    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 0

Same, it doesnโ€™t seem to affect anything negatively, so I just leave the transitions there for future reference.

27.05.2025 01:28 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Thanks. The file import section of the programs is the the most neglectedโ€ฆ so I canโ€™t easily load much. The modeling system is also too primordial to make anything, one day Iโ€™ll need to make a call on what to do about that.

26.05.2025 09:49 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Interesting. The takeaway I got was to not ignore transitions, even though most of them may be no-op in my case.

26.05.2025 01:17 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I sort of do this with everything that is geometry data and xforms, with my own allocator that predates the porting. But I'll have to find a better way to do that, because I allow the allocator to service blocks larger than its own pages, allocating dedicated buffers...

26.05.2025 00:39 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

while in beefy desktop GPUs it is more of a sanity check, to make sure you understand when you are reading or writing to frame buffers. But if I am mistaken if likely that I don't understand well enough.

26.05.2025 00:35 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

The Vk-CUDA interop was the most nebulous and lest documented... it's the only part I had to debug memory leaks. I'd say the second bit was image layout transitions, which still feel weird. As far as I understand, it is a much more important thing in low-power devices, where packing may change.

26.05.2025 00:35 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Thank you. Just to clarify, the raster renderer is the gray shaded version I toggle to in the renderer, the colored, lit images is the path tracer.

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

I initialize 1.3, but by no mean I am using all of it. I use some minimal dynamic rendering features, like viewport, scissor, primitive topology, depth test enable, and line width. On two of the pipelines, I have a push constant... but that's it.

26.05.2025 00:29 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

The Vulkan porting is complete ๐ŸŽ‰ The last missing piece was the primordial raster renderer, which I am not sure why I keep around :)
All in all, it wasn't nearly as hard as I thought it would be.

25.05.2025 07:28 โ€” ๐Ÿ‘ 66    ๐Ÿ” 1    ๐Ÿ’ฌ 4    ๐Ÿ“Œ 0

I would need lines, thick lines, points (a few px wide), and triangles. Some degree transparency blending, but not strictly in depth order. Basically, all stuff you expect geometry to be augmented with when modeling.
I believe Iโ€™ll get there, it wouldnโ€™t have to be crazy efficient.

24.05.2025 07:20 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I donโ€™t know that. But sharing a texture is the main way you draw an image produced somehow in CUDA.

23.05.2025 08:57 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

@maxliani is following 19 prominent accounts