Tomasz Stachowiak

@h3r2tic@mastodon.gamedev.place
2.1K Followers
202 Following
75 Posts

Making Tiny Glade 🏰🌿

Rustacean 🦀 Torturer of GPUs 🔥

One half of https://pouncelight.games

Ex Embark, SEED, Frostbite, Creative Assembly

🙈http://h3.gd
hehim
Ray tracing, ray-marching, and GPU driven rendering all in one game? Surely this must be one of the AAA blockbuster games with a 25-people strong rendering team? No: It's Tiny Glade, and Tomasz will cover the rendering tech behind this amazing looking game in his talk "Rendering tiny glades with entirely too much ray marching". If you want to learn how to get pretty pixels on your screen, fast, this is just the talk for you!

It's not that often that you get to announce the future of GPU programming, but here we go -- I'll be talking about GPU work graphs in the "Advanced Graphics Summit" at GDC 2024: https://schedule.gdconf.com/session/advanced-graphics-summit-gpu-work-graphs-welcome-to-the-future-of-gpu-programming/903038

I'll be around at GDC until Thursday, if you want to say hello, catch up, question me about work graphs, or just take a walk, get in touch!

Why Attend | GDC | Game Developers Conference

GDC is the game industry's premier professional event, championing game developers and the advancement of their craft.

Game Developers Conference (GDC)
New Blog Post (post #256)
"Making Blue Noise Point Sets With Sliced Optimal Transport"
includes simple standalone C++.
https://blog.demofox.org/2023/12/24/making-blue-noise-point-sets-with-sliced-optimal-transport/
Making Blue Noise Point Sets With Sliced Optimal Transport

This post explains how to use sliced optimal transport to make blue noise point sets. The plain, well commented C++ code that goes along with this post, which made the point sets and diagrams, is a…

The blog at the bottom of the sea

🐌 This Month in #RustLang #GameDev for March 2023 is quite late but it still brings a lot of updates - 23 games, 4 engines, 9 learning resources, 11 tools, and 9 libraries - from various corners of our ecosystem that you may have missed:

https://gamedev.rs/news/044

This Month in Rust GameDev #44 - March 2023

Welcome to the 44th issue of the Rust GameDev Workgroup's monthly newsletter. Rust is a systems lang…

Rust GameDev WG

I wrote a little HLSL ray marcher while experimenting with contact shadows and lighting "reference mode" for Tiny Glade.

Here's the code if anyone's interested: https://gist.github.com/h3r2tic/9c8356bdaefbe80b1a22ae0aaee192db

Depth buffer raymarching for contact shadows, SSGI, SSR, etc.

Depth buffer raymarching for contact shadows, SSGI, SSR, etc. - raymarch.hlsl

Gist
lena | Morten Rieger Hannemose

Ethically sourced Lena picture

Finally, the most striking effect is at dusk. The bricks and rocks recover their hues, and the sickly orange overcast is gone. The sheep looks much healthier too.

I'm sure some will say that the orange and cyan looked better, and there's indeed nothing wrong with having such stylized looks 😄 It was all accidental though; those colors were emerging from a faulty image formation process.

We will need to revisit the lighting and grading in order to make it look a bit more exciting, but this time we have the necessary control and (more) sanity in the color pipe.

The difference at night is subtle, and mostly visible in the sky, which once again loses its inexplicable cyan shift.
×
New Blog Post (post #256)
"Making Blue Noise Point Sets With Sliced Optimal Transport"
includes simple standalone C++.
https://blog.demofox.org/2023/12/24/making-blue-noise-point-sets-with-sliced-optimal-transport/
Also supports multiclass blue noise point sets, which are blue individually, as well as when combined.
This is an investigation into and implementation of the 2020 paper "Sliced Optimal Transport Sampling" by Paulin et. al, but contains a couple things not in the paper as well.
https://dl.acm.org/doi/10.1145/3386569.3392395
Sliced optimal transport sampling | ACM Transactions on Graphics

In this paper, we introduce a numerical technique to generate sample distributions in arbitrary dimension for improved accuracy of Monte Carlo integration. We point out that optimal transport offers theoretical bounds on Monte Carlo integration error, ...

ACM Transactions on Graphics
I saw the like @webanck , it's a real cool paper!
Sliced optimal transport is a pretty magical thing and I'm surprised it works. Random 1d projections resulting in something like that flower is a bit mind blowing.
Progressive image stippling and greedy blue noise importance sampling

Me being “progressively stippled.” :) Introduction I recently read the “Gaussian Blue Noise” paper by Ahmed et al. and was very impressed by the quality of their results and the rigor o…

Bart Wronski
@BartWronski I dont think I did, I'll have a look.
@BartWronski im reading this, and starting with your variant of void and cluster. I can't remember my source, but the 3 steps are for quality of thresholded point sets AFAIK.
The 1st making blue noise seed points is for the lowest threshold values. The 2nd step going until 50% is because the algorithm is higher quality for sparse than dense. and 3rd going in reverse is to keep it running in sparse mode as it goes dense.
::continues reading::
@BartWronski sharpening the image before doing the stippling works well, that is a neat idea!!
@BartWronski and neat thoughts for importance sampling :)
@demofox I haven't seen it before - not sure if it has any applications and would anyone needs such a "progressive" sequence - but why not, looks cool :D
@BartWronski yeah for sure! If you could figure out how to make it progressive from any point in the sequence it seems like maybe it vould be useful for sparse foveated rendering. When the camera is still, or temporal reproduction works (?), it's progressive. But when there is no history, it's the start of a good sequence?
@demofox I don't know how progressive importance sampling from any point in the sequence would look like. If you can get important point at any time - isn't this just plan non-importance sampling? Not sure.
@BartWronski I'm not sure either for point sets, but for textures, STBN does that. ::shrug::
The next thing I'm learning is a paper that uses optimal transport and can make either textures or point sets. Maybe that will have a way to make point sets that are like that 🤔