利用者:Lukasstockner97/GSoC 2016/Weekly Reports/Week 3

提供: wiki
移動先: 案内検索

Hi!

This week, I mainly worked on the denoising kernels. To get a maintainable result, I decided to go away from the tons of unidentifiable loops I used in the proof-of-concept code and instead split it up into function blocks for the individual algorithm steps (building the transformation matrix, singular value decomposition, building the normal matrix of the least-squares system, cholesky decomposition, inversion through backsubstitution, direct solving of 2-parameter least-squares fits...). That way, it becomes more obvious how the algorithm actually works, code parts can be reused etc.

I'm already done with all the building blocks afaics and now am working on combining them into the kernel function - that should be working on Monday or Tuesday.

I also did some other stuff in Cycles that's not directly related to denoising:

  • Finally fixed two NaN bugs (T48383, D2051)
  • Improved rendering speed in scenes with many area lamps (D2045)
  • Added debugging option for NaNs/Infs (D2053, not done yet)
  • Updated the energy-conserving microfacets patch (D2002)
  • Created a quick testing patch for lower scrambling distances in the Sobol code (P366) - not intended for master yet, but lower values show significant speedups (50% and more in some scenes). However, setting it too low can cause visible artifacts (the result is still "correct", though - kind of like the static noise pattern in animations when you don't animate the seed, just static across the image instead of static across time). Therefore, exposing this setting isn't really great, but in the paper "Cache-Friendly Micro-Jittered Sampling" a way to find the value automatically is shown (the actually mention that they tested it in Cycles).

So, next week I'll finish the denoising kernels, start with implementing the "re-denoise" option and hopefully finish the microfacet patches!

Lukas