Vlado has been hard at work, for the past month or so, on two new features which allow the user to not have to worry about render settings, while insuring the best possible rendertime for a given quality.
The first is a new method to evaluate when a pixel sample is good enough, or needs more sampling.
Historically, that was the job of the noise threshold, but that approach had pitfalls:
First, noise levels could vary wildly between very similar scenes and lighting conditions.
Second, given noise threshold was expressed as an absolute floating point value, darker areas tended to be sampled less (looking noisy as a consequence) while very bright areas would get oversampled too much (leading to increased rendertimes for no visual difference.)
Thirdly, often raising MSR didn't actually lower the number of AA rays cast, simply leading to a rendertime "explosion" when MSR was coupled with high AA.
The new method is based on Pixel Variance or, in other words, as a percentage rather than an absolute value (I will be happy to explain the concept of Variance in more detail, for those which have a statistical need. Fair warning: it's not for everyone, but then, you needn't worry about understanding it, for it to work.).
Theory mandates that in this case the sampler should spend on average the same amount of time across the screen, rather than concentrating in some areas and foregoing others.
As a result, this should lead to a consistent noise level across the image, and generally to a more pleasant noise distribution for the same image quality (expressed as resulting noise in the rendered image.).
Further to this, doubling MSR should lead to half the AA rays cast, potentially rendering a cleaner image in less time than a noisy one (it's not magic, but i'll spare you the math, unless you'll beg for it.).
The second feature is a Prepass, which analyses the scene before the actual tracing starts and then optimises the amount of secondary rays versus the amount of camera (or AA, or Primary) rays.
The prepass takes into account three properties of the scene:
Normals variance, Albedo Variance and Depth (Z) Variance.
Where variance is high, the prepass is darker, while where variance is low, the prepass is close to, or white.
The average of the prepass channels is then multiplied by the MSR set by the user (currently, at least), with the result that areas which will need more AA rays (hair, fur, high-frequency textures, grazing angle-reflections, foliage, and so on) will not be burdened by the secondary rays tracing set by MSR, while the simpler areas (broad, even walls, for example) will be cleaned without as many AA rays (remember, those are a few TIMES slower than secondary rays, so they have to be used as sparingly as one possibly can.), because the secondary rays set by the user will not be reduced, and the successive AA rays will not find any need to concentrate on those parts.
While we're still at work (well, Vlado is with the code, I test, test, test.) trying to find the ideal balance for both features, we think we have enough in hand to show a sneak peek, with some hard numbers to back up the claims (rather than just relying on visual appearance, which may vary between people).
So, without further ado, here are a few samples (continuing on the next post).
In order: the old sampler, the new sampler, and the new sampler plus prepass.
The aim was to have the same-ish rendertime, and then to check the noise levels in the image (images have an alpha channel, do look at that as well!)

For this particular scene, in other words, just a switch of sampler produces an image which renders roughly in the same time, but has 30% less noise.
Adding the prepass further cuts down rendertime by a full minute and a half, while preserving much the same noise level.
EDIT: As Both I and Vlado mentioned further down the thread, the new sampler isn't NECESSARILY faster than the old, in fact it may well be slower for the same settings.
What's great about it is the consistency in noise levels across the image and across very different lighting situations, something the old sampler couldn't achieve very well.
Tomorrow i'll post some more samples which are archviz oriented, where the prepass will have even more of an impact.
For now, enjoy!
The first is a new method to evaluate when a pixel sample is good enough, or needs more sampling.
Historically, that was the job of the noise threshold, but that approach had pitfalls:
First, noise levels could vary wildly between very similar scenes and lighting conditions.
Second, given noise threshold was expressed as an absolute floating point value, darker areas tended to be sampled less (looking noisy as a consequence) while very bright areas would get oversampled too much (leading to increased rendertimes for no visual difference.)
Thirdly, often raising MSR didn't actually lower the number of AA rays cast, simply leading to a rendertime "explosion" when MSR was coupled with high AA.
The new method is based on Pixel Variance or, in other words, as a percentage rather than an absolute value (I will be happy to explain the concept of Variance in more detail, for those which have a statistical need. Fair warning: it's not for everyone, but then, you needn't worry about understanding it, for it to work.).
Theory mandates that in this case the sampler should spend on average the same amount of time across the screen, rather than concentrating in some areas and foregoing others.
As a result, this should lead to a consistent noise level across the image, and generally to a more pleasant noise distribution for the same image quality (expressed as resulting noise in the rendered image.).
Further to this, doubling MSR should lead to half the AA rays cast, potentially rendering a cleaner image in less time than a noisy one (it's not magic, but i'll spare you the math, unless you'll beg for it.).
The second feature is a Prepass, which analyses the scene before the actual tracing starts and then optimises the amount of secondary rays versus the amount of camera (or AA, or Primary) rays.
The prepass takes into account three properties of the scene:
Normals variance, Albedo Variance and Depth (Z) Variance.
Where variance is high, the prepass is darker, while where variance is low, the prepass is close to, or white.
The average of the prepass channels is then multiplied by the MSR set by the user (currently, at least), with the result that areas which will need more AA rays (hair, fur, high-frequency textures, grazing angle-reflections, foliage, and so on) will not be burdened by the secondary rays tracing set by MSR, while the simpler areas (broad, even walls, for example) will be cleaned without as many AA rays (remember, those are a few TIMES slower than secondary rays, so they have to be used as sparingly as one possibly can.), because the secondary rays set by the user will not be reduced, and the successive AA rays will not find any need to concentrate on those parts.
While we're still at work (well, Vlado is with the code, I test, test, test.) trying to find the ideal balance for both features, we think we have enough in hand to show a sneak peek, with some hard numbers to back up the claims (rather than just relying on visual appearance, which may vary between people).
So, without further ado, here are a few samples (continuing on the next post).
In order: the old sampler, the new sampler, and the new sampler plus prepass.
The aim was to have the same-ish rendertime, and then to check the noise levels in the image (images have an alpha channel, do look at that as well!)
For this particular scene, in other words, just a switch of sampler produces an image which renders roughly in the same time, but has 30% less noise.
Adding the prepass further cuts down rendertime by a full minute and a half, while preserving much the same noise level.
EDIT: As Both I and Vlado mentioned further down the thread, the new sampler isn't NECESSARILY faster than the old, in fact it may well be slower for the same settings.
What's great about it is the consistency in noise levels across the image and across very different lighting situations, something the old sampler couldn't achieve very well.
Tomorrow i'll post some more samples which are archviz oriented, where the prepass will have even more of an impact.
For now, enjoy!
Comment