Blender Git Commits

Blender Git "cycles-x" branch commits.

Page: 5 / 44

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
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021