tunabrain / tungsten

High performance physically based renderer in C++11

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Why do output buffers contain noises?

IwakuraRein opened this issue · comments

commented

I rendered a 1spp image and a 64spp image from the scene Country Kitchen and notice that 1spp's output buffers (eg. albedo, normal, and depth) contain some noises. 64spp output buffers are much better, still slightly noisy though.

This confused me a lot, for generating output buffers only requires coordinate transformations in my opinion. Also, other renderers like Baikai seem not to have this problem. Is there any solution I can fix the 1spp output buffers?

albedo_1spp

albedo_64spp

The noise is because tungsten stores the indirect albedo (and other features) for perfectly specular surfaces. This is so e.g. you see the normals of the scene reflected in a perfect mirror rather than of the mirror itself. This makes denoising a lot more effective.

However, if a material is a mixture of perfectly specular and non-specular materials, like the cup in the kitchen (which has a specular coating on top of a lambertian base), the end result will be a mixture of reflected features and features of the geometry itself. We found this to help with denoising, but it also means you will have to integrate for more than 1spp. In general this is not a huge issue, as the image itself will be much noisier than the features and denoising is still effective, but it does lead to these unexpected results.