Blender Git Commit Log

All Blender Git commits.

Page: 478 / 8462

July 6, 2021, 15:38 (GMT)
Cycles X: Reduce OIDN memory usage with multi-device render

Allow OIDN to modify render buffers in-place, without allocating
extra temporary buffers.

Currently memory is only saved for non-composited passes (combined,
shadow catcher matte). The composited passes are possible to avoid
memory allocation as well, but requires passing row stride to the
pass accessor which is not yet possible.

Differential Revision: https://developer.blender.org/D11826
July 6, 2021, 15:31 (GMT)
Fix alpha in denoised shadow catcher pass in Cycles X

Seems it was wrong since the initial implementation.

The issue is that for the shadow catcher pass we can not copy alpha
from input pass as the pass is calculated based on other passes.

Decided to go with an implicit knowledge that composited passes are
always opaque. Saves some complications and memory by storing full
RGBA buffer for noisy composited passes.

Differential Revision: https://developer.blender.org/D11825
July 6, 2021, 15:24 (GMT)
GPU: Detect mathing struct based on shader interface.
July 6, 2021, 15:24 (GMT)
Rename Scene's embeded collections from "Master Collection" to "Scene Collection"

Note that this name is essentially never used anywhere, besides as 'information'
mostly accessible from python console. Those embedded IDs are not in Main, so they
are not accessible by name ever, and mostly unusable from animation perspective
(either drivers or fcurves).

Therefore, no breakage is expected in user scripts or addons, nor when
loading in older versions of Blender.

Reviewed By: dfelinto, brecht

Differential Revision: https://developer.blender.org/D11812
July 6, 2021, 14:46 (GMT)
Cleanup: White space
July 6, 2021, 14:46 (GMT)
Fix surface objects
July 6, 2021, 13:51 (GMT)
Cycles X: Shading performance improvements by changing inlining behavior for SVM

The shading kernels (shade_surface, ...) are limited by memory a lot. I found several hotspots
where execution was stalled waiting for spills to be loaded back into registers. That's
something that can be adjusted by changing the inlining logic:

For example, the compiler did not inline "kernel_write_denoising_features" (even though it
was marked __inline__), which caused it to force synchronization before the function call.
Forcing it inline avoided that and got rid of that hotspot.

Then there was cubic texture filtering and NanoVDB, which introduced huge code chunks
into each texture sampling evaluation (increasing register and instruction cache pressure),
even though they are rarely actually used. Making them __noinline__ outsources that
overhead to only occur when actually used.

Another case is the SVM. The compiler currently converts the node type switch statement
into a binary searched branch sequence. This means depending on the SVM node hit, the
GPU has to branch over large portions of code, which increases instruction cache pressure
immensely (GPU is fetching lots of code even for stuff it immediately jumps away from
again, while jumping through the binary searched branches). This can be reduced somewhat
by making all the node functions __noinline__, so that the GPU only has to branch over a
bunch of call instructions, rather than all the inlined code.
The SVM "offset" value is passed by value into the node functions now and returned through
function return value, to make the compiler keep it in a register. Otherwise when passed as
a pointer, in OptiX the compiler was forced to move it into local memory (since functions
are compiled separately there, so the compiler is unaware of how that pointer is used).

Differential Revision: https://developer.blender.org/D11816
July 6, 2021, 13:48 (GMT)
Merge remote-tracking branch 'origin/master' into temp-lineart-contained
July 6, 2021, 12:24 (GMT)
GPU: Fix crash when using EGL with --gpu-debug flag.

During initialization of the platform a debug message is generated and
interpreted by de callback. Here the platform is checked what requires
an initialized platform.

Fixed by giving the platform check less priority in the check.
July 6, 2021, 11:38 (GMT)
Fix crash rendering some scenes after master merge

Now that lamps are handled are primitives in intersections, we must include
them in the bitmask used for packing primitive type bits.
July 6, 2021, 11:22 (GMT)
Alembic export: evaluation mode option

This option will determine visibility on either render or the viewport
visibility. Same for modifer settings. So it will either evaluate the
depsgrah with DAG_EVAL_RENDER or DAG_EVAL_VIEWPORT.
This not only makes it more flexible, it is also a lot
clearer which visibility / modfier setting is taken into account (up
until now, this was always considered to be DAG_EVAL_RENDER)

This option was always present in the USD exporter, this just brings
Alembic in line with that.

ref. T89594

Maniphest Tasks: T89594

Differential Revision: https://developer.blender.org/D11820
July 6, 2021, 11:22 (GMT)
Alembic: remove non-functional "Renderable Objects" only option

When introduced in {rB61050f75b13e} this was actually working (meaning
it checked the Outliner OB_RESTRICT_RENDER flag and skipped the object if
desired).

Behavior has since then been commented in rBae6e9401abb7 and apparently
refactored out in rB2917df21adc8.

If checked, it seemed to be working (objects marked non-renderable in
the Outliner were pruned from the export), however unchecking that
option did not include them in the export.

Now it changed - for the worse if you like - in rBa95f86359673 which
made it so if "Renderable Objects" only is checked, it will still export
objects invisible in renders. So since we now have the non-functional
option with a broken/misleading default, it is better to just remove it
entirely.

In fact it has been superseeded by the "Visible Objects" option (this
does the same thing: depsgraph is evaluated in render mode) and as a
second step (and to make this even clearer) a choice whether
Render or Viewport evaluation is used can be added (just like the USD
exporter has). When that choice is explicit, it's also clear which
visibility actually matters.

This is breaking API usage, should be in release notes.

ref. T89594

Maniphest Tasks: T89594

Differential Revision: https://developer.blender.org/D11808
July 6, 2021, 10:38 (GMT)
Cycles X: Make pass definition more robust to changes

Previously adding, removing, or even changing order of passes in
the kernel_types.h would likely to break display pass enum.

This was because the python enum was relying on an exact match of
enum item values.

Now we do an identifier-based lookup via `Pass::get_type_enum`,
which allows to more safely change passes in kernel without risk
of breaking display passes.

Additionally, conversion of pass to string now also happens via
the `Pass::get_type_enum`.

All in all, it is the pass type enum which s the source of truth
with this change.

Differential Revision: https://developer.blender.org/D11823
July 6, 2021, 10:36 (GMT)
Fix incompatible type passed to XR haptic

Likely caused by recent fixed-size types changes.
Seems to be no-functional-changes since the function is unused.
July 6, 2021, 10:26 (GMT)
Cycles X: Allow viewing denoising passes in viewport

Can be used without denoiser configured (acting as if the denoising
data passes are enabled in the view layer options).

Differential Revision: https://developer.blender.org/D11821
July 6, 2021, 10:25 (GMT)
Cycles X: Only copy denoised passes for multi-device render

No functional changes, and timing of the denoising process should be
quite the same. The change opens the doors to allow denoisers to modify
data in-place, avoiding extra allocation in the denoisers, lowering
memory peak of the denoising process.

Differential Revision: https://developer.blender.org/D11815
July 6, 2021, 09:36 (GMT)
Merge branch 'master' into cycles-x
July 6, 2021, 09:13 (GMT)
Cycles X: Reduce memory usage when denoising in multi-device render

The idea is to create a full big tile buffer on the actual device
which will be used for denoising. This avoids OptiX creating a yet
another copy of the render buffers on the actual device.

Mainly moving some lines around from DeviceDenoiser to Denoiser
to make logic more accessible by all denoisers, and in the path
tracer.

Assume allocation is cheaper than data transfer, so that some TODOs
are marked as done.

It's possible to reduce memory even further by allowing OIDN and
OptiX to modify the copy of the render buffers in-place, as it can
be thrown away. Considering this an independent further improvement
which is not tackled in this change.

Differential Revision: https://developer.blender.org/D11814
July 6, 2021, 08:42 (GMT)
Vulkan: Add support for wayland.
July 6, 2021, 07:38 (GMT)
Merge branch 'master' into temp-D10912-change-group-socket-types
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021