Blender Git Commits

Blender Git commits from all branches.

Page: 659 / 2888

October 29, 2020, 04:05 (GMT)
GPencil: Use IDWALK_CB_NOP for object references.
October 29, 2020, 00:40 (GMT)
USD importer: new USDPrimIterator class.

Moved USD stage traversal and related functions
from usd_import_util.* to a dedicated
USDPrimIterator class.
October 28, 2020, 20:24 (GMT)
USD importer cleanup.

Moved static mesh import helper functions inside
blender::io::usd namespace.
October 28, 2020, 19:27 (GMT)
Geometry Nodes: make default group output node active

Otherwise some updates were missing when sockets are changed.
October 28, 2020, 19:21 (GMT)
Merge branch 'master' into geometry-nodes
October 28, 2020, 16:38 (GMT)
GPencil: Fading control UI updates.
Revision 10ffafc by YimingWu (temp-gpencil-fading-modifier)
October 28, 2020, 15:58 (GMT)
GPencil: simplify fading condition.
Revision 41a786b by YimingWu (temp-gpencil-fading-modifier)
October 28, 2020, 15:38 (GMT)
Merge remote-tracking branch 'origin/master' into temp-gpencil-fading-modifier

# Conflicts:
# release/scripts/addons
# release/scripts/addons_contrib
October 28, 2020, 14:45 (GMT)
Merge branch 'master' into greasepencil-object
October 28, 2020, 14:44 (GMT)
Merge branch 'master' into greasepencil-edit-curve
October 28, 2020, 14:19 (GMT)
fix for race condition in motion blur sockets update
October 28, 2020, 14:18 (GMT)
Merge branch 'master' into arcpatch-D8544
October 28, 2020, 13:53 (GMT)
Geometry Nodes: fix missing update when inserting a node between two nodes
October 28, 2020, 13:05 (GMT)
Geometry Nodes: improve api for nodes

The execute callback of a geometry node gets more domain specific
types as parameters now: GeoNodeInputs and GeoNodeOutputs.

Those types are also aware of what node is being executed and can
provide better error messages when they are used incorrectly.
October 28, 2020, 13:01 (GMT)
Merge branch 'master' into geometry-nodes
October 28, 2020, 11:53 (GMT)
avoid infinite loops in the viewport when synchronizing the Integrator
October 28, 2020, 11:28 (GMT)
Cycles API: use getters and setters for accessing Node sockets

Introduce a set of macros to define getters and setters for accessing or modifying socket data. This is needed to detect data changes.

For each socket the macros define the following methods:

```
get_x()
set_x()
is_x_modified()
```

where x is the name of the socket.

is_x_modified() is a convenience to access the state of the underlying socket's update_flag.

Since the macros define the methods in header files, and use the Node API, we run into a few issues:

* some Node have a member called `type`, e.g. in Geometry to discriminate between Mesh, Volume, or Hair, which conflicts with Node::type, so those members were renamed (to `geometry_type`, `wave_type`, etc.)

* we have to include header files defining nodes if a pointer to the node is used. This is because Node::set has multiple overload but the C++ type system will cast the pointer to bool and use Node::set(bool) instead of Node::set(Node*) if it cannot know the pointer derives from Node. This will lead to a runtime error, most likely a crash, perhaps we can make some changes to have a compile time error instead.

* properties that are arrays of typed Nodes (like Geometry::used_shaders) were converted to array<Node *> so they can be used with Node::set(array<Node *>)

Class members corresponding to sockets are now `protected` (so derived classes can access them), and other members who were accessed in the Blender exporter but were not sockets were transformed into sockets where it made sense.

For the Mesh node, the structures containing subdivision data were split into array sockets; added a convenience method for accessing the data as structure (`SubdFace` and `SubdEdgeCrease`). In some cases, this seems to improve cache coherency as only one of the array is accessed.

The interface to export Blender data to Cycles does not play well with the idea of updating sockets in one go. Mesh and Hair classes have convenience methods to set their data which modifies multiple sockets simultaneously (e.g. Mesh::add_triangle modifies the `triangle`, `smooth` and `shader` sockets), but ideally we would need to set the (new) data at once to detect changes. I am not sure what the best approach is for that, so I have simply modified the exporter to use temporary Mesh and Hair node to accumulate the data and update the original objects in one go, which will set the update flags appropriately. This is not so nice as the API that modify multiple sockets is still present on the Mesh or Hair class, and might confuse API clients. One idea would be to introduce the concept of `{Mesh|Hair}Builder` to accumulate the data; this would require to change the way Attributes are allocated (which is accessing the Geometry for knowing the data size) and also refactor the exporter a bit more.

Reviewed By: brecht

Maniphest Tasks: T79174

Differential Revision: https://developer.blender.org/D8544
October 28, 2020, 10:11 (GMT)
Merge remote-tracking branch 'origin/master' into lanpr-under-gp
October 28, 2020, 09:40 (GMT)
Merge branch 'master' into geometry-nodes
October 28, 2020, 08:49 (GMT)
Fix T81226: Crash opening 64bit files with endian switching

Endian switching when loading 64bit blend files on a 64bit system was
crashing as the endian switching is only applicable when loading
on 32 bit systems.

This crash goes back to 2.7x, it looks like this never worked
all the way back to the first commit.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021