November 11, 2020, 22:08 (GMT) |
Cleanup: Remove SSE math optimization i386 macOS builds We haven't supported 32bit mac builds for a while so this should be safe to remove. Reviewed By: #platform_macos, brecht Differential Revision: https://developer.blender.org/D9489 |
November 11, 2020, 21:37 (GMT) |
Merge branch 'blender-v2.91-release' |
November 11, 2020, 21:24 (GMT) |
Fix T80475, bad bevel: side vertex in bad plane in some cases. Needed a better normal to for plane to offset into when there are non in-plane edges between two beveled edges. It was using the vertex normal, which is just wrong. Differential Revision: https://developer.blender.org/D9508 |
November 11, 2020, 19:58 (GMT) |
UI: Tooltips: dont add period to labels These are generally only one or two word phrases and are not sentences. This change slightly improves readability. Note, the check when display labels: ``` Tip Label (only for buttons not already showing the label). ``` Could be improved here because there are a lot of false positives. |
November 11, 2020, 18:09 (GMT) |
Cleanup: Split header for Outliner tree building into C and C++ headers See https://developer.blender.org/D9499. It's odd to include a C++ header (".hh") in C code, we should avoid that. All of the Outliner code should be moved to C++, I don't expect this C header to stay for long. |
November 11, 2020, 18:09 (GMT) |
Cleanup: Rename Outliner "tree-view" types to "tree-display" & update comments See https://developer.blender.org/D9499. "View" leads to weird names like `TreeViewViewLayer` and after all they are specific to what we call a "display mode", so "display" is more appropriate. Also add, update and correct comments. |
November 11, 2020, 18:09 (GMT) |
Cleanup: Follow C++ code style for new Outliner building code See https://developer.blender.org/D9499. * Use C++17 nested namespaces. * Use `_` suffix rather than prefix for private member variables. Also: Simplify code visually in `tree_view.cc` with `using namespace`. |
November 11, 2020, 18:09 (GMT) |
Cleanup: General cleanup of Outliner Blender File display mode building See https://developer.blender.org/D9499. * Turn functions into member functions (makes API for a type more obvious & local, allows implicitly sharing data through member variables, enables order independend definition of functions, allows more natural language for function names because of the obvious context). * Prefer references over pointers for passing by reference (makes clear that NULL is not a valid value and that the current scope is not the owner). * Reduce indentation levels, use `continue` in loops to ensure preconditions are met. * Add asserts for sanity checks. |
November 11, 2020, 18:08 (GMT) |
UI Code Quality: Convert Outliner Blender File mode to new tree buiding design See https://developer.blender.org/D9499. Also: * Add `space_outliner/tree/common.cc` for functions shared between display modes. * I had to add a cast to `ListBaseWrapper` to make it work with ID lists. * Cleanup: Remove internal `Tree` alias for `ListBase`. That was more confusing than helpful. |
November 11, 2020, 18:08 (GMT) |
Cleanup: Put Outliner C++ namespace into `blender::ed` namespace, add comments See https://developer.blender.org/D9499. Also remove unnecessary forward declaration. |
November 11, 2020, 18:08 (GMT) |
Fix possible null-pointer dereference in new Outliner tree building code |
November 11, 2020, 18:08 (GMT) |
Cleanup: Remove redundant parameter from new Outliner tree building code See https://developer.blender.org/D9499. |
November 11, 2020, 18:08 (GMT) |
Cleanup: Comments and style improvements for new Outliner C++ code See https://developer.blender.org/D9499. * Add comments to explain the design ideas better. * Follow code style guide for class layout. * Avoid uninitialized value after construction (general good practice). |
November 11, 2020, 18:08 (GMT) |
UI Code Quality: Use C++ data-structures for Outliner object hierarchy building See https://developer.blender.org/D9499. * Use `blender::Map` over `GHash` * Use `blender::Vector` over allocated `ListBase *` Benefits: * Significantly reduces the amount of heap allocations in large trees (e.g. from O(n) to O(log(n)), where n is number of objects). * Higher type safety (no `void *`, virtually no casts). * More optimized (e.g. small buffer optimization). * More practicable, const-correct APIs with well-defined exception behavior. Code generally becomes more readable (less lines of code, less boilerplate, more logic-focused APIs because of greater language flexibility). |
November 11, 2020, 18:07 (GMT) |
UI Code Quality: General refactor of Outliner View Layer display mode creation See https://developer.blender.org/D9499. * Turn functions into member functions (makes API for a type more obvious & local, allows implicitly sharing data through member variables, enables order independend definition of functions, allows more natural language for function names because of the obvious context). * Move important variables to classes rather than passing around all the time (shorter, more task-focused code, localizes important data names). * Add helper class for adding object children sub-trees (smaller, more focused units are easier to reason about, have higher coherence, better testability, can manage own resources easily with RAII). * Use C++ iterators over C-macros (arguably more readable, less macros is generally preferred) * Add doxygen groups (visually emphasizes the coherence of code sections, provide place for higher level comments on sections). * Prefer references over pointers for passing by reference (makes clear that NULL is not a valid value and that the current scope is not the owner). |
November 11, 2020, 17:51 (GMT) |
UI Code Quality: Start refactoring Outliner tree building (using C++) This introduces a new C++ abstraction "tree-display" (in this commit named tree-view, renamed in a followup) to help constructing and managing the tree for the different display types (View Layer, Scene, Blender file, etc.). See https://developer.blender.org/D9499 for more context. Other developers approved this rather significantly different design approach there. ---- Motivation General problems with current design: * The Outliner tree building code is messy and hard to follow. * Hard-coded display mode checks are scattered over many places. * Data is passed around in rather unsafe ways (e.g. lots of `void *`). * There are no individually testable units. * Data-structure use is inefficient. The current Outliner code needs quite some untangling, the tree building seems like a good place to start. This and the followup commits tackle that. ---- Design Idea Idea is to have an abstract base class (`AbstractTreeDisplay`), and then sub-classes with the implementation for each display type (e.g. `TreeDisplayViewLayer`, `TreeDisplayDataAPI`, etc). The tree-display is kept alive until tree-rebuild as runtime data of the space, so that further queries based on the display type can be executed (e.g. "does the display support selection syncing?", "does it support restriction toggle columns?", etc.). New files are in a new `space_outliner/tree` sub-directory. With the new design, display modes become proper units, making them more maintainable, safer and testable. It should also be easier now to add new display modes. |
November 11, 2020, 17:41 (GMT) |
fix crash when Group Output is not connected |
November 11, 2020, 17:36 (GMT) |
Fix T82622: detect link cycles |
November 11, 2020, 17:03 (GMT) |
Fix T82616: crash when using vector math node |
November 11, 2020, 16:56 (GMT) |
apply changes and fixes from optimization branch |
|
|
|


Master Commits
MiikaHweb | 2003-2021