Тёмный

Beyond White Noise for Real-Time Rendering 

SEED – Electronic Arts
Подписаться 1,9 тыс.
Просмотров 14 тыс.
50% 1

Going beyond white noise for temporal and spatial denoising in real-time rendering can produce better results with no increase in rendering time.
In this presentation, SEED’s Alan Wolfe discusses the use of different types of noise for random number generation, focusing on applications in real time rendering, and includes research just published at I3D 2024.
In randomized rendering algorithms, white noise is what the supporting math uses and does indeed work. However, changing the source of random numbers can produce much higher-quality results without increasing rendering time.
So without even switching the rendering algorithm, the use of better noise can significantly improve the perceptual quality or measured error of images in ray trace rendering, and beyond.
Alan’s presentation covers:
- Randomness and fairness in number generation
- Stochastic rendering
- Noise textures and error patterns
Download the presentation deck here: www.ea.com/seed/news/beyond-w...
----------
SEED is a pioneering group within Electronic Arts, combining creativity with applied research. We explore, build, and help determine the future of interactive entertainment.
Learn more about SEED at seed.ea.com
Find us on:
Twitter: / seed
LinkedIn: / seed-ea

Наука

Опубликовано:

 

13 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 49   
@fatlimey
@fatlimey 17 дней назад
Improvements for free? Why that's one of my favorite costs.
@Atrix256
@Atrix256 17 дней назад
We have some stuff cooking to try and tackle the cache coherency issues too - that other shoe dropping for super perf wise folks such as yourself Robin :)
@ThatTrueCJ201
@ThatTrueCJ201 11 дней назад
Blue noise rendering kinda looks like analogue photography. So cool!
@mslijkhuis
@mslijkhuis 15 дней назад
What a great mix of theory and practice. I hadn't seen the golden ratio used like this before. It's so simple yet surprisingly powerful. Thanks so much!
@blacklistnr1
@blacklistnr1 11 дней назад
Nice talk! I liked the visuals, I think that's the most colorful Rendering Equation I've ever seen!
@kelownatechkid
@kelownatechkid 5 дней назад
Excellent presentation!
@shiftoptiondash
@shiftoptiondash 17 дней назад
Loved the loot table analogy.
@Visigoth_
@Visigoth_ 6 дней назад
This is/ was a great video; worth my time.
@cgcode
@cgcode 8 дней назад
Wolfe, Thank you for the great video. I've learned a lot from your blog and I'm glad to be able to express my gratitude on this channel.
@HankW
@HankW 7 дней назад
Great presentation!
@pekka8605
@pekka8605 10 дней назад
This is one of those videos I wish I could give more than just one thumbs up. Very well presented.
@nickludlam
@nickludlam 15 дней назад
Great presentation. Gamer maths is such a good angle to take
@Shack263
@Shack263 12 дней назад
I would love to learn more about possible downsides, such as the cache coherency problems you mentioned and how they can be mitigated or designed around.
@Atrix256
@Atrix256 12 дней назад
The cache unfriendliness problem is that E.g. when you use this to choose directions to shoot shadow rays in for ambient occlusion, each pixel in small regions of pixels are shooting rays in very different directions, which mean they hit different parts of the BVH. Ray tracing is accelerated by sorting similar rays (direction and otherwise) and having them run together so they access the same things which can reside in the cache. Similar for if you use this for material blending, small regions of pixels will want to access all possible materials, which means their execution diverges and the textures they read will all be different. If you could group similar pixels somehow and run them together, that would help the cache issues. Increased predictability of random values, and increased storage needs are 2 other downsides. Those are the three I can think of. There may be more but that's all that's coming to mind right now.
@agsystems8220
@agsystems8220 12 дней назад
@@Atrix256 It is worth pointing out that this isn't actually a bug, or a problem, it is intended behaviour and inherent to the question being asked. If you use white noise and two adjacent pixels fire rays in the same direction it is 'better' for the cache, but you are duplicating work rather than doing something useful. If you only have a few samples to play with you want them doing different things and this is inherently cache unfriendly. The fact that white noise is friendlier to the cache is a bug in it because it that is fixed by blue noise!
@Atrix256
@Atrix256 12 дней назад
It's a good point, and in fact, white noise is also bad for the cache. Like you say, it isn't a bug, but it is something that can be improved in the future :) Interestingly, red noise (aka low frequency noise aka brown noise, named after robert brown) is cache friendly, but has different properties. Nearby values are similar / positively correlated.
@agsystems8220
@agsystems8220 10 дней назад
It cannot be improved at the noise end, because it is inherent. In the limit rays from every source will hit every possible target, and access every material. It is all to all. We want to access as many diverse sources of information as possible. When we limit sampling to improve performance we still want as much information as possible, We still want to hit memory with the same distribution, just fewer samples. Bundling rays can be done no matter the source of the rays, and while blue noise is likely to use more bundles for the same number of samples, this is a reflection of it doing more with the same number of samples. One thing that certainly can be done is to have low res versions of all textures that are in use, and limit the operations that materials can do to make them play nice with pre filtered textures. High frequency information on materials is almost always lost after one bounce (reflections/refractions are the exception), so we can be much friendlier on the cache by not putting high frequency information in it. Reflections and refraction rays are going to be pretty cache friendly anyway, so we don't really need to worry about them. This actually addresses another issue that even blue noise doesn't cover. Deserves it's own post though.
@agsystems8220
@agsystems8220 10 дней назад
Of note is that even with screen space blue noise, once the rays have bounced once and been sorted they will have a white spectrum, even if we try to do bounces with a blue noise seed. Distant rays can hit close to each other. If a wall has a small bright spot for example this may get over or under represented in the final image, irrespective of the colour of the seed noise. If there is periodic high frequency information in where the rays impact then impacting in distant locations is effectively an independent random sampling, and your spectrum is back to white. For example, if you are only firing 4 rays at a brick wall, there is a significant chance they all hit the grout. The source of the rays would think the wall is white! Importantly those 4 rays did not have to hit near each other, so blue noise is of limited help. Those 4 rays could have come from 4 nearby screen space pixels, because even with blue noise the specific material of the wall you hit is still independently random. You can get low frequency noise passed through to the image. By prefiltering out the high frequency information even 1 ray would be a reliable sampling. Even low frequency signals on materials can increase noise on later bounces, so the more we can pre-filter information for deeper diffuse bounces the better results we will get. If you are only firing 4 rays at a brick wall, there is a significant chance they all hit the grout. The source of the rays would think the wall is white! Importantly those 4 rays did not have to hit near each other, so blue noise is of limited help. Those 4 rays could have come from 4 nearby screen space pixels, because even with blue noise the specific material of the wall you hit is still independently random. You can get low frequency noise passed through to the image. By prefiltering out the high frequency information even 1 ray would be a reliable sampling. Rather than thinking of each ray as a point sample, if you think about it as a gaussian sampling of the material then it becomes clear that pre-blurring bounce textures is physically meaningful, and allows us to get much better information per sample. This isn't really a down side, but I thought you might appreciate some information on the limitations, and how to mitigate those. It is extremely helpful to think of things in terms of frequency, and how manipulating frequencies can help us. At screen space, low frequency noise is bad because we cannot differentiate it from genuine signal. Deeper in the chain our sampling rates get very low, and Nyquist shows up, so we want filter out all the information above a certain frequency to avoid it adding noise to our image. Ideally our sampling should be blue to play nicer with Nyquist, but this is generally infeasible.
@rickybloss8537
@rickybloss8537 12 дней назад
Very interesting video. Well done.
@otariebambelle
@otariebambelle 13 дней назад
this is such a great talk, thanks
@simonstrandgaard5503
@simonstrandgaard5503 12 дней назад
Awesome presentation. Beautiful visuals.
@stephaneduhamel7706
@stephaneduhamel7706 6 дней назад
At 4:00 the answer would realitically be somewhere in between 50% and 100%. Much closer to 50% than 100%, but the probablility of the coin being unfair is to be considered. If we estimate the prior probablility of the coin being unfair (landing 75% of the time on one side) to be 1% for each side, after 3 consecutive heads the probability of the coin being biased towards "heads" raises to 3.3% and the probability of it being biased towards "tails" drops to 0.1%, making the overall probability of getting "heads" next time to be slightly above 50.8%.
@s8r4
@s8r4 10 дней назад
I would argue that from both the implementation and gameplay perspective, keeping loot tables random is the best choice. While you do "smooth out" the gameplay experience, you also lose out on more personalized experiences, for example a player having a lucky day and getting many rare drops in a row.
@Atrix256
@Atrix256 10 дней назад
Yeah, other people have said that same in response to this stuff, that the unpredictability is a feature. I'd say it's a design choice, and it's nice to be able to do either.
@mito._
@mito._ 7 дней назад
I think the idea of a "lucky day" is purely sentimental and adds no real value to the average user experience. A lucky day is confirmation bias, amongst hundreds or thousands of unlucky days.
@r4dius
@r4dius 12 дней назад
From electronic arts, the randomness is based on the money spent on DLCs
@pacukluka
@pacukluka 17 дней назад
Awesome!
@thipoktham5164
@thipoktham5164 5 дней назад
I really learn a lot from this video, thank for the quality content! I didn't know that you can optimize the noise pattern based on different filter. I was wondering from a computer vision perspective, we can use back-propagation to learn good convolution filter. But in your case, given a set of image samples, what if you optimize it stage? In other words, learn best filter, and then learn best noise, will it improved?
@Atrix256
@Atrix256 5 дней назад
Yeah. There is a lot of work on denoising. There is a little work on the noise side. If they were both optimized together, I do think better results are possible. Someone needs to get on it :)
@Morimea
@Morimea 12 дней назад
Thanks!
@qwjd8s693pt4kaun
@qwjd8s693pt4kaun 7 дней назад
I wonder if a natural-looking prior or a collected statistics on the level of neighboring pixel's spatial correlation can be used to construct a better noise (instead of using assumption of small delta x to small delta y).
@Atrix256
@Atrix256 4 дня назад
An auto correlation of a blue noise texture shows a ripple of negative then positive correlation that almost looks like sinc. But, the radius is very small and becomes uncorrelated after a radius of 5 or so. I do think what you are saying is a way to approach it, yeah.
@ethanalloway5946
@ethanalloway5946 12 дней назад
Great presentation! Do you think that blue noise is relatively easy to implement in softwares retrospectively? I am sure that adding blue noise systems moving forward will be more popular.
@Atrix256
@Atrix256 12 дней назад
I think the challenge with adding blue noise or low discrepancy sequences to old software is that old software often doesn't have very many people working on it, and the people that do work on it probably don't know everything about the software. There are lots of dark corners where the person who made it doesn't work there anymore and nobody wants to touch it. So yeah, i think it is possible to add it to older software, but the usual challenges of changing older software come up. I agree with you that newer software doesn't have the same excuse, and all we can do is try to help people understand this stuff to make better implementations before the new software becomes old software and stops changing :)
@marczbinden2372
@marczbinden2372 4 дня назад
I would argue that you can't have a random function that is completely fair, because it would need to be deterministic and random at the same time. that's what I get from this video.
@Atrix256
@Atrix256 4 дня назад
For sure! Random is only fair "at the limit". Like, at infinity. Before then... who knows.
@sikliztailbunch
@sikliztailbunch 12 дней назад
3:32 Isn´t it basicly saying that no previous outcomes have an influence on the next result. The odds are ALWAYS 50/50? I had 20 times black in a row in a roulette game once. Lost me a good chunk of money that evening 😀
@Atrix256
@Atrix256 12 дней назад
That is super cursed! 😂
@Bassalicious
@Bassalicious 9 дней назад
"RNG" in gamer talk doesn't mean "random number generator", just inherent randomness or your luck with it. It's not that gamers think the generator is bad when they have bad luck, they just use the acronym as an expression for something else. "Bad luck with the RNG" got shortened to "Bad RNG" but meaning the same thing.
@mito._
@mito._ 7 дней назад
There is no luck. It is random noise. A predetermined probability. A more fair assertion would be that some people are luckier than others. The more realistic take is that most people will never be lucky.
@Bassalicious
@Bassalicious 7 дней назад
@@mito._ Luck is a favourable outcome of a random (feeling) situation, the less likely the more lucky. It's just how language works.
@mito._
@mito._ 7 дней назад
@@Bassalicious A favorable outcome is just a specific configuration of a system. The perception of "luck" requires perception or, as you said, a "feeling" of favorableness - which is just bias towards a specific predetermined configuration.
@YUNGeggFoo
@YUNGeggFoo День назад
thank you youtube recommendation algortihm. my brain is smarter now
@CatFish107
@CatFish107 10 дней назад
Holy smokes, EA can't afford any audio production? Are you calling in from inside a sea can?
@Atrix256
@Atrix256 10 дней назад
Ha! No, it's just me recording from my house without a very nice audio setup.
@blacklistnr1
@blacklistnr1 11 дней назад
3:40 The thing with Gambler's Fallacy is that, statistically, it WILL WORK for a PART of the people. If you look at e.g. 1000 people each doing 4 coin flips you expect "There's no way I get 4 Heads" to hold for 937 of them (=1000*(1-0.5^4)) and about 60 of those will get the HHHT falacy scenario P.S. You can run the trials with a 1-liner in your browser's console: [...Array(1000)].map(person => [...Array(4)].map(isHead => Math.random() >= 0.5).every(isHead => isHead == true)).filter(allHeads => allHeads == false).length
Далее
Coverage Bitmasks for Efficient Rendering Algorithms
44:40
Why Photorealistic And Stylized Graphics Are The Same
35:00
Devlog - Surfel GI, DX11 removal and improvements
24:17
And this year's Turing Award goes to...
15:44
Просмотров 92 тыс.
Why Does Diffusion Work Better than Auto-Regression?
20:18
The REAL Reason Unreal Engine VFX Looks FAKE
6:58
Просмотров 173 тыс.
When Optimisations Work, But for the Wrong Reasons
22:19
Mapping GPT revealed something strange...
1:09:14
Просмотров 127 тыс.
SIGGRAPH 2021:  Global Illumination Based on Surfels
47:39
Power up all cell phones.
0:17
Просмотров 49 млн
Не обзор DJI Osmo Pocket 3 Creator Combo
1:00
Просмотров 569 тыс.