Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-10-24Fix T101946: Outliner data-block counter treats bones as collectionPhilipp Oeser
Mistake in own rBb6a35a8153c3 which caused code to always recurse into bone hierarchies (no matter which collapsed level an armature was found). This led to bone counts always being displayed even outside a collapsed armature (e.g. if an armature was somewhere down a object or collection, the collapsed object or collection would show this bonecount). This is inconsistent with other data counting in the Outliner, e.g. vertexgroups or bonegroups do have their indicator at object level, however the counter only shows if `Vertex Groups` or `Bone Groups` line shows (so if the object is not collapsed). And this also led to the bug reported in T101946 which was that the bone counts would be treated as collections when further down a collapsed hierarchy. Background: The whole concept of `MergedIconRow` is based on the concept of counting **objects types or collectinons/groups**. If other things like overrides, vertexgroups or bonegroups are displayed in a counted/ merged manner, then these will always be counted in the array spots that are usually reserved for groups/collections. But for things this is not a problem (since these are only displayed below their respective outliner entry -- and will never be reached otherwise). So to correct all this, we now only recurse into a bone hierarchy if a bone is at the "root-level" of a collapsed subtree (direct child of the collapsed element to merge into). NOTE: there are certainly other candidates for counted/merged display further up the hierarchy (not just bones -- constraints come to my mind here, but that is for another commit) Maniphest Tasks: T101946 Differential Revision: https://developer.blender.org/D16319
2022-10-20UI: Icon number indicator for data-blocksDalai Felinto
Adds the possibility of having a little number on top of icons. At the moment this is used for: * Outliner * Node Editor bread-crumb * Node Group node header For the outliner there is almost no functional change. It is mostly a refactor to handle the indicators as part of the icon shader instead of the outliner draw code. (note that this was already recently changed in a5d3b648e3e2). The difference is that now we use rounded border rectangle instead of circles, and we can go up to 999 elements. So for the outliner this shows the number of collapsed elements of a certain type (e.g., mesh objects inside a collapsed collection). For the node editors is being used to show the use count for the data-block. This is important for the node editor, so users know whether the node-group they are editing (or are about to edit) is used elsewhere. This is particularly important when the Node Options are hidden, which is the default for node groups appended from the asset libraries. --- Note: This can be easily enabled for ID templates which can then be part of T84669. It just need to call UI_but_icon_indicator_number_set in the function template_add_button_search_menu. --- Special thanks Clément Foucault for the help figuring out the shader, Julian Eisel for the help navigating the UI code, and Pablo Vazquez for the collaboration in this design solution. For images showing the result check the Differential Revision. Differential Revision: https://developer.blender.org/D16284
2022-10-17Cleanup: spelling in comments, unused arg warningCampbell Barton
2022-10-13Outliner: Use row background color for elements count indicatorDalai Felinto
From T101799: Currently, the count indicator background and color are hardcoded to black and white in an attempt to maximize contrast, at the expense of being too prominent even when not needed. Changing the background color to match the row (or any other element) background, would make it look like the data-block icon is masked out, improving readability while not standing out too much. The circle background color should not have transparency, as it does now. And the text inside should match the color of the text used for the parent element (instead of hardcoded white). This should make it look good in any theme. --- Before: {F13674265, size=full} After: {F13674269, size=full} Differential Revision: https://developer.blender.org/D16246
2022-10-07Cleanup: redundant parenthesisCampbell Barton
2022-10-04Cleanup: replace UNUSED macro with commented args in C++ codeHans Goudey
This is the conventional way of dealing with unused arguments in C++, since it works on all compilers. Regex find and replace: `UNUSED\((\w+)\)` -> `/*$1*/`
2022-09-30Cleanup: use function style casts for C++Campbell Barton
2022-09-29Cleanup: spelling in commentsCampbell Barton
2022-09-25Cleanup: replace C-style casts with functional casts for numeric typesCampbell Barton
2022-09-19Cleanup: spellingCampbell Barton
2022-09-14ViewLayer: Lazy sync of scene data.Monique Dewanchand
When a change happens which invalidates view layers the syncing will be postponed until the first usage. This will improve importing or adding many objects in a single operation/script. `BKE_view_layer_need_resync_tag` is used to tag the view layer to be out of sync. Before accessing `BKE_view_layer_active_base_get`, `BKE_view_layer_active_object_get`, `BKE_view_layer_active_collection` or `BKE_view_layer_object_bases` the caller should call `BKE_view_layer_synced_ensure`. Having two functions ensures that partial syncing could be added as smaller patches in the future. Tagging a view layer out of sync could be replaced with a partial sync. Eventually the number of full resyncs could be reduced. After all tagging has been replaced with partial syncs the ensure_sync could be phased out. This patch has been added to discuss the details and consequences of the current approach. For clarity the call to BKE_view_layer_ensure_sync is placed close to the getters. In the future this could be placed in more strategical places to reduce the number of calls or improve performance. Finding those strategical places isn't that clear. When multiple operations are grouped in a single script you might want to always check for resync. Some areas found that can be improved. This list isn't complete. These areas aren't addressed by this patch as these changes would be hard to detect to the reviewer. The idea is to add changes to these areas as a separate patch. It might be that the initial commit would reduce performance compared to master, but will be fixed by the additional patches. **Object duplication** During object duplication the syncing is temporarily disabled. With this patch this isn't useful as when disabled the view_layer is accessed to locate bases. This can be improved by first locating the source bases, then duplicate and sync and locate the new bases. Will be solved in a separate patch for clarity reasons ({D15886}). **Object add** `BKE_object_add` not only adds a new object, but also selects and activates the new base. This requires the view_layer to be resynced. Some callers reverse the selection and activation (See `get_new_constraint_target`). We should make the selection and activation optional. This would make it possible to add multiple objects without having to resync per object. **Postpone Activate Base** Setting the basact is done in many locations. They follow a rule as after an action find the base and set the basact. Finding the base could require a resync. The idea is to store in the view_layer the object which base will be set in the basact during the next sync, reducing the times resyncing needs to happen. Reviewed By: mont29 Maniphest Tasks: T73411 Differential Revision: https://developer.blender.org/D15885
2022-09-09Cleanup: spelling in commentsCampbell Barton
2022-09-08Cleanup: make meaning of base visibility flags more clearBrecht Van Lommel
Rename, add comments, and use flag in the depsgraph to ensure the logic matches. Differential Revision: https://developer.blender.org/D15883
2022-09-06GPU: remove 'GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR'Germano Cavalcante
The only difference between `GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR` and `GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR` is that in the vertex shader the 2D version uses `vec4(pos, 0.0, 1.0)` and the 3D version uses `vec4(pos, 1.0)`. But VBOs with 2D attributes work perfectly in shaders that use 3D attributes. Components not specified are filled with components from `vec4(0.0, 0.0, 0.0, 1.0)`. So there is no real benefit to having two different shader versions.
2022-09-05GPU: remove 'GPU_SHADER_2D_UNIFORM_COLOR'Germano Cavalcante
The only real difference between `GPU_SHADER_2D_UNIFORM_COLOR` and `GPU_SHADER_3D_UNIFORM_COLOR` is that in the vertex shader the 2D version uses `vec4(pos, 0.0, 1.0)` and the 3D version uses `vec4(pos, 1.0)`. But VBOs with 2D attributes work perfectly in shaders that use 3D attributes. Components not specified are filled with components from `vec4(0.0, 0.0, 0.0, 1.0)`. So there is no real benefit to having two different shader versions. This will simplify porting shaders to python as it will not be necessary to use a 3D and a 2D version of the shaders. In python the new name for '2D_UNIFORM_COLOR'' and '3D_UNIFORM_COLOR' is 'UNIFORM_COLOR', but the old names still work for backward compatibility. Differential Revision: https://developer.blender.org/D15836
2022-08-24Cleanup: Move outliner types to namespace, avoid C-style type definitionJulian Eisel
With C++ we should transition towards namespaces to avoid naming collisions. Having the namespace in place is the first step for that transition. Plus, the `typedef` isn't necessary for struct/class/enum definitions in C++, so avoid the verbosity it adds.
2022-08-19Outliner: Refactor how lazy-building of children is doneJulian Eisel
Makes the lazy-building (where children are only built when the parent isn't collapsed) more generic, so more display modes can use it. So far this was hardcoded for the "Data API" display mode. This will be used to work around a big performance issue with the Library Overrides Hierachies view in a complex production file, see following commit.
2022-08-16Merge branch 'blender-v3.3-release'Bastien Montagne
2022-08-16Fix T100375: Renaming items from the outliner does not update the despgraph.Bastien Montagne
Only object renaming was properly depsgraph-tagged, now all IDs (and their sub-data like bones etc.) should be properly handled.
2022-08-12Cleanup: repeated words in commentsCampbell Barton
2022-08-04Outliner: Use UI names and grouping for library overrides propertiesJulian Eisel
NOTE: This is committed to the 3.3 branch as decided by Bastien, Dalai and me. That is because these are important usability fixes/improvements to have for the LTS release. Part of T95802. Showing properties with an RNA path in the UI isn't very user friendly. Instead, represent the RNA path as a tree, merging together parts of the RNA path that are shared by multiple properties. Properties and "groups" (RNA structs/pointers) are now shown with their UI name and an icon if any. The actually overridden properties still show the Library Overrides icon. See the patch for screenshots. Also: When a RNA collection item, like a modifier or constraint was added via a library override, indicate that item and show all collection items in the list, since the complete list of items and their orders may be important context. Differential Revision: https://developer.blender.org/D15606
2022-08-04Outliner: Add generic label element typeJulian Eisel
No user visible changes expected. NOTE: This is committed to the 3.3 branch as part of D15606, which we decided should go to this release still (by Bastien, Dalai and me). That is because these are important usability fixes/improvements to have for the LTS release. We have a bunch of "base" element types, just to show a label element for grouping together other elements. There is no reason to have these tied to a case, just have a generic label type for this. It requires a string to display, and can display an icon too. The new element type isn't used yet, but will be in one of the following commits. Would be nice if the existing base elements can be replaced by this. Part of D15606.
2022-08-04Outliner: Use UI names and grouping for library overrides propertiesJulian Eisel
Part of T95802. Showing properties with an RNA path in the UI isn't very user friendly. Instead, represent the RNA path as a tree, merging together parts of the RNA path that are shared by multiple properties. Properties and "groups" (RNA structs/pointers) are now shown with their UI name and an icon if any. The actually overridden properties still show the Library Overrides icon. See the patch for screenshots. Also: When a RNA collection item, like a modifier or constraint was added via a library override, indicate that item and show all collection items in the list, since the complete list of items and their orders may be important context. Differential Revision: https://developer.blender.org/D15606
2022-08-04Outliner: Add generic label element typeJulian Eisel
No user visible changes expected. We have a bunch of "base" element types, just to show a label element for grouping together other elements. There is no reason to have these tied to a case, just have a generic label type for this. It requires a string to display, and can display an icon too. The new element type isn't used yet, but will be in one of the following commits. Would be nice if the existing base elements can be replaced by this. Part of D15606.
2022-07-29Cleanup: Replace reinterpret_cast<> with static_cast<> in UI codeJulian Eisel
2022-07-20IDManagement: Speedup ID unique name assignment by tracking used ↵Aras Pranckevicius
names/basenames/suffixes An implementation of T73412, roughly as outlined there: Track the names that are in use, as well as base names (before numeric suffix) plus a bit map for each base name, indicating which numeric suffixes are already used. This is done per-Main/Library, per-object-type. Timings (Windows, VS2022 Release build, AMD Ryzen 5950X): - Scene with 10k cubes, Shift+D to duplicate them all: 8.7s -> 1.9s. Name map memory usage for resulting 20k objects: 4.3MB. - Importing a 2.5GB .obj file of exported Blender 3.0 splash scene (24k objects), using the new C++ importer: 34.2s-> 22.0s. Name map memory usage for resulting scene: 8.6MB. - Importing Disney Moana USD scene (almost half a million objects): 56min -> 10min. Name map usage: ~100MB. Blender crashes later on when trying to render it, in the same place in both cases, but that's for another day. Reviewed By: Bastien Montagne Differential Revision: https://developer.blender.org/D14162
2022-05-26Outliner: Make use of new C++ based functional iteratorsJulian Eisel
(Not meant to cause user visible changes.) Makes use of the new iterators introduced in the previous commit. Some benefits: - Shorter, simpler, easier to read & understand - Deduplicates logic - Centralizes iteration logic, making it easier to replace tree storage (as planned), see previous commit. - Avoids having to pass (sub-)tree to iterate around (often redundant since it's just `SpaceOutliner.tree`, even though `SpaceOutliner` is already passed). - Function arguments that are only passed to the recursive call are recognized as unused (found and removed a few). Also does some general cleanups while refactoring the code for the iterators. Use `const`, use references (signals null is not expected), early-exit (see 16fd5fa656af), remove redundant arguments, etc.
2022-05-25Outliner: Fix warning icon not bubbling up correctly to collapsed parentJulian Eisel
Design is to have warnings in the sub-tree of a collapsed element show up next to the collapsed element. But if inside the collapsed element, there was a uncollapsed one containing yet another element with a warning, that warning wouldn't "bubble up" to the collapsed parent. Issue was that the warning lookup would only recurse into collapsed elements, rather than all elements inside of a collapsed element. While the actual fix for this could've been simpler, I decided to rework this code entirely. Recursively querying the warning message is now done separately from drawing the message once found, which makes the code easier to follow and implements the single responsibility principle better.
2022-05-25Outliner: Use general warning mechanics for library overridesJulian Eisel
Library overrides were basically using their own system to display warnings for tree elements, even though for other display elements we have a more general solution. With the previous commit this has been generalized further and made trivial to extend.
2022-05-25Outliner: Refactor element warning and mode column queryingJulian Eisel
Uses a inheritance based approach for querying warning of tree elements and the mode column support of display modes. For the warnings, tree elements can override the `AbstractTreeElement::getWarning()` method and return a warning string. The UI will draw the warning column with warning icons. This makes the warning column more generalized and easier to extend to more use-cases. E.g. library override elements will use this after a followup commit. To support mode toggles a display mode can now just return true in the `AbstractTreeDisplay::supportsModeColumn()` method. This makes it trivial to add mode columns to other display modes, and less error prone because there's no need to hunt down a bunch of display mode checks in different places.
2022-05-15Cleanup: Clang tidyHans Goudey
2022-05-11Merge branch 'blender-v3.2-release'Bastien Montagne
2022-05-11Fix (unreported) crash in Outliner Overrides Properties view in invalid cases.Bastien Montagne
We cannot try to get RNA info when the rna path of an override property is invalid.
2022-05-05Outliner: add icons for nodegroupsPhilipp Oeser
These were missing in "Blender File" view. before {F13053175} after {F13053176} Differential Revision: https://developer.blender.org/D14859
2022-04-26Outliner: Add icon column to toggle if library overrides are editableJulian Eisel
Adds a column to the right in the Library Overrides Hierarchies view mode to toggle editability of library overrides. Note that making a library override non-editable currently involves clearing all overridden properties. This is an arguable design choice, we should probably at least warn the user before doing this. Part of T95802. Reviewed by: Bastien Montagne Differential Revision: https://developer.blender.org/D14653
2022-04-05Curves: fix edit mode detectionKévin Dietrich
This adds missing cases to detect edit mode for Curves objects. Unlike other object types, Curves do not have specific edit data, rather we edit the original data directly, and rely on `Object.mode`. For this, `BKE_object_data_is_in_editmode` had to be modified to take a pointer to the object. This affects two places: the outliner and the dependency graph. For the former place, the object pointer is readily available, and we can use it. For the latter, the object pointer is not available, however since it is used to update edit mode pointers, and since Curves do not have such data, we can safely pass null to the function here. This also fixes the assertion failure that happens when closing a file in edit mode. Differential Revision: https://developer.blender.org/D14330
2022-03-31Outliner: New "Hierarchies" view mode for Library OverridesJulian Eisel
Adds a dropdown for the Library Overrides display mode that lets users choose between a "Properties" and a "Hierachies" view mode. The former is what was previously there (a mode that displays all overridden properties with buttons to edit the values), the latter is new. It displays the hierarchical relationships between library overridden data-blocks. E.g. to override the mesh of an object inside a linked collection, the entire collection > object > mesh hierarchy needs to be overridden (whereby the former two will be automatically overridden using system overrides). The Hierarchies mode will also show the override hierarchies of data-blocks that were linked and are overridden in the source file. This information is useful to have, especially for debugging scenes. Part of T95802. Differential Revision: https://developer.blender.org/D14440 Reviewed by: Bastien Montagne
2022-03-29LibOverride: Massive edits to 'editable' IDs checks in editors code.Bastien Montagne
Add new `BKE_id_is_editable` helper in `BKE_lib_id.h`, that supercedes previous check (simple `ID_IS_LINKED()` macro) for many editing cases. This allows to also take into account 'system override' (aka non-editable override) case. Ref: {T95707}.
2022-03-24Outliner: Don't draw library overrides indicator for override buttonsJulian Eisel
All the buttons in the Library Overrides display mode would be shown in cyan, indicating that they are library overrides. Given that this is solely what this display mode is about, the indicator is just redundant, confusing (why are the buttons purple?) and looks weird. Part of T95802. Reviewed by: Bastien Montagne Differential Revision: https://developer.blender.org/D14416
2022-03-22Tiny visual fixes/tweaks for new library override buttons in OutlinerJulian Eisel
Tweaks: - Increase horizontal padding for the buttons from 1 point to 2, looked like an unintentional placement error before. Fixes: - Missing horizontal padding for array buttons - Small gap between separator line and right column when using a high interface scale - Properly center buttons vertically.
2022-03-15Outliner: Display buttons to edit library override propertiesJulian Eisel
As proposed in T95802, this adds buttons to a new column on the right to modify the override in the Library Override display mode. Some further usability improvements are planned. E.g. this does not yet expand collections (modifiers, constraints, etc) nicely or group modified properties of a modifier together. Vector properties with more than 3 items or matrices aren't displayed nicely yet, they are just squeezed into the column. If this actually becomes a problem there are some ideas to address this. Differential Revision: https://developer.blender.org/D14268
2022-03-14RNA: Generate property declerations header, solving msg-bus C++ incompatibilityJulian Eisel
Lets `makesrna` generate a `RNA_prototypes.h` header with declarations for all RNA properties. This can be included in regular source files when needing to reference RNA properties statically. This solves an issue on MSVC with adding such declarations in functions, like we used to do. See 800fc1736748. Removes any such declarations and the related FIXME comments. Reviewed By: campbellbarton, LazyDodo, brecht Differential Revision: https://developer.blender.org/D13837
2022-03-09Cleanup: Deduplicate Outliner item culling logicJulian Eisel
For whatever reason the "in-view" check was using 2x the element height. From what I can see this isn't needed, so I'll remove it in a follow-up commit.
2022-03-08Cleanup: Clang tidyHans Goudey
2022-03-04Cleanup: use doxy-sections in outliner_draw.ccCampbell Barton
Also remove outdated comment.
2022-03-03Outliner: Display respective data-block icon in library overrides modeJulian Eisel
Just showing the library override icon for every item doesn't add much information, it's just redundant. Displaying the data-block type icon on the other hand can be useful. Differential Revision: https://developer.blender.org/D14208
2022-03-02UI: Enable the outliner to use the correct icon for each curve subtypeEthan Hall
This patch enables enables the outliner to use the correct icon for each of the curve subtypes (Curve/Surface/Font). Differential Revision: https://developer.blender.org/D14093 Reviewed by: Julian Eisel
2022-02-25Cleanup: use flags for wmEvent modifier keysCampbell Barton
Using flags makes checking multiple modifiers at once more convenient and avoids macros/functions such as IS_EVENT_MOD & WM_event_modifier_flag which have been removed. It also simplifies checking if modifier keys have changed.
2022-02-18Cleanup: Rename original curve object type enumHans Goudey
This commit renames enums related the "Curve" object type and ID type to add `_LEGACY` to the end. The idea is to make our aspirations clearer in the code and to avoid ambiguities between `CURVE` and `CURVES`. Ref T95355 To summarize for the record, the plans are: - In the short/medium term, replace the `Curve` object data type with `Curves` - In the longer term (no immediate plans), use a proper data block for 3D text and surfaces. Differential Revision: https://developer.blender.org/D14114
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069