mastodon.gamedev.place is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mastodon server focused on game development and related topics.

Server stats:

5.3K
active users

For folks that know me as "the blue noise guy", I've put together a 50 minute video that talks about many of the things I've learned in my ~decade long dive into noise and related topics - up to and including our latest paper published days ago at I3D.
I hope you enjoy it!
youtube.com/watch?v=tethAU66xa

@demofox Just getting to this and continued fractions just blew my mind. I had no idea you could analyze irrationals like this and that the golden ratio is the "most irrational" b/c of it's pessimal approximability is super neat!

@sprig Yeah isn't that neat?
I thought sqrt(2) was globally 2nd place to golden ratio because it is an infinite string of 2's.
A couple days ago i saw that sqrt(3) is an infinite string of "12121212..." which i think makes it be better than sqrt(2).
Someone should make some kind of irrational number table sorted from most to least so we have a place to go and grab em when we need em :)

@demofox Oh that's interesting! Makes me wonder if there's "1111211112" hiding out there or in the extreme case "1111...(arbitrary?)...1112" ? Like is there some theoretical reason that the run of 1s couldn't be arbitrarily long?

@sprig something to also consider here... lets say you wanted to do 2 shuffles and you wanted to make sure they didn't interact with each other (same irrational would make them be the same shuffle but offset), you could pick a 2nd good irrational number, but that irrational number may be somewhat similar to the first irrational number. So it's like you want it to be irrational with respect to integers, but also golden ratio. "Co-irrational" numbers need to come into math's existance :)

@demofox Oh neat. Is this conceptually similar to "multi-class" blue noise you alluded to with the chicken's eye? Two layers, different within, different across. (I'm only at 23:52 in your video; taking lots of notes haha)

@sprig and haha... welcome to the blue noise / golden ratio club.

@demofox Great survey talk btw!
Here's what I think I've taken away (a lot of these concepts are first time for me):

LDS means single index with unknown upper limit produces even distribution
LDS: great for when you want even distribution w/ unknown length
Golden ratio: pretty much ideal LDS for 1D, but for higher dimensions maybe see R2
BN: better than LDS if you want the properties or feel of randomness

@demofox

BN: can help you trade quality for speed by sampling w/ small probability tables (beware the cache)
BN: a lot easier to denoise than WN, in fact your visual system might naturally be denoising
BN: ideal for small sample counts were you don't have the luxury of convergence
many small filters add up to gaussian; gaussian removes high frequencies
WN: has clumps and voids, might be what you want for e.g. perlin noise

@demofox

Fast noise: u can design noise around the filter for better BN-like properties in the output domain(?)

@sprig yeah, FAST is optimized so that if you know you are going to render, then apply a specific spatial filter, then a specific temporal filter, it minimizes the POST FILTERING error.
If you optimize noise for a gaussian filter spatially, that gives you blue noise, which is also how you optimize for perceptual error.
But you can optimize for box spatially which is what we usually use!
Check out "D" on this page for something interesting/unsolved about perceptual error.
github.com/electronicarts/fast

GitHubfastnoise/FastNoiseDesign.md at main · electronicarts/fastnoiseFilter-adapted Spatiotemporal Sampling for Real-Time Rendering - electronicarts/fastnoise

@sprig and FAST lets you have whatever per pixel value type you want. scalars, vectors, importance sampled vectors, etc. It's best to use noise textures with what you want in them, vs take scalar values and turn it into a vector, because that warping hurts the frequencies.

@demofox Ah thank you! These are really helpful clarifications. Gives me a lot to chew on.

This is a very interesting space. The approach of reducing samples to increase speed but choosing your samples carefully to minimize perceptual loss seems very general.

Now I need to look at everywhere where I'm doing box filtering and consider if I can make better use of my resources..

@sprig yeah so true! and box filtering is the same as averaging so if you ever find yourself averaging, or shuffling, or using random numbers etc etc, you have something to try. It's crazy how wide open this is. Like, a person could just start writing all sorts of computer science research papers and improving things IMO :P

@demofox If only there were a "blue noise" guy to fill that niche :P

@demofox Thinking through some non-rendering use cases in my engine, maybe:

enemy aiming: making hit vs miss more fair w/ LDS

evenly spaced colors: Like Martin's approach, but use a more perceptual color space, like OkLab, and use LDS with A & B and with fixed-ish L

network queue: When there's more objects to be synced over the network than capacity, assign priority weights and than using an LDS to reduce starvation of lower priority items instead of just top-priority first.

Daryl Zuniga

@demofox Ha because of course you would have a blog post on this topic. Neat! I'm definitely saving that link. :)