Blender Git Loki

Kaikki Blender Git kommitit.

Page: 1075 / 8462

December 4, 2020, 10:28 (GMT)
Cleanup: Clang-Tidy, modernize-deprecated-headers

No functional changes.
December 4, 2020, 10:28 (GMT)
Fix variable shadowing warning
December 4, 2020, 10:25 (GMT)
Fix "Make Asset" failing for collections in the Outliner

All ID types but collections have a `TreeStoreElem.type` of 0, but collections...
AFAIK to avoid compatilibity breaking changes back in 2.8.
December 4, 2020, 09:50 (GMT)
Cleanup: replace NULL with nullptr in C++ code

No functional changes.
December 4, 2020, 09:14 (GMT)
Point users to new location of "Show Group Colors" option

In ad85256e7108 the "Show Group Colors" option was changed from a
per-editor option to a user preference. Since so many people wanted to
turn this option off, this makes sense. However, this move caused some
confusion because the option was just gone from the menu.

This commit adds a dummy menu item. It's disabled, and the tooltip
explains that the option can now be found in Preferences.

T83390 was created to track the removal of these hints.

Reviewed by: Severin

Differential Revision: https://developer.blender.org/D9735
December 4, 2020, 07:46 (GMT)
EEVEE Cryptomatte

Cryptomatte is a standard to efficiently create mattes for compositing. The
renderer outputs the required render passes, which can then be used in the
compositor to create masks for specified objects. Unlike the Material and Object
Index passes, the objects to isolate are selected in compositing, and mattes
will be anti-aliased.

Cryptomatte was already available in Cycles this patch adds it to the EEVEE
render engine. Original specification can be found at
https://raw.githubusercontent.com/Psyop/Cryptomatte/master/specification/IDmattes_poster.pdf

**Accurate mode**

Following Cycles, there are two accuracy modes. The difference between the two
modes is the number of render samples they take into account to create the
render passes. When accurate mode is off the number of levels is used. When
accuracy mode is active, the number of render samples is used.

**Deviation from standard**

Cryptomatte specification is based on a path trace approach where samples and
coverage are calculated at the same time. In EEVEE a sample is an exact match on
top of a prepared depth buffer. Coverage is at that moment always 1. By sampling
multiple times the number of surface hits decides the actual surface coverage
for a matte per pixel.

**Implementation Overview**

When drawing to the cryptomatte GPU buffer the depth of the fragment is matched
to the active depth buffer. The hashes of each cryptomatte layer is written in
the GPU buffer. The exact layout depends on the active cryptomatte layers. The
GPU buffer is downloaded and integrated into an accumulation buffer (stored in
CPU RAM).

The accumulation buffer stores the hashes + weights for a number of levels,
layers per pixel. When a hash already exists the weight will be increased. When
the hash doesn't exists it will be added to the buffer.

After all the samples have been calculated the accumulation buffer is processed.
During this phase the total pixel weights of each layer is mapped to be in a
range between 0 and 1. The hashes are also sorted (highest weight first).

Blender Kernel now has a `BKE_cryptomatte` header that access to common
functions for cryptomatte. This will in the future be used by the API.

* Alpha blended materials aren't supported. Alpha blended materials support in
render passes needs research how to implement it in a maintainable way for any
render pass.

This is a list of tasks that needs to be done for the same release that this
patch lands on (Blender 2.92)

* T82571 Add render tests.
* T82572 Documentation.
* T82573 Store hashes + Object names in the render result header.
* T82574 Use threading to increase performance in accumulation and post
processing.
* T82575 Merge the cycles and EEVEE settings as they are identical.
* T82576 Add RNA to extract the cryptomatte hashes to use in python scripts.

Reviewed By: Cl�ment Foucault

Maniphest Tasks: T81058

Differential Revision: https://developer.blender.org/D9165
December 4, 2020, 07:14 (GMT)
EEVEE: Arbitrary Output Variables

This patch adds support for AOVs in EEVEE. AOV Outputs can be defined in the
render pass tab and used in shader materials. Both Object and World based
shaders are supported. The AOV can be previewed in the viewport using the
renderpass selector in the shading popover.

AOV names that conflict with other AOVs are automatically corrected. AOV
conflicts with render passes get a warning icon. The reason behind this is that
changing render engines/passes can change the conflict, but you might not notice
it. Changing this automatically would also make the materials incorrect, so best
to leave this to the user.

**Implementation**

The patch adds a copies the AOV structures of Cycles into Blender. The goal is
that the Cycles will use Blenders AOV defintions. In the Blender kernel
(`layer.c`) the logic of these structures are implemented.

The GLSL shader of any GPUMaterial can hold multiple outputs (the main output
and the AOV outputs) based on the renderPassUBO the right output is selected.
This selection uses an hash that encodes the AOV structure. The full AOV needed
to be encoded when actually drawing the material pass as the AOV type changes
the behavior of the AOV. This isn't known yet when the GLSL is compiled.

**Future Developments**

* The AOV definitions in the render layer panel isn't shared with Cycles.
Cycles should be migrated to use the same viewlayer aovs. During a previous
attempt this failed as the AOV validation in cycles and in Blender have
implementation differences what made it crash when an aov name was invalid.
This could be fixed by extending the external render engine API.
* Add support to Cycles to render AOVs in the 3d viewport.
* Use a drop down list for selecting AOVs in the AOV Output node.
* Give user feedback when multiple AOV output nodes with the same AOV name
exists in the same shader.
* Fix viewing single channel images in the image editor [T83314]
* Reduce viewport render time by only render needed draw passes. [T83316]

Reviewed By: Brecht van Lommel, Cl�ment Foucault

Differential Revision: https://developer.blender.org/D7010
Revision 2bd0263 by Hans Goudey (master)
December 4, 2020, 05:37 (GMT)
Fix T83346: Scrolling doesn't work with mouse over panel header

Just a misplaced assignment to the return value from the panel handler
in rB600fb28b6295.
December 4, 2020, 04:50 (GMT)
Geometry Nodes: Attribute compare node

This node reads two input attributes as floats and allows for basic
element-wise comparison operations. Like the attribute math node,
it's also possible to switch to using floats as inputs. This node can
be combined with the point separate node for more flexibility on which
points to separate out.

I used the same abstractions that the attribute math node uses in this
commit, assuming that makes sense.
Revision 871fda8 by Michael A. Kowalski (usd-importer-T81257)
December 4, 2020, 02:01 (GMT)
USD importer: instancing improvements.

Added new USDDataCache class for caching prototype mesh data.
No longer using a global static cache for prototype meshes.
Now precomputing the prototype meshes in a USDDataCache
instance which is passed as an argument to
USDXformableReade::create_objects(). These changes simplify
the code, provide better support for thread safety and circumvent
potential issues with dangling pointers in the previous
implementation.
December 4, 2020, 01:23 (GMT)
UI: Remove Decorators from Keymap Preferences

Improvements to the layout of the Keymaps section of Preferences by removing unneeded Decorator columns.

Differential Revision: https://developer.blender.org/D9726

Reviewed by Hans Goudey
December 4, 2020, 00:31 (GMT)
Geometry Nodes: Refactor and change point separate node

The threshold input is unecessary with an "attribute compare"
node before this one, or with attribute rounding. So to remove some
complexity it is removed, and a boolean input attribute is used instead.

For the implementation, the existing code becomes a bit more specific
to point cloud data, because I'm realizing that mesh separate is quite a
different problem, and it doesn't make sense to force the same code
to be able to solve that too.
December 4, 2020, 00:27 (GMT)
Geometry Nodes: Add boolean type to random attribute node
December 4, 2020, 00:23 (GMT)
Geometry Nodes: Add a boolean attribute data type
December 3, 2020, 22:43 (GMT)
Fix variable shadowing warning
December 3, 2020, 22:42 (GMT)
Fix warning because of mismatching forward declaration
December 3, 2020, 21:55 (GMT)
Sculpt: Wet paint area radius

This adds a new property to the sculpt vertex color paint brush to limit
the area of the brush that is going to be used to sample the wet paint
color. This is exactly the same concept as normal radius and area radius
that exist for sculpting brushes for sampling the surface depth and
orientation.

When working near color hard edges, this allows to prevent the color
from the other side of the edge to blend into the wet paint.

With 1.0 (the previous default) wet paint radius, as soon as the brush touches
one vertex of the other color, the wet paint mix color changes, making it
impossible to maintain the border between the two colors.

Reviewed By: sergey, dbystedt, JulienKaspar

Differential Revision: https://developer.blender.org/D9587
December 3, 2020, 21:54 (GMT)
Sync with review branches, adds "Remove Asset-Data" support

Mostly internal changes. But also adds removing of asset data via the "Remove
Asset-Data" operator in the Outliner and button context menus, as well as
through deleting asset files in the Asset Browser.
December 3, 2020, 21:52 (GMT)
Merge branch 'master' into asset-browser
December 3, 2020, 21:51 (GMT)
Support deleting asset-data (not the data-block itself!) from the Asset Browser
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021