Custom Data: support implicit sharing for custom data layers #106228

Merged
Jacques Lucke merged 34 commits from JacquesLucke/blender:implicit-sharing-custom-data into main 2023-04-13 14:58:08 +02:00
Member

This integrates the new implicit-sharing system (from fbcddfcd68) with CustomData. Now the potentially long arrays referenced by custom data layers can be shared between different systems but most importantly between different geometries. This makes e.g. copying a mesh much cheaper because none of the attributes has to be copied. Only when an attribute is modified does it have to be copied.

Also see the original design task: #95845.

This reduces memory and improves performance by avoiding unnecessary data copies. For example, the used memory after loading a highly subdivided mesh is reduced from 2.4GB to 1.79GB. This is about 25% less which is the expected amount because in main there are 4 copies of the data:

  1. The original data which is allocated when the file is loaded.
  2. The copy for the depsgraph allocated during depsgraph evaluation.
  3. The copy for the undo system allocated when the first undo step is created right after loading the file.
  4. GPU buffers allocated for drawing.

This patch only gets rid of copy number 2 for the depsgraph. In theory the other copies can be removed as part of follow up PRs as well though.


The patch has three main components:

  • Slightly modified CustomData API to make it work better with implicit sharing:
    • CD_REFERENCE and CD_DUPLICATE have been removed because they are meaningless when implicit-sharing is used.
    • CD_ASSIGN has been removed as well because it's not an allocation type anyway. The functionality of using existing arrays as custom data layers has not been removed though.
    • This can still be done with CustomData_add_layer_with_data which also has a new argument that allows passing in information about whether the array is shared.
    • CD_FLAG_NOFREE has been removed because it's no longer necessary. It only existed because of CD_REFERENCE.
    • CustomData_copy and CustomData_merge have been split up into a functions that do copy the actual attribute values and those that do not. The latter functions now have the _layout suffix (e.g. CustomData_copy_layout).
  • Changes in customdata.cc to make it actually use implicit-sharing.
  • Changes in various other files to adapt to the changes in BKE_customdata.h.
This integrates the new implicit-sharing system (from fbcddfcd68adc72f4dde6c1b769659ba8e9f086b) with `CustomData`. Now the potentially long arrays referenced by custom data layers can be shared between different systems but most importantly between different geometries. This makes e.g. copying a mesh much cheaper because none of the attributes has to be copied. Only when an attribute is modified does it have to be copied. Also see the original design task: #95845. This reduces memory and improves performance by avoiding unnecessary data copies. For example, the used memory after loading a highly subdivided mesh is reduced from 2.4GB to 1.79GB. This is about 25% less which is the expected amount because in `main` there are 4 copies of the data: 1. The original data which is allocated when the file is loaded. 2. The copy for the depsgraph allocated during depsgraph evaluation. 3. The copy for the undo system allocated when the first undo step is created right after loading the file. 4. GPU buffers allocated for drawing. This patch only gets rid of copy number 2 for the depsgraph. In theory the other copies can be removed as part of follow up PRs as well though. ----- The patch has three main components: * Slightly modified `CustomData` API to make it work better with implicit sharing: * `CD_REFERENCE` and `CD_DUPLICATE` have been removed because they are meaningless when implicit-sharing is used. * `CD_ASSIGN` has been removed as well because it's not an allocation type anyway. The functionality of using existing arrays as custom data layers has not been removed though. * This can still be done with `CustomData_add_layer_with_data` which also has a new argument that allows passing in information about whether the array is shared. * `CD_FLAG_NOFREE` has been removed because it's no longer necessary. It only existed because of `CD_REFERENCE`. * `CustomData_copy` and `CustomData_merge` have been split up into a functions that do copy the actual attribute values and those that do not. The latter functions now have the `_layout` suffix (e.g. `CustomData_copy_layout`). * Changes in `customdata.cc` to make it actually use implicit-sharing. * Changes in various other files to adapt to the changes in `BKE_customdata.h`.
Jacques Lucke added 7 commits 2023-03-28 17:02:42 +02:00
0caab0ee83 Squashed commit of the following:
commit 33be282c3b415656a4577586dd70999702589a65
Author: Jacques Lucke <jacques@blender.org>
Date:   Wed Mar 22 12:42:53 2023 +0100

    fix after merg

commit 4b9d973bc6c564104e35a641bb64ec7b5c08c5f8
Merge: 2318d0a508 69ba34fa21
Author: Jacques Lucke <jacques@blender.org>
Date:   Wed Mar 22 12:40:23 2023 +0100

    Merge branch 'main' into temp-copy-on-write

commit 2318d0a508
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 20:34:55 2023 +0100

    fix

    Fixed this in the past at some point, but a merge conflict reverted it..

commit ff134afff8
Merge: 3400e55ba9 99506b3d73
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 20:17:06 2023 +0100

    Merge branch 'main' into temp-copy-on-write

commit 3400e55ba9
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 20:10:36 2023 +0100

    cleanup name

commit 36a18db75a
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 19:29:24 2023 +0100

    rename

commit 5f4ca0ca2c
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 19:24:23 2023 +0100

    cleanup

commit 73aa98c62f
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 19:11:28 2023 +0100

    cleanup

commit 27061b704b
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 18:52:30 2023 +0100

    cleanup

commit 39d770fae4
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 18:21:57 2023 +0100

    cleanup

commit 0f9e2af3b0
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 17:49:22 2023 +0100

    fix double free in edit-mesh-undo

commit 657b0dc433
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 17:47:18 2023 +0100

    make destructor virtual

commit f890130a6c
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 17:04:15 2023 +0100

    remove rna integration

commit 195e9c335b
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 17:00:38 2023 +0100

    fix merge error

commit 28faa89077
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 16:30:14 2023 +0100

    cleanup

commit 7ce2820c05
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 15:54:16 2023 +0100

    cleanup

commit 14905927b3
Merge: 80f34eaa4d 92b607d686
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Mar 14 15:53:35 2023 +0100

    Merge branch 'main' into temp-copy-on-write

commit 80f34eaa4d
Merge: 06e1b3f9f6 01480229b1
Author: Jacques Lucke <jacques@blender.org>
Date:   Fri Feb 10 17:01:07 2023 +0100

    Merge branch 'main' into temp-copy-on-write

commit 06e1b3f9f6
Merge: 82ffc03449 43f308f216
Author: Jacques Lucke <jacques@blender.org>
Date:   Wed Feb 8 14:48:47 2023 +0100

    Merge branch 'main' into temp-copy-on-write-customdata

commit 82ffc03449
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Feb 7 19:50:58 2023 +0100

    fix

commit ce46579108
Merge: e71021db06 f5552d759c
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Feb 7 19:50:54 2023 +0100

    Merge branch 'main' into temp-copy-on-write-customdata

commit e71021db06
Merge: ff6f1a0a70 b642dc7bc7
Author: Jacques Lucke <jacques@blender.org>
Date:   Mon Feb 6 00:27:06 2023 +0100

    Merge branch 'master' into temp-copy-on-write-customdata

commit ff6f1a0a70
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Feb 5 23:36:06 2023 +0100

    simplify embedding cow

commit 9c51e093a3
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Feb 5 23:17:32 2023 +0100

    partial fix

commit 1284bdc24c
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Feb 5 22:31:05 2023 +0100

    removing support for saving undo step as actual file

commit a59b848992
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Feb 5 22:22:23 2023 +0100

    fix

commit 4d67393e7e
Merge: 2e9fcdc600 3d6ceb737d
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Feb 5 22:19:52 2023 +0100

    Merge branch 'master' into temp-copy-on-write-customdata

commit 2e9fcdc600
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 31 22:42:05 2023 +0100

    disable array store for editmesh undo

commit b4ac85084c
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 31 22:41:40 2023 +0100

    improve rna api

commit 6f4772d170
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 31 21:53:57 2023 +0100

    cleanup file structure

commit b703fc76c8
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 31 21:47:48 2023 +0100

    cleanup

commit 60612b84dc
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 31 21:46:45 2023 +0100

    cleanup

commit a16a60f600
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 31 21:45:35 2023 +0100

    cleanup

commit 6065a378cf
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 31 21:43:04 2023 +0100

    use virtual class

commit 53178b94e0
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 31 19:55:17 2023 +0100

    initial rna integration

commit ee675db8f6
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Jan 29 02:16:59 2023 +0100

    store destructor in cow type

commit 8f6b51ac15
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Jan 29 00:20:36 2023 +0100

    cleanup

commit c9477aac6a
Merge: c678fe09e4 e497da5fda
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Jan 29 00:15:55 2023 +0100

    Merge branch 'master' into temp-copy-on-write-customdata

commit c678fe09e4
Author: Jacques Lucke <jacques@blender.org>
Date:   Mon Jan 23 01:48:20 2023 +0100

    cleanup

commit 097c085a4e
Author: Jacques Lucke <jacques@blender.org>
Date:   Mon Jan 23 01:47:04 2023 +0100

    Support copy-on-write in undo system

commit ef1f42865e
Merge: 2b71cf4b31 93a840360a
Author: Jacques Lucke <jacques@blender.org>
Date:   Mon Jan 23 00:55:37 2023 +0100

    Merge branch 'master' into temp-copy-on-write-customdata

commit 2b71cf4b31
Merge: d4ec435d4f 3a2899cc31
Author: Jacques Lucke <jacques@blender.org>
Date:   Sun Jan 22 20:44:29 2023 +0100

    Merge branch 'master' into temp-copy-on-write-customdata

commit d4ec435d4f
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 18:14:36 2023 +0100

    compile fixes

commit ba33242d9a
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 16:35:33 2023 +0100

    progress

commit 66b4840d90
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 16:32:06 2023 +0100

    fix freeing

commit 8cff18da91
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 15:24:49 2023 +0100

    progress

commit b45b522d22
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 15:02:06 2023 +0100

    progress

commit b592d76a8e
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 14:32:56 2023 +0100

    remove CD_FLAG_NOFREE

commit be0fe0433d
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 14:21:54 2023 +0100

    cleanup

commit 3530c63611
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 14:11:36 2023 +0100

    progress

commit c1d1665a79
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 14:01:47 2023 +0100

    progress

commit 3f22933534
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 13:47:35 2023 +0100

    progress

commit c4c9a43072
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 13:42:06 2023 +0100

    progress

commit e3779d12d5
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 13:28:31 2023 +0100

    progress

commit 3ed5d00f7e
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 13:01:10 2023 +0100

    fix

commit 5329d5803e
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 12:50:29 2023 +0100

    progress

commit 51388d401c
Merge: 5a3c8a1b12 ced0021498
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 11:41:08 2023 +0100

    Merge branch 'temp-copy-on-write' into temp-copy-on-write-customdata

commit ced0021498
Merge: 0b7155b5c5 6aa29549e8
Author: Jacques Lucke <jacques@blender.org>
Date:   Sat Jan 21 11:40:42 2023 +0100

    Merge branch 'master' into temp-copy-on-write

commit 5a3c8a1b12
Author: Jacques Lucke <jacques@blender.org>
Date:   Fri Jan 20 23:45:03 2023 +0100

    change custom data api for cow

commit 0b7155b5c5
Author: Jacques Lucke <jacques@blender.org>
Date:   Fri Jan 20 21:59:07 2023 +0100

    fix

commit d76e6862f0
Author: Jacques Lucke <jacques@blender.org>
Date:   Fri Jan 20 21:57:15 2023 +0100

    fix

commit 6b1028d492
Author: Jacques Lucke <jacques@blender.org>
Date:   Fri Jan 20 21:52:16 2023 +0100

    fix

commit dd8af7b46a
Merge: ac439c7eed 244c87dd68
Author: Jacques Lucke <jacques@blender.org>
Date:   Fri Jan 20 21:45:15 2023 +0100

    Merge branch 'master' into temp-copy-on-write

commit ac439c7eed
Merge: 3f3adef4a0 c99d1d5d0d
Author: Jacques Lucke <jacques@blender.org>
Date:   Thu Feb 17 17:23:52 2022 +0100

    Use new copy-on-write system for sharing geometry components.

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

commit 3f3adef4a0
Merge: c5b55a84f5 b2867d4365
Author: Jacques Lucke <jacques@blender.org>
Date:   Tue Jan 4 13:38:02 2022 +0100

    Merge branch 'master' into temp-copy-on-write

commit c5b55a84f5
Author: Jacques Lucke <jacques@blender.org>
Date:   Mon Jan 3 16:57:15 2022 +0100

    cleanup

commit 1713a780c5
Author: Jacques Lucke <jacques@blender.org>
Date:   Mon Jan 3 16:55:45 2022 +0100

    progress

commit e0ac932156
Author: Jacques Lucke <jacques@blender.org>
Date:   Mon Jan 3 15:29:23 2022 +0100

    initial data structure
buildbot/vexp-code-patch-coordinator Build done. Details
994bab2934
improve naming
Author
Member

@blender-bot build

@blender-bot build
Jacques Lucke added 2 commits 2023-03-29 14:53:40 +02:00
Jacques Lucke added 1 commit 2023-03-29 17:19:54 +02:00
Jacques Lucke added 1 commit 2023-03-29 18:41:24 +02:00
Jacques Lucke added 3 commits 2023-04-07 12:21:56 +02:00
Jacques Lucke added 2 commits 2023-04-07 13:59:17 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
3f17b7bebb
cleanup naming
Author
Member

@blender-bot build

@blender-bot build
Jacques Lucke added 1 commit 2023-04-07 14:22:11 +02:00
Jacques Lucke changed title from WIP: Custom Data: support implicit sharing for custom data layers to Custom Data: support implicit sharing for custom data layers 2023-04-07 14:22:13 +02:00
Jacques Lucke requested review from Hans Goudey 2023-04-07 14:48:53 +02:00
Hans Goudey added this to the Core project 2023-04-07 14:55:18 +02:00
Hans Goudey reviewed 2023-04-07 23:45:10 +02:00
Hans Goudey left a comment
Member

A very nice improvement in the custom data API and more obviously in memory usage! This all looks nice to me. I just added a few inline comments.

I think this actually will improve memory usage in sculpt undo system when full copies are made, since SCULPT_UNDO_GEOMETRY is implemented basically just with CustomData_copy. It's nice when just changing the API slightly will give that improvement.

To get used to this I'll probably try to implement it implicit sharing for mesh and curve offsets next, if that makes sense to you.

A very nice improvement in the custom data API and more obviously in memory usage! This all looks nice to me. I just added a few inline comments. I think this actually will improve memory usage in sculpt undo system when full copies are made, since `SCULPT_UNDO_GEOMETRY` is implemented basically just with `CustomData_copy`. It's nice when just changing the API slightly will give that improvement. To get used to this I'll probably try to implement it implicit sharing for mesh and curve offsets next, if that makes sense to you.
@ -163,1 +156,3 @@
* if a layer should be copied or not. alloctype must be one of the above.
* Initializes a CustomData object with the same layer setup as source. `mask` is a bit-field where
* `(mask & (1 << (layer type)))` indicates if a layer should be copied or not. The data layers
* will be shared or copied depending on whether the layer uses COW.
Member

What does "whether the layer uses COW" mean? Aren't all layers potentially shared?

What does "whether the layer uses COW" mean? Aren't all layers potentially shared?
JacquesLucke marked this conversation as resolved
@ -233,2 +242,2 @@
* backed by an external data array. the different allocation types are
* defined above. returns the data of the layer.
* Adds a layer of the given type to the #CustomData object. The new layer is initialized based on
* the given alloctype. \return The layer data.
Member

Missing newline before \return

Missing newline before `\return`
JacquesLucke marked this conversation as resolved
@ -2314,0 +2376,4 @@
};
/** Create a #ImplicitSharingInfo that takes ownership of the data. */
static ImplicitSharingInfo *make_cow_for_array(const eCustomDataType type,
Member

Is it purposeful to still reference cow here? I'm not opposed to it, just pointing it out in case it wasn't.

Is it purposeful to still reference `cow` here? I'm not opposed to it, just pointing it out in case it wasn't.
JacquesLucke marked this conversation as resolved
@ -2732,3 +2840,3 @@
}
static bool customData_resize(CustomData *data, const int amount)
static void customData_resize(CustomData *data, const int grow_amount)
Member

This change to customData_resize is logically totally separate from the rest of the patch I think. Maybe it could be committed separately? Much nicer though :)

Same with the change to typeInfo below TBH.

This change to `customData_resize` is logically totally separate from the rest of the patch I think. Maybe it could be committed separately? Much nicer though :) Same with the change to `typeInfo` below TBH.
JacquesLucke marked this conversation as resolved
@ -626,3 +626,3 @@
CustomData_free(&pointcloud->pdata, pointcloud->totpoint);
pointcloud->totpoint = me->totvert;
CustomData_merge(&me->vdata, &pointcloud->pdata, CD_MASK_PROP_ALL, CD_DUPLICATE, me->totvert);
Member

No need for a newline here IMO

No need for a newline here IMO
JacquesLucke marked this conversation as resolved
@ -274,2 +275,4 @@
if (layer->data) {
if (layer->sharing_info) {
/* This assumes that the layer is not shared, which it is not here because it has just
Member

IIRC the old patch had a comment about this in the description. Though it's not really ugly anymore, it's nice if this becomes a bit actionable, like "this could be improved by...", and that sort of comment might fit in the PR (or here I guess).

IIRC the old patch had a comment about this in the description. Though it's not really _ugly_ anymore, it's nice if this becomes a bit actionable, like "this could be improved by...", and that sort of comment might fit in the PR (or here I guess).
JacquesLucke marked this conversation as resolved
Jacques Lucke added 5 commits 2023-04-08 12:59:37 +02:00
Jacques Lucke added 1 commit 2023-04-08 13:18:22 +02:00
Jacques Lucke added 1 commit 2023-04-08 13:36:13 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
7dedd25112
Merge branch 'main' into implicit-sharing-custom-data
Author
Member

@blender-bot build

@blender-bot build
Jacques Lucke requested review from Brecht Van Lommel 2023-04-08 13:44:08 +02:00
Jacques Lucke requested review from Sergey Sharybin 2023-04-08 13:44:09 +02:00
Author
Member

@blender-bot build windows

@blender-bot build windows
Hans Goudey added 1 commit 2023-04-10 19:19:21 +02:00
Hans Goudey added 1 commit 2023-04-10 19:20:08 +02:00
Hans Goudey added 1 commit 2023-04-10 19:20:39 +02:00
Hans Goudey approved these changes 2023-04-10 19:21:56 +02:00
Jacques Lucke added 1 commit 2023-04-11 12:14:02 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
061e3d827a
Merge branch 'main' into implicit-sharing-custom-data

@blender-bot build

@blender-bot build
Sergey Sharybin approved these changes 2023-04-11 15:11:36 +02:00
Sergey Sharybin left a comment
Owner

Great memory optimization! I also like how the CustomData functions are documented and have more clear naming :)

Took me a bit to understand what the BLI_implicit_sharing.h is about. Maybe add a comment that it is for forward declaration a class defined in the BLI_implicit_sharing.hh but which is available for both C and C++? Just a thought.

From the code side seems good. Did you test it with some complex files like from some of the open movies (like, the current one)? Do you want us to do some testing here at the studio?

Great memory optimization! I also like how the CustomData functions are documented and have more clear naming :) Took me a bit to understand what the `BLI_implicit_sharing.h` is about. Maybe add a comment that it is for forward declaration a class defined in the `BLI_implicit_sharing.hh` but which is available for both C and C++? Just a thought. From the code side seems good. Did you test it with some complex files like from some of the open movies (like, the current one)? Do you want us to do some testing here at the studio?
Jacques Lucke added 1 commit 2023-04-11 16:27:36 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
78aa83e235
add clarifying comment in BLI_implicit_sharing.h
Author
Member

I did open a few Heist files, changed some small things, and hit undo. That worked as expected. I don't yet have access to the current open movie. Any additional testing at the studio would be appreciated!

I did open a few Heist files, changed some small things, and hit undo. That worked as expected. I don't yet have access to the current open movie. Any additional testing at the studio would be appreciated!

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR106228) when ready.

Gave it a test with the production file I've been looking into recently. So far so good!

Gave it a test with the production file I've been looking into recently. So far so good!
Hans Goudey added 1 commit 2023-04-11 19:46:28 +02:00
Hans Goudey added 1 commit 2023-04-12 17:56:24 +02:00
Hans Goudey added 1 commit 2023-04-12 21:50:59 +02:00
Author
Member

I'm mainly waiting for final approval by @brecht now.

I'm mainly waiting for final approval by @brecht now.
Brecht Van Lommel approved these changes 2023-04-13 14:01:06 +02:00
@ -240,0 +250,4 @@
/**
* Adds a layer of the given type to the #CustomData object. The new layer takes ownership of the
* passed in `layer_data`. If a #ImplicitSharingInfoHandle is passed in, it's user count is

it's -> its

it's -> its
Jacques Lucke added 2 commits 2023-04-13 14:55:22 +02:00
Jacques Lucke merged commit 7eee378ecc into main 2023-04-13 14:58:08 +02:00
Jacques Lucke deleted branch implicit-sharing-custom-data 2023-04-13 14:58:09 +02:00
Bastien Montagne removed this from the Core project 2023-07-03 12:47:07 +02:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#106228
No description provided.