Blender Git Loki

Blender Git commits from all branches.

Page: 384 / 2888

May 6, 2021, 09:25 (GMT)
GPencil: Fix unreported problem when save file in Curve Edit mode

This is related to T87905
May 6, 2021, 09:25 (GMT)
Fix T87554 Exact Boolean performance bug.

There was a quadratic algorithm extracting triangles from a coplanar
cluster. This is now linear.
Also found and fixed a bug in the same area related to the triangulator
added recently: it didn't get the right correspondence between new
edges and original edges.
May 6, 2021, 09:25 (GMT)
Cycles: add reference counting to Nodes

This adds a reference count to Nodes which is incremented or decremented
whenever they are added to or removed from a socket, which will help us
track used Nodes throughout the scene graph generically without having to
add an explicit count or flag on specific Node types. This is especially
useful to track Nodes defined through Procedurals out of Cycles' control.

This also modifies the order in which nodes are deleted to ensure that
upon deletion, a Node does not attempt to decrement the reference
count of another Node which was already freed or deleted.

This is not currently used, but will be in the next commit.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D10965
May 6, 2021, 09:25 (GMT)
Cycles: use reference count to detect used shaders

Shaders are only compiled if they are used by some other Node (Geometry, Light, etc.).
This usage detection is done before updating the Scene, however it fails at detecting
Shaders used by Procedurals not known to Cycles (e.g. ones defined by third party
applications), as Procedurals are only updated after the shaders are compiled.

To remedy this, we now use the Node reference counting mechanism to detect whether a
Shader is used and therefore should be compiled.

This removes `ShaderManager::update_shaders_used` as it is not needed anymore, however,
since it would also update the Shader ids, this is now performed in
`ShaderManager::device_update`, and a new virtual `device_update_specific` method was
added to handle device updates for SVM and OSL.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D10965
May 6, 2021, 09:25 (GMT)
Cleanup: format
May 6, 2021, 09:25 (GMT)
Cleanup: clang-tidy
May 6, 2021, 09:25 (GMT)
Cleanup: clang-tidy
May 6, 2021, 09:25 (GMT)
Minor updates to i18n spellcheck tool.
May 6, 2021, 09:25 (GMT)
LibOverride: temporarily fix the material driver workaround with a hack.

Currently overriding properties within material node trees is not
supported. However there is a workaround that allows feeding values
through drivers via an intermediate custom property, as described
in T82404. The workaround relies on the behavior of the ID copying
code that always patches datablock self-references even without any
overrides.

Unfortunately, this broke during development of 2.93. This happened
because a call RNA_struct_override_matches added in rB2281db72b0157
detects that no override exists, and 'restores' the self-reference
to point to the original datablock.

To avoid this, mark the Material.node_tree property with the
PROPOVERRIDE_IGNORE flag to stop RNA_struct_override_matches
from recursing into the currently unsupported node tree sub-block.
This flag should be removed when this is properly supported.

This was confirmed to fix the workaround and discussed with @mont29.
May 6, 2021, 09:25 (GMT)
Geometry Nodes: Parallelize attribute nodes

This commit significantly speeds up many of the attribute nodes when
multiple threads are available in linear situations when parallelism
cannot be achieved elsewhere.

See the differential for a table of timing comparisons tested on a
Ryzen 3700x. For an attribute with 4 million elements, the nodes were
about 3 to 9 times faster.

The changes are not exhaustive, other nodes could still be parallelized
in the future. Also, it would be possible to further optimize the grain
size in `parallel_for`, but I'd rather make sure it isn't too small.
I tested some different values, but also relied on intuition--
increasing grain size for less complex operations and vice versa.

Differential Revision: https://developer.blender.org/D11139
May 6, 2021, 09:25 (GMT)
Fix T87989: Crash using OpenCL in compositor

Initial report was mentioning the Classroom demo scene, but this is
probably because the scene was pre-configured to be used with OpenCL.
Would expect any OpenCL compositing to be failing prior to this fix.

The reason why crash was happening is due to OpenCL queue being
released from OpenCLDevice destructor. Is not that obvious, but
when Vector (including std::vector) is holding elements by value
a destructor will be called on "old" memory when vector capacitance
changes.

Solved by making forbidding copy semantic for compositor devices and
forcing move semantic to be used.

Also use emplace semantic in the devices vector initialization.
May 6, 2021, 09:25 (GMT)
Fix compilation error after recent compositor fix

Apparently, there is no emplace semantic available in the Vector in
the stable branch.
May 6, 2021, 09:25 (GMT)
Fix T87969: crash accesing FaceMaps / PaintMask data in editmode

Workaround for crash when accessing FaceMaps / PaintMask data in
editmode, just disallow access in editmode as is done with UVs.

Same fix as in {rB3e2619b3e72a}.

Maniphest Tasks: T87969

Differential Revision: https://developer.blender.org/D11146
May 6, 2021, 09:25 (GMT)
Cleanup: use boolean for has_event variable & return value
May 6, 2021, 09:25 (GMT)
Alembic Procedural: refactor data reading

This splits the data reading logic from the AlembicObject class and moves it to
separate files to better enforce a separation of concern. The goal was to simplify
and improve the logic to read data from an Alembic archive.

Since the procedural loads data for the entire animation, this requires looping
over the frame range and looking up data for each frame. Previously those loops
would be duplicated over the entire code causing divergences in how we might
skip or deduplicate data across frames (if only some data change over time and
not other on the same object, e.g. vertices and triangles might not have the
same animation times), and therefore, bugs.

Now, we only use a single function with callback to loop over the geometry data
for each requested frame, and another one to loop over attributes. Given how
attributes are accessed it is a bit tricky to simplify further and only use a
ingle function, however, this is left as a further improvement as it is not
impossible.

To read the data, we now use a set of structures to hold which data to read.
Those structures might seem redundant with the Alembic schemas as they are
somewhat a copy of the schemas' structures, however they will allow us in the
long run to treat the data of one object type as the data of another object
type (e.g. to ignore subdivision, or only loading the vertices as point clouds).

For attributes, this new system allows us to read arbitrary attributes, although
with some limitations still:
* only subdivision and polygon meshes are supported due to lack of examples for
curve data;
* some data types might be missing: we support float, float2, float3, booleans,
normals, uvs, rgb, and rbga at the moment, other types can be trivially added
* some attribute scopes (or domains) are not handled, again, due to lack of example
files
* color types are always interpreted as vertex colors
May 6, 2021, 08:43 (GMT)
Merge branch 'master' into temp-gpencil-bezier-stroke-type
May 6, 2021, 08:42 (GMT)
GPencil: Bezier stroke smooth modifer

This commits adds an extension of the `BKE_gpencil_editcurve_smooth`
function. `BKE_gpencil_editcurve_smooth_ex` allows the use of vertex
groups and curve mappings. This new function is used to implement the
smooth modifier for bezier strokes.
May 6, 2021, 07:26 (GMT)
GPencil: Initial bezier support for smooth modifier

This adds the `deformBezier` callback for the smooth modifier.
At the moment this does not support vertex group influence and
custom curve falloff.
May 6, 2021, 03:46 (GMT)
New check_submodules_nv.cmd script.

Modified version of check_submodules.cmd that
checks out and pulls NVIDIA's branch of addons_contrib.
May 6, 2021, 03:34 (GMT)
LineArt: In-front UI hints.
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021