Blender Git Commits

Blender Git "lineart-shadow" branch commits.

December 8, 2021, 06:53 (GMT)
Cleanup: clang-format
December 8, 2021, 06:53 (GMT)
Cleanup: note that functions in BKE_node.h aren't part of blenkernel
December 8, 2021, 06:53 (GMT)
Cleanup: Use rcti marking dirty regions when texture painting.

Dirty regions when painting are not using rcti. Meaning less
understandable code. Found issue when refactoring the image_gpu partial
update. In a future change gpu partial update API will be using rcti
also what makes the code even cleaner.

Reviewed By: campbellbarton

Differential Revision:
December 8, 2021, 06:53 (GMT)
DrawManager: Engine Instance Data.

In the original design draw engines had to copy with a limitation that
they were not allowed to reuse complex data structures between drawing
calls. Data that could be reused were limited to:
- GPUFramebuffers
- GPUTextures
- Memory that could be removed calling MEM_freeN (storage list)
- DRWPass

This is fine when the storage list contains arrays or structs but when
more complex data types (vectors, maps) etc wasn't possible.

This patch adds instance_data that can be reused between drawing calls.
The instance_data is controlled by the draw engine and doesn't need to
be limited as described above.

When an engines stores instance_data it must implement the
`DrawEngineType.instance_free` callback to free the data.

The patch originates from eevee rewrite. But was added to master as the
image engine rewrite also has a need for it.

Reviewed By: fclem

Differential Revision:
December 8, 2021, 06:53 (GMT)
Fix crash when switching back from render preview.

Issue is that external engine uses the gpu info. but overwrote the
instance data. The draw manager would then detect instance data and
required the engine type to have a instance free callback.

The solution is to save some space in the engine data to hold an empty
and unused instance_data attribute to comply with `ViewportEngineData`
December 8, 2021, 06:53 (GMT)
Fix memory leak when loading large asset libraries
December 8, 2021, 06:53 (GMT)
Fix T93797, T93809: Crash/undefined-behavior when opening demo file

Error in d5efda72f501. Was changing an iteration that would free items
to an iterator that is not safe for use in such cases.

There still seem to be significant issues with the rendering, but that's
a separate issue to be fixed.
December 8, 2021, 06:53 (GMT)
Fix T93467: Use world bg color for pose library previews

Use the World viewport color when rendering pose library previews.

The World's viewport color is chosen instead of the World shading nodes,
as the latter would require rendering with `OB_RENDER` (instead of
`OB_SOLID`), which would take considerably longer.

Manifest Task: T93467

Reviewed By: sybren

Differential Revision:
December 8, 2021, 06:53 (GMT)
Geometry Nodes: move type conversions to blenkernel

The type conversions do not depend on other files in the nodes
module. Furthermore we want to use the conversions in the
geometry module without creating a dependency to the
nodes module there.
December 8, 2021, 06:53 (GMT)
Geometry Nodes: new Geometry to Instance node

This adds a new Geometry to Instance node that turns every
connected input geometry into an instance. Those instances
can for example be used in the Instance on Points node.

Differential Revision:
December 8, 2021, 06:53 (GMT)
Revert moving all shader nodes to c++

This reverts to following commits:
* rB5cad004d716da02f511bd34983ac7da820308676
* rB97e3a2d935ba9b21b127eda7ca104d4bcf4e48bd
* rBf60b95b5320f8d6abe6a629fe8fc4f1b94d0d91c
* rB0bd3cad04edf4bf9b9d3b1353f955534aa5e6740
* rBf72cc47d8edf849af98e196f721022bacf86a5e7
* rB3f7014ecc9d523997062eadd62888af5fc70a2b6
* rB0578921063fbb081239439062215f2538a31af4b
* rBc20098e6ec6adee874a12e510aa4a56d89f92838
* rBd5efda72f501ad95679d7ac554086a1fb18c1ac0

The original move to c++ that the other commits depended upon had some issues
that should be fixed before committing it again. The issues were reported in
T93797, T93809 and T93798.

We should also find a better rule for not using c-style casts going forward,
although that wouldn't have been reason enough to revert the commits.
Introducing something like a `MEM_new<T>` and `MEM_delete<T>`
function might help with the the most common case of casting the return
type of `MEM_malloc`.

Going forward, I recommend first committing the changes that don't
require converting files to c++. Then convert the shading node files
in smaller chunks. Especially don't mix fairly low risk changes like
moving some simple nodes, with higher risk changes.
December 8, 2021, 06:53 (GMT)
Cleanup: Add macro and functions for node storage

The `node_storage` functions to retrieve const and mutable structs
from a node are generated by a short macro that can be placed at the
top of each relevant file. I use this in D8286 to make code snippets
in the socket declarations much shorter, but I thought it would be
good to use it consistently everywhere else too.

The functions are also useful to avoid copy and paste errors,
like the one corrected in the cylinder node in this commit.

Differential Revision:
December 8, 2021, 06:53 (GMT)
Cycles: Metal host-side code

This patch adds the Metal host-side code:

- Add all core host-side Metal backend files (device_impl, queue, etc)
- Add MetalRT BVH setup files
- Integrate with Cycles device enumeration code
- Revive `path_source_replace_includes` in util/path (required for MSL compilation)

This patch also includes a couple of small kernel-side fixes:

- Add an implementation of `lgammaf` for Metal [Nemes, Gerg? (2010), "New asymptotic expansion for the Gamma function", Archiv der Mathematik](
- include "work_stealing.h" inside the Metal context class because it accesses state now

Ref T92212

Reviewed By: brecht

Maniphest Tasks: T92212

Differential Revision:
December 8, 2021, 06:53 (GMT)
Geometry Nodes: Edge Neighbors Node

Creates a new Edge Neighbors node which outputs a field
containing the number of faces connected to each edge.

Differential Revision:
December 8, 2021, 06:53 (GMT)
Cycles: fix build on non-Apple systems

Skip compiling `` unless `WITH_CYCLES_DEVICE_METAL` is enabled.
December 8, 2021, 06:53 (GMT)
Cycles: add Metal device type to `device_type_for_description`

Add a `DEVICE_METAL` case to the enum-value-to-string mapping function.
December 8, 2021, 06:53 (GMT)
Cycles: Reintroduce device-only memory handling that got lost in Cycles X merge

Somehow only a part of rBf4f8b6dde32b0438e0b97a6d8ebeb89802987127 ended up in
Cycles X, causing the issue that commit fixed, "OPTIX_ERROR_INVALID_VALUE" when the
system is out of memory, to show up again.
This adds the missing changes to fix that problem.

Maniphest Tasks: T93620

Differential Revision:
December 8, 2021, 06:53 (GMT)
Build: clean up handling of some Cycles build options

* Don't link embree / OSL when WITH_CYCLES is disabled
* Simplify lite config by disabling Cycles as a whole using this
* Remove code handling the removed WITH_CYCLES_NETWORK option
December 8, 2021, 06:53 (GMT)
Build: remove Cycles CUDA/HIP/OPTIX build options on macOS

So those device types are not listed in the preferences. Metal will be
added instead as the only option.
December 8, 2021, 06:53 (GMT)
Fix T93418: Cycles shadow terminator Geometry Offset artifacts with translucency

Differential Revision:
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021