Blender Git Commits

Blender Git "soc-2016-cycles_denoising" branch commits.

Page: 3 / 12

January 12, 2017, 03:56 (GMT)
Cycles Denoising: Remove now-useless feature utilities
January 12, 2017, 03:56 (GMT)
Cycles Denoising: Use better and faster NLM implementation for feature pass prefiltering

Previously, the prefiltering NLM kernel was implemented just as it's described in the paper:
For every pixel P, loop over every pixel Q in the search window. Then, loop over the small patches around them, calculate the average difference, and use that to compute the weight of Q for the denoised result at P.

However, that gives you a time complexity of O(N^2 * R^2 * F^2), where N is the image size, R the search window and F the patch size...
So, this patch implements the clever idea from "A Simple Trick to Speed Up and Improve the Non-Local Means" - by reformulating the loop, it's actually possible to skip a lot of computation and replace it with a separable box filter convolution. This reduces complexity to O(N^2 * R^2 * F), and the amount of pixel differences calculated even to O(N^2 * R^2)!

Furthermore, by applying a second box-filter pass after calculating the weights, we get the "patchwise NLM" improvement basically for free!

This is CPU-only so far, but that will change soon.
January 11, 2017, 06:37 (GMT)
Cycles Denoising: Remove WLR and experimental NFOR modes

The denoising code started out as an implementation of WLR, but the NLM mode is working so much better that I decided to remove the WLR mode completely.
This allows to get rid of a significant amount of complexity and code.

Also, the NFOR mode is removed - the name is misleading, most of the ideas behind the NFOR paper are actually what powers the NLM mode. NFOR mode was just an experiment with removing the T-SVD feature space reduction, and it turned out that the experiment had failed.
January 11, 2017, 05:28 (GMT)
Cycles Denoising: Remove hidden NLM-only option
December 21, 2016, 04:09 (GMT)
Cycles: Rename and add new matrix math helper functions to clean up the actual filter code
December 21, 2016, 01:29 (GMT)
Cycles: Deduplicate numerical code in the WLR bandwidth estimation

Also includes some documentation about what this code actually does.
December 20, 2016, 14:01 (GMT)
Merge remote-tracking branch 'origin/master' into soc-2016-cycles_denoising

Conflicts:
source/blender/makesrna/intern/rna_render.c
December 20, 2016, 04:38 (GMT)
Cycles: Move normal equation solver into a separate function and rename a few variables for clarity
December 20, 2016, 04:38 (GMT)
Cycles: Replace T-SVD algorithm with new Jacobi Eigendecomposition solver

The code that was used for the T-SVD before came from the WLR reference implementation,
but had numerical problems on Windows and would often cause NaNs.

This commit replaces it with a new implementation using Eigendecomposition based on the Jacobi Eigenvalue Method.
That should:
- Give a slight performance boost (probably not noticable, since the T-SVD was no bottleneck to begin with)
- Improve numerical accuracy of the results (not very important either since the eigenvalues are only compared against a threshold)
- FINALLY solve the black spot issue on Windows
- Slightly reduce memory usage (singular values are now constructed on the diagonal of the input matrix) with the potential of more in the future (now only the lower-triangular part is required).
- Resolve potential licensing issues - the specific file containing the original code didn't come with any licensing information, and the main file contains an apparently custom license...
December 20, 2016, 04:38 (GMT)
Cycles: Declare more utility function arguments const
December 20, 2016, 04:38 (GMT)
Cycles: Include util_math_matrix.h in CMake
December 6, 2016, 20:13 (GMT)
Merge remote-tracking branch 'origin/master' into soc-2016-cycles_denoising

Conflicts:
intern/cycles/device/device_cpu.cpp
intern/cycles/device/device_cuda.cpp
intern/cycles/render/tile.cpp
intern/cycles/render/tile.h
December 2, 2016, 22:31 (GMT)
Cycles: Clamp optimal bandwidth parameter to the range of evaluated parameters
December 2, 2016, 21:14 (GMT)
Merge remote-tracking branch 'origin/master' into soc-2016-cycles_denoising
December 2, 2016, 21:14 (GMT)
Cycles: Actually enable FTZ

The previous commit added the function to enable it, but didn't ever call it...
December 1, 2016, 21:43 (GMT)
Cycles: Fix Progressive Rendering

This also fixes the material and world preview bug.
November 26, 2016, 03:19 (GMT)
Merge remote-tracking branch 'origin/master' into soc-2016-cycles_denoising
November 26, 2016, 03:18 (GMT)
Cycles: Properly initialize some denoising-related variables
November 26, 2016, 02:29 (GMT)
Cycles: Fix progress calculation while denoising after rendering
November 24, 2016, 23:48 (GMT)
Cycles: Fix progress bar not appearing for denoising after rendering
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021