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
2021-11-19Cleanup: Add an empty() method to RNA's CollectionRef classJesse Yurkovich
The existing RNA CollectionRef class only offers a length() operation which is sometimes used for checking if the collection is empty. This is inefficient for certain collection types which do not have a native length member; the entire list is iterated to find the count. This patch creates an explicit empty() method to be used in such cases for better semantics. Additionally, many collection types will behave more efficiently when using the new method instead of checking length. Making use of the new method will follow separately. Differential Revision: https://developer.blender.org/D12314
2021-11-04Fix T91986: incorrect syncing of geometry instancesJacques Lucke
The issue was that some geometries were not synced again even when they changed. This commit adds a map that keeps track of the geometries that need to be updated when an object has changed. Differential Revision: https://developer.blender.org/D13020
2021-08-17RNA: de-duplicate enums in generated sourceCampbell Barton
Reuse existing enums instead of expanding them since it bloats the binary. The icons enum for example contains over 900 items and was being expanded 17 times (once for each function that takes an icon argument). Similar with the event type enum which contains over 200 items and was duplicated 7 times. makesrna.c now matches enum definitions from declarations in RNA_enum_items.h, using their identifiers when found. The overall space saving on my system is 776kb (tested with a stripped release build). Reviewed By: brecht Ref D12245
2021-07-05Cleanup: spelling, punctuationCampbell Barton
2021-07-05Cleanup: spelling in commentsCampbell Barton
2021-06-24Cleanup: comment blocks, trailing space in commentsCampbell Barton
2021-06-22Cleanup: Spelling MistakesLeon Zandman
This patch fixes many minor spelling mistakes, all in comments or console output. Mostly contractions like can't, won't, don't, its/it's, etc. Differential Revision: https://developer.blender.org/D11663 Reviewed by Harley Acheson
2021-06-10Add unit for time stored in secondsSergey Sharybin
Allows to define properties which will have proper units displayed in the interface. The internal storage is expected to be seconds (which matches how other times are stored in Blender). Is not immediately used in Blender, but is required for the upcoming feature in Cycles X (D11526) The naming does not sound very exciting, but can't think of anything better either. For test it probably easiest to define FloatProperty with subdtype of TIME_ABSOLUTE. Differential Revision: https://developer.blender.org/D11532
2021-05-20Cleanup: rename incorrectly named experimental feature flagJacques Lucke
The `WITH_GEOMETRY_NODES` flag does not make sense anymore, it is just protecting the `Simulation` data block that is not used currently.
2021-05-17UI: add non-linear slider supportHenrik Dick
This patch introduces non linear sliders. That means, that the movement of the mouse doesn't map linearly to the value of the slider. The following changes have been made. - Free logarithmic sliders with maximum range of (`0 <= x < inf`) - Logarithmic sliders with correct value indication bar. - Free cubic sliders with maximum range of (`-inf < x < inf`) - Cubic sliders with correct value indication bar. Cubic mapping has been added as well, because it's used for brush sizes in other applications (Krita for e.g.). To make a slider have a different scale type use following line in RNA: `RNA_def_property_ui_scale_type(prop, PROP_SCALE_LOGARITHMIC);` or: `RNA_def_property_ui_scale_type(prop, PROP_SCALE_CUBIC);` Test the precision, step size and soft-min if you change the scale type of a property as it will feel very different and may need tweaking. Ref D9074
2021-03-23RNA: support automatically mapping string property to char pointerJacques Lucke
The goal of this patch is to remove the boilerplate code required to get a string property that maps to an allocated char pointer in dna. Previously, one to to provide three callbacks, all of which are not necessary anymore for a simple string property. Currently, when an empty string is assigned, the `set` function will always allocate it as well, instead of assigning `NULL` to the pointer. Some structs might support `NULL` while others don't, so this is the safer option for now. Differential Revision: https://developer.blender.org/D10773
2021-03-16Fix T86332: Error using lambda in annotations in Python 3.10Campbell Barton
Callbacks used in `bpy.props` didn't hold a references to the functions they used. While this has been the case since early 2.5x it didn't cause any problems as long as the class held a reference. With Python 3.10 or when using `from __future__ import annotations`, the annotations are no longer owned by the class once evaluated. Resolve this by holding a reference in the module, which now supports traverse & clear callbacks so the objects are visible to Python's garbage collector. Also refactor storage of Python data, moving from an array into a struct.
2021-03-05Cleanup: Rename func occurences to _fnSebastián Barschkis
Use _fn as a suffix for callbacks.
2021-01-15RNA: support range-based for loops in C++ apiJacques Lucke
Cycles has a lot of code like this: ```lang=c++ BL::Object::modifiers_iterator b_mod; for (b_ob->modifiers.begin(b_mod); b_mod != b_ob->modifiers.end(); ++b_mod) { ``` Range-based for loops allow us to simplify this to: ```lang=c++ for (BL::Modifier &b_mod : b_ob->modifiers) { ``` In order to support this, a collection (such as `b_ob->modifiers`) must have a `begin()` and `end()` method, that take no parameters and return an iterator. The `end` method already exists, but the `begin` method takes the iterator as argument currently. This patch adds a new `begin` method that returns the iterator. The old `begin` method is still available to avoid breaking existing code. My assumption is that the old `begin` method took the iterator as parameter so that the iterator is not copied or moved, i.e. its memory address is stable and the destructor is only called once. I'm not sure if both of these requirements are really necessary to ensure that the iterators work correctly. To be on the safe side, I deleted the copy/move constructors/assignment operators. Since C++17 there is "guaranteed copy elision" which basically allows us to return a non-copyable and non-movable type from a function. To make that work, I had to add a new constructor to `CollectionIterator` that calls `begin` on itself. Reviewers: brecht Differential Revision: https://developer.blender.org/D10120
2021-01-04Cleanup: add NULL check for filename argument which could be NULLCampbell Barton
While it's never NULL at the moment, checks elsewhere in this function support passing in a NULL filename, so keep this working as intended in case RNAProcessItem.filename is NULL in the future.
2020-12-15Asset System: Data-block asset metadata storage, reading and APIJulian Eisel
Asset metadata is what turns a regular data-block into an asset. It is a small data-structure, but a key part of the technical design of the asset system. The design foresees that asset data-blocks store an `ID.asset_data` pointer of type `AssetMetaData`. This data **must not** have dependencies on other data-blocks or data-block data, it must be an independent unit. That way we can read asset-metadata from .blends without reading anything else from the file. The Asset Browser will use this metadata (together with the data-block name, preview and file path) to represent assets in the file list. Includes: * New `ID.asset_data` for asset metadata. * Asset tags, description and custom properties. * BKE code to manage asset meta-data and asset tags. * Code to read asset data from files, without reading IDs. * RNA for asset metadata (including tags) Part of the first Asset Browser milestone. Check the #asset_browser_milestone_1 project milestone on developer.blender.org. Differential Revision: https://developer.blender.org/D9716 Reviewed by: Bastien Montagne, Brecht Van Lommel
2020-12-15Move Point Cloud object back to Experimental FeaturesDalai Felinto
The geometry-nodes features no longer depend on the point cloud object. Therefore the point cloud object, although important in the future, can be postponed until we have render and edit mode fully working. This reverts commits: * ea74ed5a7a2031b614d401e394f2e0146fc90155. * dc614c68ef2c8ca8b076a000974b5a20a4145a42.
2020-12-02Cleanup: remove all of "#ifdef WITH_POINT_CLOUD"Dalai Felinto
Since Point Cloud was removed from experimental this is no longer needed.
2020-11-07Cleanup: Clang-tidy else-after-returnAnkit Meel
2020-11-06Cleanup: use STR_ELEM macroCampbell Barton
2020-11-06Cleanup: clang-formatCampbell Barton
Missed this last commit.
2020-11-06Cleanup: use ELEM macroCampbell Barton
2020-10-21Preferences: separate feature flags for geometry nodes and point cloud typeJacques Lucke
Those two features are not directly related and one might be activated in master earlier than the other. WITH_PARTICLE_NODES was removed, because we continue the project under the name "Geometry Nodes".
2020-10-20Cleanup: makesrna, Clang-tidy else-after-return-fixes.Ankit Meel
It got left out of {rBc04088fed1b8faea6b2928bb5e09ab3}. No functional change.
2020-10-19Spelling: Then Versus ThanHarley Acheson
Corrects incorrect usages of the words 'then' and 'than'. Differential Revision: https://developer.blender.org/D9246 Reviewed by Campbell Barton
2020-09-19Cleanup: use parenthesis for if statements in macrosCampbell Barton
2020-09-09Geometry: add .attributes in the Python API for Mesh, Hair and Point CloudBrecht Van Lommel
This puts all generic float/int/vector/color/string geometry attributes in a new .attributes property. For meshes it provides a more general API for existing attributes, for point clouds attributes will be used as an essential part of particle nodes. This patch was implemented by @lichtwerk, with further changes by me. It's still a work in progress, but posting here to show what is going on and for early feedback. Ref T76659 Differential Revision: https://developer.blender.org/D8200
2020-09-07UI: Add temperature unitsHans Goudey
Based on the original patch by Vaishnav S (@padthai), this adds support for temperature units. Initially supported units are Celsius, Kelvin, and Fahrenheit. The units aren't used anywhere with this commit. Those changes should happen in separate patches by adding PROP_TEMPERATURE to RNA property definitions. But it should be ensured that the various solvers and simulations actually properly use real units. The complexity of some of the changes comes from the fact that these units have offsets from each other as well as coefficients. This also makes the implementation in the current unit system troublesome. For example, entering 0C evaluates correctly to 273K, but 0C + 0C doubles that result, because each unit value is evaluated separately. This is quite hard to solve in the general case with Blender's current unit system, though, so it is not handled in this commit. Differential Revision: https://developer.blender.org/D4401
2020-08-19Cleanup: compiler warningsBrecht Van Lommel
2020-08-18Merge remote-tracking branch 'origin/blender-v2.90-release'Dalai Felinto
2020-08-18Remove (ifdef) RNA for simulation, point cloud and particlesDalai Felinto
For 2.90 release this should not be exposed in the RNA API. In master this needs to be ON by default, that's all. Differential Revision: https://developer.blender.org/D8589
2020-08-08Cleanup: replace sizeof division with ARRAY_SIZE macroCampbell Barton
2020-08-07Cleanup: declare arrays arrays where possibleCampbell Barton
2020-08-06Merge branch 'blender-v2.90-release' into masterCampbell Barton
2020-08-06Cleanup: avoid debug-only includes for BLI_assert.hCampbell Barton
Having includes in debug builds makes it possible to accidentally break release builds. Avoid this by moving calls to other modules out of BLI_assert.h into BLI_assert.c
2020-08-01Cleanup: use term init instead of initialize/initialiseCampbell Barton
The abbreviation 'init' is brief, unambiguous and already used in thousands of places, also initialize is often accidentally written with British spelling.
2020-07-24Allocator: make leak detection work with static variablesJacques Lucke
When definining static variables that own memory, you should use the "construct on first use" idiom. Otherwise, you'll get a warning when Blender exits. More details are provided in D8354. Differential Revision: https://developer.blender.org/D8354
2020-07-03Clang-tidy: Enable braces-around-statements warningSebastian Parborg
2020-06-29RNA: Add a way to prevent automatic addition of 'no ownership' flag for ID ↵Bastien Montagne
pointer properties. Since makesrna runs after all properties have been defined, we have to remember with a new internal flag when we explicitely disable the 'PROP_PTR_NO_OWNERSHIP' flag for a property. Otherwise there was no way to do so for ID pointer properties...
2020-06-23Preferences: New experimental settings for particle system and hairJacques Lucke
This replaces the cmake options `WITH_NEW_OBJECT_TYPES` and `WITH_NEW_SIMULATION_TYPE` with two experimental userpref settings: * `use_new_particle_system`: Enables the point cloud type and the simulation editor. * `use_new_hair_type`: Only displays the add-operator in the add menu for now. Note, in the current state you can't do anything productive with the new particle system or the new hair type. Features will be added step by step in the upcoming weeks and months. Reviewers: brecht Differential Revision: https://developer.blender.org/D8096
2020-06-02Turn most flags in BlenderDefRNA into proper bool.Bastien Montagne
2020-05-26Merge branch 'blender-v2.83-release'Philipp Oeser
2020-05-25Fix T77009: texture baking crash on WindowsBrecht Van Lommel
Only happens in master, but DynamicArray implementation is wrong also in 2.83. Thanks to Jesse Y and Ray Molenkamp for investigating.
2020-05-22RNA: Make enum properties compatible with raw access.Bastien Montagne
This will allow to use foreach_get/set on enums of RNA collection items, which can save a lot of time in some cases (see incoming FBX updates).
2020-04-20Simulations: Add new simulation data blockJacques Lucke
This data block will be the container for simulation node trees. It will be used for the new particle node system (T73324). The new data block has the type `ID_SIM`. It is not visible to users and other developers by default yet. To enable it, activate the cmake option `WITH_NEW_SIMULATION_TYPE`. New simulation data blocks can be created by running `bpy.data.simulations.new("name")`. Reviewers: brecht Differential Revision: https://developer.blender.org/D7225
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-18Objects: add Volume object type, and prototypes for Hair and PointCloudBrecht Van Lommel
Only the volume object is exposed in the user interface. It is based on OpenVDB internally. Drawing and rendering code will follow in another commit. https://wiki.blender.org/wiki/Source/Objects/Volume https://wiki.blender.org/wiki/Reference/Release_Notes/2.83/Volumes Hair and PointCloud object types are hidden behind a WITH_NEW_OBJECT_TYPES build option. These are unfinished, and included only to make it easier to cooperate on development in the future and avoid tricky merges. https://wiki.blender.org/wiki/Source/Objects/New_Object_Types Ref T73201, T68981 Differential Revision: https://developer.blender.org/D6945
2020-03-17VR: Initial Virtual Reality support - Milestone 1, Scene InspectionJulian Eisel
NOTE: While most of the milestone 1 goals are there, a few smaller features and improvements are still to be done. Big picture of this milestone: Initial, OpenXR-based virtual reality support for users and foundation for advanced use cases. Maniphest Task: https://developer.blender.org/T71347 The tasks contains more information about this milestone. To be clear: This is not a feature rich VR implementation, it's focused on the initial scene inspection use case. We intentionally focused on that, further features like controller support are part of the next milestone. - How to use? Instructions on how to use this are here: https://wiki.blender.org/wiki/User:Severin/GSoC-2019/How_to_Test These will be updated and moved to a more official place (likely the manual) soon. Currently Windows Mixed Reality and Oculus devices are usable. Valve/HTC headsets don't support the OpenXR standard yet and hence, do not work with this implementation. --------------- This is the C-side implementation of the features added for initial VR support as per milestone 1. A "VR Scene Inspection" Add-on will be committed separately, to expose the VR functionality in the UI. It also adds some further features for milestone 1, namely a landmarking system (stored view locations in the VR space) Main additions/features: * Support for rendering viewports to an HMD, with good performance. * Option to sync the VR view perspective with a fully interactive, regular 3D View (VR-Mirror). * Option to disable positional tracking. Keeps the current position (calculated based on the VR eye center pose) when enabled while a VR session is running. * Some regular viewport settings for the VR view * RNA/Python-API to query and set VR session state information. * WM-XR: Layer tying Ghost-XR to the Blender specific APIs/data * wmSurface API: drawable, non-window container (manages Ghost-OpenGL and GPU context) * DNA/RNA for management of VR session settings * `--debug-xr` and `--debug-xr-time` commandline options * Utility batch & config file for using the Oculus runtime on Windows. * Most VR data is runtime only. The exception is user settings which are saved to files (`XrSessionSettings`). * VR support can be disabled through the `WITH_XR_OPENXR` compiler flag. For architecture and code documentation, see https://wiki.blender.org/wiki/Source/Interface/XR. --------------- A few thank you's: * A huge shoutout to Ray Molenkamp for his help during the project - it would have not been that successful without him! * Sebastian Koenig and Simeon Conzendorf for testing and feedback! * The reviewers, especially Brecht Van Lommel! * Dalai Felinto for pushing and managing me to get this done ;) * The OpenXR working group for providing an open standard. I think we're the first bigger application to adopt OpenXR. Congratulations to them and ourselves :) This project started as a Google Summer of Code 2019 project - "Core Support of Virtual Reality Headsets through OpenXR" (see https://wiki.blender.org/wiki/User:Severin/GSoC-2019/). Some further information, including ideas for further improvements can be found in the final GSoC report: https://wiki.blender.org/wiki/User:Severin/GSoC-2019/Final_Report Differential Revisions: D6193, D7098 Reviewed by: Brecht Van Lommel, Jeroen Bakker
2020-03-17Cleanup: Fix warnings about function signature of register passRay Molenkamp
RE_engine_register_pass is sometimes in the headers with type as an integer parameter, sometimes as eNodeSocketDatatype. This caused warnings, the root cause was makesrna was not able to generate the proper type for enums and defaulted to int. makesrna has been extended with the RNA_def_property_enum_native_type that allows telling makesrna the native type of an enum, if set it will be used otherwise it will still fall back to int. Differential Revision: https://developer.blender.org/D7117 Reviewed By: brecht
2020-03-15Cleanup: add NULL check for RNA filename argumentCampbell Barton
Currently some of the code supports a NULL filename, add the NULL check so RNAProcessItem's with a NULL filename don't crash in the future.