April 15, 2021, 07:26 (GMT) |
Cycles: Remove pause notification from denoising sample change The pause wait does not check on the denoiser sample, so it was a bit weird to wake up pause loop. Possibly was a copy-paste of the samples update which does need to wake pause loop. |
April 15, 2021, 07:26 (GMT) |
Cycles: Remove background info from Device There shouldn't be a logic on the device level which will make it to change behavior based on whether it is an interactive or offline rendering. The only current use is in the OpenCL device which initialized requested features differently for viewport. This code will either fully fade away or will be redone. |
April 15, 2021, 07:26 (GMT) |
Cycles: Refactor denoiser passes configuration Store them as an individual boolean flags. Should be no functional changes so far, but allows to simplify the following: - Conditional enabling of denoising passes (so that unused passes are not written by the kernel). - Move configuration to the Graph. |
April 15, 2021, 07:26 (GMT) |
Cycles: Conditionally enable denoising passes Allows to avoid memory usage by passes which are not used by the denoising algorithm. |
April 14, 2021, 13:28 (GMT) |
Cycles: Remove unused fields from RenderBuffers The neighours map is not used anymore as everything is happening on a level of big tiles. The render time will need to be redone somehow, because measuring it on a big tile level is not very useful for artists. |
April 14, 2021, 13:28 (GMT) |
Cycles: Remove trivial wrapper functions They do not add any semantic meaning, is easier to simply call the C++ RNA API directly, as it is exactly the same argument list to be passed. |
April 14, 2021, 13:28 (GMT) |
Cycles: Hide Session::tile_manager from public access |
April 14, 2021, 13:28 (GMT) |
Cycles: Use more clear name for tile pixels accessors |
April 14, 2021, 13:28 (GMT) |
Cycles: Make session buffer params non-public |
April 14, 2021, 07:51 (GMT) |
Cycles: Rework passess data access The idea is to move pass access away from RenderBuffers to a place where list of passes is known. Most obvious choice is the Session. A bit of trickery comes from the fact that in theory PathTrace might have multiple RenderBuffers (in the case of multi-device render). So the pass access happens via session into the PathTrace. There is a helper class which pre-calculates various offsets which can be re-used by updates form multiple devices. |
April 13, 2021, 16:00 (GMT) |
Cycles: Fix divide pass types stuck forever in viewport render Once the viewport display was set to a pass which requires a divide type the divide type pass would have been never removed from passes. This was causing some issue in the light pass handling. resulting in wrong render result when viewport was toggled back to combined pass. |
April 13, 2021, 16:00 (GMT) |
Cycles: Fix and improve behavior of SessionParams::modified The check around denoising.use seemed to be wrong: seems to be a mistake of trying to inline check for an effective value of the new parameters denoiser usage (with device support taken into account). Additionally, don't compare denoising parameters if the denoising is not used. This way it is possible to modify denoiser settings before enabling it, which is handy in the complex files. |
April 13, 2021, 16:00 (GMT) |
Cycles: Make it possible to handle unaligned float3 passes Currently unused, preparing code to generalize denoising passes. |
April 13, 2021, 16:00 (GMT) |
Cycles: Move denoising passes to generic passes routines The change makes it so denoising passes are handled in the same exact way as "regular" passes are, allowing to get rid of some exceptions in the code. The current downside is that if OptiX denoiser is requested and is not supported by the platform the passes will still be allocated. I'd say that behavior in this case needs to be revisited: either fallback to the OpenImageDenoiser (similar to how unsupported GPU Compute falls back to CPU) or to move support checks in a centralized place. The one thing which could help here is moving denoiser parameters from Session to Scene. The immediate benefit is that the special access to the denoiser passes in the Buffers is no longer needed. After this change it will also be possible to save up memory by not allocating passes which are not needed for the denoiser: for example if denoiser does not use normals there is no need to allocate pass for them. |
April 13, 2021, 16:00 (GMT) |
Cycles: Use easier to debug match check Use DCHECK_EQ(foo, bar) instead of assert(foo == bar) which makes it easier to see what exactly went wrong by looking on numbers. Before it was required to re-run Blender to see what was actual and expected values. |
April 13, 2021, 16:00 (GMT) |
Cycles: Vectorize math in get_pass_rect Should give some time advantage when accessing passes. Hard to measure though, but this feels to be the right thing to do nevertheless. |
April 13, 2021, 10:44 (GMT) |
Cycles: Don't hardcode adaptive sampling passes for background renders Leave creation of such passes to the scene. No function changes expected, just reducing boiler plate code taking an advantage of smarter render pipeline now. |
April 13, 2021, 10:44 (GMT) |
Cycles: Unify checks for unused passes Avoids possible scenario when viewport rendering uses samples count as a display pass: its offset will be 0 in this case, making checks in the kernel wrong. This also makes it so access to the adaptive sampling will cause memory issues instead of silently accessing combined passes. |
April 13, 2021, 10:44 (GMT) |
Cycles: Fix memory leak of OptiX context and denoiser |
April 13, 2021, 10:44 (GMT) |
Cycles: Fix section name in the comment |
|