September 8, 2021, 15:15 (GMT) |
Cleanup: Use const qualifier |
September 7, 2021, 18:40 (GMT) |
Fix Cycles crash rendering background mode after recent changes Don't create GPU display then. |
September 7, 2021, 17:25 (GMT) |
Cycles X: Tweak to tile buffer temporary file name Was suggested by Brecht in review, but somehow got lost in updates. |
September 7, 2021, 15:07 (GMT) |
Cycles X: use time unit for render time limit |
September 7, 2021, 13:48 (GMT) |
Fix Fast GI settings not grayed out when the option is disabled |
September 7, 2021, 12:10 (GMT) |
Fix wrong tile briefly showing on tiled render cancel in Cycles X Don't update GPUDisplay if there is nothing to be written for the current tile. Avoids render buffer from previous tile used for the cancelled tile. |
September 7, 2021, 10:52 (GMT) |
Fix possible nan pixels in Cycels X pass accessor |
September 7, 2021, 09:43 (GMT) |
Revert "Fix possible duplicated tile written on cancel in Cycles X" This reverts commit 126c0d1ebd4e5d568dd18971d2b1138965085550. Committed too quick. Check for the current number of samples for tile will not work for the full-frame write. In fact, full-frame is always to be written on cancel. The duplicated tile on cancel could be caused by non-zeroed render or display buffer. This needs a deeper investigation. |
September 7, 2021, 09:41 (GMT) |
Fix possible duplicated tile written on cancel in Cycles X |
September 7, 2021, 09:06 (GMT) |
Cycles X: Bring back tiles support The meaning of tiles has shifted form being a performance tweak to a memory saving technique (avoid having full-frame buffers stored in memory during rendering). This is an initial implementation which brings some crucial building blocks, such as: - User interface. The tiling is default to be "Use Auto Tile". In the current version the "auto" part is not implemented, but the idea is to only use tiles when needed. - Internal support for tile manager, render scheduler, path tracer. Short-term plan is to replace Save Buffers with the new implementation. In the a-bit-longer term it will also be used for resumable render. Known limitations: - Cancelling render without adaptive sampling or sample count pass replaces missing tiles with black upon cancel. This is because the stored buffer is all 0-ed, and zero alpha channel means fully opaque pixel in the render buffers. It will be solved by storing a meta-information for per-tile number of samples (which is also required for resumable render). - Denoising happens for both tile and final result. During rendering it is possible to see seams on tile borders. It will be solved by introducing idea of tile overscan. - Tiles are not highlighted. This requires changes in the highlight code on Blender side. It will be worked on separately. - Peak memory usage is not ideal. Need to somehow free up session memory before reading full-frame file. It will be worked on as a follow-up development. The render result drawing should be done via GPUDisplay, and the pass memory in RenderResult is to be lazily allocated. There are spearate patches for that under review. Limitations: - Changing display pass during rendering does not change displayed pass of the finished tiles. - Memory peak is still higher than with the Save Buffers option. Those limitations are temporary and will be worked on next. Differential Revision: https://developer.blender.org/D12309 |
September 7, 2021, 08:56 (GMT) |
Cycles X: Use GPUDisplay for non-interactive render This is a part of hi-res image rendering. The goal of this step is to make it so Cycles takes care of active pass drawing for non-interactive render, similar to the viewport render. Some top-level overview of the code side design changes are summarized in T90580. Benefits and solutions to design limitations which this change brings: - Allows to lazily allocate render result on Blender side. - Solves bottleneck of data transfer and color management, which should solve issues like T52360. - Allows a render engine to take advantage of tiled rendering for memory saving by saving rendered tiles on disk and only keeping display buffer. Leaving display buffer management to an external engine allows the engine to implement logic needed for changing active display pass (which might involve reading from partial tile file). - Allows to see any pass during rendering. Differential Revision: https://developer.blender.org/D12039 |
September 7, 2021, 08:18 (GMT) |
Merge branch 'master' into cycles-x |
September 6, 2021, 18:07 (GMT) |
Cleanup: clang-format |
September 6, 2021, 18:06 (GMT) |
Fix wrong behavior with Show Active Pixels after recent UI change |
September 6, 2021, 12:25 (GMT) |
Cycles X: improve denoising features for volumes * Write accumulated volume albedo along ray * Write view direction as normal * Fix incorrect write of surface albedo after volume scatter Differential Revision: https://developer.blender.org/D12394 |
September 6, 2021, 11:56 (GMT) |
Cycles X: tweak adaptive sampling threshold * Fix incorrect handling of samples in adaptive sampling threshold. The previous formula relied on number of samples cancelling out, but this was not the case. * Base automatic min samples on the adaptive threshold instead of number of samples, since we now consider that the main setting to tweak. Note this changes noise levels in existing renders and requires thresholds to be tweaked again. I could not find a significant upside or downsides in scenes when comparing equal render times. Mainly what this seems to do is make different scenes behave more consistently with the same noise threshold. Differential Revision: https://developer.blender.org/D12395 |
September 6, 2021, 11:56 (GMT) |
Cycles X: sampling settings update * Separate adaptive sampling settings for viewport and final render * Enable adaptive sampling and denoising by default * Move denoiser prefilter and pass settings to scene * Remove square samples option * Reorganize UI * Add separate viewport and final render presets Ref T90805 Differential Revision: https://developer.blender.org/D12384 |
September 6, 2021, 10:47 (GMT) |
Cycles PMJ adaptive sampling working poorly with many bounces for Cycles-X This fixes T79190 Problem: The is correlation at the edges of the image tiles due to using the same hash twice with and xor. Also the PMJ sampling pattern when used with xor scrambling does not generate a good sample set which is causing the rays to not sample the higher dimensions correctly. Solution: Use a different pixel hash to avoid clashes with hash used during path tracing. Also, uses Cranley-Patterson rotation (which matches the Sobol sampling scheme) with the PMJ sampling scheme instead of using xor scrambling which was resulting in a bad sample set. The number of samples drawable from the PMJ sampler is also increased by using all the PMJ sample sets instead of just one. Issues: The new samples produce images with more noise than the original PMJ sets and also the Sobol sets. This unfortunately is not avoidable as the nature of jitter sampling produces more noise as there is little correlation between sample sets. To alleviate this to some extent the Cranley-Patterson rotation method from the Sobol sample generate is used as it has some degree of correlation due to the simple hash used. Reviewed By: brecht, sergey, LazyDodo Maniphest Tasks: T79190 Differential Revision: https://developer.blender.org/D12213 |
September 3, 2021, 13:19 (GMT) |
Fix compilation error of Cycles X unit test Remove test of function which became non-public and which depends on the scheduler state. Seems easiest solution, and the details of the behavior perhaps better be tested on the scheduler level instead. |
September 3, 2021, 11:32 (GMT) |
Cycles-X: Fix incorrect performance calculation at certain navigation resolutions During viewport navigation the algorithm that calculates the resolution divider assumes that the at every resolution division the sample count will be 4. This is not true for cases where the resolution division is equal to `2 * pixel_size` and `pixel_size`. In those cases the sample count is 1. As a result the algorithm assumes `2 * pixel_size` and `pixel_size` are too expensive in a lot of cases and thus doesn't use it. This patch addresses this issue by informing the algorithm of changes in sample counts between resolution divisions meaning it can more properly gauge the performance of various resolution divisions. As a result the algorithm is more likely to pick the correct resolution divider when performance of the scene is in the range that `2 * pixel_size` and `pixel_size` are viable options all while keeping the performance target at 30fps like before. Along with this patch the sample count while the resolution divider is equal to `2 * pixel_size` has been increased from 1 sample per pixel to 2 samples per pixel. Without an increase to this value there are some negative side effects. I have chosen the value of 2 and not 4 because this values means at a resolution divider of `2 * pixel_size` the rendering is still cheaper than a resolution divider of `pixel_size`. Differential Revision: https://developer.blender.org/D12367 |
|