Blender Git Commits

Blender Git "temp-cycles-denoising" branch commits.

Page: 13 / 17

August 9, 2016, 01:50 (GMT)
Cycles: Fix GGX shader after recent changes to numerical stability
August 9, 2016, 01:50 (GMT)
Cycles: Remove a few useless temporary files
August 9, 2016, 01:50 (GMT)
Cycles: Fix denoising feature matrix norm calculation
August 9, 2016, 01:50 (GMT)
Cycles: Fix building after the debug_fpe commit
August 8, 2016, 19:10 (GMT)
Cycles: Add denoising option to the Cycles Standalone executable

To use it, call it with "./cycles --denoise --samples <sample number> --output <denoised_file.png> <rendered_image.exr>".
You need to enter the sample number that the image was rendered with - others will work as well, but might produce artifacts.
The input image can be generated by rendering with "Keep denoising data" enabled (denoising itself isn't needed) and saving the result as Multilayer EXR.

For now, this is mainly useful for quicker testing without re-rendering and profiling, not so much for regular users.
However, the next step will be to implement inter-frame denoising for animations, which will provide a significant quality boost.
August 8, 2016, 19:09 (GMT)
Cycles Standalone: Add option to set the tile size
August 6, 2016, 03:22 (GMT)
Cycles: Redesign the buffer accesses of the denoising kernel.

At first, the denoising kernel just directly accessed the RenderBuffers.
However, that introduced some addressing complexity since the filter window might cover multiple tiles, each with a separate buffer.
Apart from the addressing overhead, this also made it pretty much impossible to SIMDify the CPU code.

When feature prefiltering was added, it changed the buffer addressing.
First, it copied the various parts of different buffers into one continuous array. Then, it operated directly on that array.
With these changes, the only thing the regular buffer addressing was still needed for was the color image.

Now, this commit also copies the color image into the prefiltered buffer. Therefore, it's not really just a prefiltered buffer anymore, but actually contains all the data needed to denoise.
This allows to redesign and clean up the kernel-device-interface, which is also done in this commit.

Advantages are:
- Lower addressing overhead - every pixel is only addressed once to copy the data to the denoising buffer, and once to store the final result - instead of hundreds of accesses per pixel when looping over the filter window.
- Lower code complexity - one array with standard scanline addressing makes the code a lot cleaner.
- For GPUs: More memory access coherence since the passes are stored in SoA layout instead of AoS (like the regular RenderBuffers are).
- For CPUs: Possibility to use SIMD instructions in the future due to the SoA layout.
The disadvantage is slightly higher memory usage - 22 floats per pixel instead of 16.

This commit doesn't include the CUDA changes yet.
August 6, 2016, 03:22 (GMT)
Cycles: Fix potential divide by zero in the area light sampling code
August 6, 2016, 03:22 (GMT)
Cycles: Adapt CUDA device to the new denoise buffer architecture
August 6, 2016, 03:22 (GMT)
Cycles: Fix wrong array indexing in the feature kernel
August 6, 2016, 03:22 (GMT)
Cycles: Implement the Filter Weight functionality

For now, the slider defines the weight given to feature pass variances (which now is 2**filter_strength instead of 1).
August 6, 2016, 03:19 (GMT)
Cycles: Replace NaNs in the feature passes with zero

As soon as any feature pass sample is NaN, every pixel which contains that sample in its filter window will be black in the filtered result.
Ideally no NaNs should be generated in the first place, but there are quite a few cases where they are generated in Cycles and now become visible.
So, as a temporary fix, NaNs are now replaced with zero when storing the passes. Ideally these NaNs should be fixed for good, of course.
August 6, 2016, 03:17 (GMT)
Cycles: Prefilter all feature passes

This commit adds prefiltering to all feature passes, instead of just the shadow pass.
Feature passes are supposed to be noise-free, but effects like Depth of Field, Motion Blur or slightly glossy shaders could still produce noticable amounts of noise.
July 27, 2016, 20:36 (GMT)
Cycles: Fix a memory leak when cancelling a denoised render
July 27, 2016, 19:43 (GMT)
Cycles: Fix another cause for NaN normals and a potential divide-by-zero in the background texture
July 27, 2016, 19:43 (GMT)
Cycles: Add Debug build option that enables floating point exceptions

By enabling the new WITH_CYCLES_DEBUG_FPE, floating point exceptions are enabled in the CPU kernels.
That way, the debugger stops as soon as an invalid calculation is performed, which makes it a lot easier to track these issues.

Note that the option may cause problems in combination with the --debug-fpe runtime option.
July 27, 2016, 18:18 (GMT)
Cycles: Fix a rare divide-by-zero in a fallback sampling code

The issue only appeared when the random number happens to be exactly one
while a fallback sampling code for shallow paths was being executed.
July 26, 2016, 01:37 (GMT)
Merge remote-tracking branch 'origin/master' into soc-2016-cycles_denoising
July 26, 2016, 01:36 (GMT)
Render API/Cycles: Add separate "keep highlights" parameter to the end_result function to fix Save Buffers with Denoising
July 24, 2016, 01:44 (GMT)
Merge commit '3e05be953f619b78c8721631549f9babb0950f4c' into soc-2016-cycles_denoising
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021