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-12-25Cleanup: use new c++ guarded allocator APIAaron Carlisle
API added in rBa3ad5abf2fe85d623f9e78fefc34e27bdc14632e
2021-12-21Cleanup: Clang tidy, restore alphabetical sortingHans Goudey
2021-12-21Nodes: refactor node tree update handlingJacques Lucke
Goals of this refactor: * More unified approach to updating everything that needs to be updated after a change in a node tree. * The updates should happen in the correct order and quadratic or worse algorithms should be avoided. * Improve detection of changes to the output to avoid tagging the depsgraph when it's not necessary. * Move towards a more declarative style of defining nodes by having a more centralized update procedure. The refactor consists of two main parts: * Node tree tagging and update refactor. * Generally, when changes are done to a node tree, it is tagged dirty until a global update function is called that updates everything in the correct order. * The tagging is more fine-grained compared to before, to allow for more precise depsgraph update tagging. * Depsgraph changes. * The shading specific depsgraph node for node trees as been removed. * Instead, there is a new `NTREE_OUTPUT` depsgrap node, which is only tagged when the output of the node tree changed (e.g. the Group Output or Material Output node). * The copy-on-write relation from node trees to the data block they are embedded in is now non-flushing. This avoids e.g. triggering a material update after the shader node tree changed in unrelated ways. Instead the material has a flushing relation to the new `NTREE_OUTPUT` node now. * The depsgraph no longer reports data block changes through to cycles through `Depsgraph.updates` when only the node tree changed in ways that do not affect the output. Avoiding unnecessary updates seems to work well for geometry nodes and cycles. The situation is a bit worse when there are drivers on the node tree, but that could potentially be improved separately in the future. Avoiding updates in eevee and the compositor is more tricky, but also less urgent. * Eevee updates are triggered by calling `DRW_notify_view_update` in `ED_render_view3d_update` indirectly from `DEG_editors_update`. * Compositor updates are triggered by `ED_node_composite_job` in `node_area_refresh`. This is triggered by calling `ED_area_tag_refresh` in `node_area_listener`. Removing updates always has the risk of breaking some dependency that no one was aware of. It's not unlikely that this will happen here as well. Adding back missing updates should be quite a bit easier than getting rid of unnecessary updates though. Differential Revision: https://developer.blender.org/D13246
2021-12-13Cleanup: use "filepath" term for Main, BlendFileData & FileGlobalCampbell Barton
Use "filepath" which is the current convention for naming full paths. - Main use "name" which isn't obviously a file path. - BlendFileData & FileGlobal used "filename" which is often used for the name component of a path (without the directory).
2021-12-10Cleanup: move public doc-strings into headers for various API'sCampbell Barton
Some doc-strings were skipped because of blank-lines between the doc-string and the symbol and needed to be moved manually. - Added space below non doc-string comments to make it clear these aren't comments for the symbols directly below them. - Use doxy sections for some headers. Ref T92709
2021-12-10Cleanup: spelling in commentsCampbell Barton
2021-12-09Cleanup: move public doc-strings into headers for 'io/usd'Campbell Barton
Ref T92709
2021-12-09Cleanup: move public doc-strings into headers for 'io/alembic'Campbell Barton
Ref T92709
2021-12-09Cleanup: move public doc-strings into headers for 'io/collada'Campbell Barton
Ref T92709
2021-12-09Cleanup: move public doc-strings into headers for 'io/gpencil'Campbell Barton
Ref T92709
2021-12-08Cleanup: Silence clang-tidy warnings.Jeroen Bakker
2021-12-08Cleanup: Clang-Tidy modernize-redundant-void-argAaron Carlisle
2021-12-02Cleanup: spelling in commentsCampbell Barton
2021-12-02Cleanup: FIx build with USD after recent refactorAaron Carlisle
rB218360a89217f4e8321319035bf4d9ff97fb2658 missed a couple renames in USD code paths.
2021-12-01Fix T92561: unstable particle distribution with Alembic filesKévin Dietrich
When enabling or disabling a Mesh Sequence Cache modifier of an Object with a hair particle system, the hair would switch positions. This is caused because original coordinates in Blender are expected to be normalized, and toggling the modifier would cause the usage of different orco layers: one that is normalized, and the other which isn't. This bug exposes a few related issues: - if the Alembic file did not have orco data, `MOD_deform_mesh_eval_get`, used by the particle system modifier, would add an orco layer without normalization - `MOD_deform_mesh_eval_get` would also ignore the presence of an orco layer (e.g. one that could have been read from Alembic) - if the Alembic file did have orco data, the data would be read unnormalized To fix those various issues, original coordinates are normalized when read from Alembic and unnormalized when written to Alembic; and a new utility function `BKE_mesh_orco_ensure` is added to add a normalized orco layer if none exists on the mesh already, this function derives from the code used in the particle system. Reviewed By: brecht Maniphest Tasks: T92561 Differential Revision: https://developer.blender.org/D13306
2021-11-19Cleanup: fix typos in comments and docsBrecht Van Lommel
Contributed by luzpaz. Differential Revision: https://developer.blender.org/D13264
2021-11-16Merge branch 'blender-v3.0-release'Philipp Oeser
2021-11-16Fix T93066: Alembic export ignores Mantaflow particlesPhilipp Oeser
`ABCPointsWriter::is_supported` already checked for valid particle system types (liquid, spray, foam, bubbles, ...). `AbstractHierarchyIterator::make_writers_particle_systems` did not create a writer for these though, so now bring these in line and also create writers for these.
2021-11-09Alembic: Allow exporting of animated vertex colorsCody Winchester
Allow exporting of animated vertex colors to Alembic. The changes are made to be in line with the way the UV Maps are written. Each vertex color gets a OC4fGeomParam created and mapped into the CDStreamConfig to avoid recreating the Param on each frame. The time sample index is also stored in the config now and set onto the UV and Vertex Color params each frame. Without this the exports would get inconsistent timing results where animated UV maps and Vertex Colors were not playing back at the original speed. Reviewed By: sybren Maniphest Tasks: T88074 Differential Revision: https://developer.blender.org/D11278
2021-11-08GPencil: New option to export PDF full sceneAntonio Vazquez
This new mode export all frames of the scene. Reviewed By: pepeland Differential Revision: https://developer.blender.org/D13055
2021-11-08Cleanup: avoid error prone struct declarations in C++Campbell Barton
Reference struct members by name instead relying on their order. This also simplifies moving back to named members when all compilers we use support them.
2021-10-20Cleanup: use elem macrosCampbell Barton
2021-10-12Cleanup: spelling in commentsCampbell Barton
2021-10-06Cleanup: spelling in commentsCampbell Barton
2021-10-06Cleanup: missing verb in commentKévin Dietrich
2021-10-06Fix crash when reading non standard Alembic velocity attribute typeKévin Dietrich
Some software may export velocity as a different type than 3D vectors (e.g. as colors or flat arrays or floats), so we need to explicitely check for this. A more robust attribute handling system allowing us to cope with other software idiosyncrasies is on the way, so this fix will do for now.
2021-10-04Cleanup: remove redundant assignmentCampbell Barton
2021-10-04Cleanup: use system includesCampbell Barton
2021-10-01Cleanup: unused function declarationKévin Dietrich
This should have been removed during the recent velocity attribute refactor.
2021-09-25Cleanup: use override/final for derived classes.Kévin Dietrich
This will help detecting missing API changes. Those keywords were added on classes which did not already use them. Also added missing `accepts_object_type()` on NURBS reader.
2021-09-25Fix Alembic point cloud streaming.Kévin Dietrich
Point clouds are not imported and read anymore. This was caused by an API change in rB128eb6cbe928e58dfee1c64f340fd8d663134c26 which was not applied to `AbcPointsReader`. It did not cause a compile error as the base class as a default implementation for this method.
2021-09-25Cleanup: typos in code and comments.Kévin Dietrich
No functional changes.
2021-09-13Cleanup: clang-formatCampbell Barton
2021-09-11Geometry Nodes: Support modifier on curve objectsHans Goudey
With this commit, curve objects support the geometry nodes modifier. Curves objects now evaluate to `CurveEval` unless there was a previous implicit conversion (tessellating modifiers, mesh modifiers, or the settings in the curve "Geometry" panel). In the new code, curves are only considered to be the wire edges-- any generated surface is a mesh instead, stored in the evaluated geometry set. The consolidation of concepts mentioned above allows remove a lot of code that had to do with maintaining the `DispList` type temporarily for modifiers and rendering. Instead, render engines see a separate object for the mesh from the mesh geometry component, and when the curve object evaluates to a curve, the `CurveEval` is always used for drawing wire edges. However, currently the `DispList` type is still maintained and used as an intermediate step in implicit mesh conversion. In the future, more uses of it could be changed to use `CurveEval` and `Mesh` instead. This is mostly not changed behavior, it is just a formalization of existing logic after recent fixes for 2.8 versions last year and two years ago. Also, in the future more functionality can be converted to nodes, removing cases of implicit conversions. For more discussion on that topic, see T89676. The `use_fill_deform` option is removed. It has not worked properly since 2.62, and the choice for filling a curve before or after deformation will work much better and be clearer with a node system. Applying the geometry nodes modifier to generate a curve is not implemented with this commit, so applying the modifier won't work at all. This is a separate technical challenge, and should be solved in a separate step. Differential Revision: https://developer.blender.org/D11597
2021-09-11Cleanup: use nullptrJacques Lucke
2021-09-10Modifiers: export motion blur velocity through attributeBrecht Van Lommel
Previously fluid simulation and Alembic modifiers had a dedicated function to query the velocity for motion blur. Now use a more generic system where those modifiers output a velocity attribute. Advantages: * Geometry and particle nodes can output velocity through the same mechanism, or read the attribute coming from earlier modifiers. * The velocity can be preserved through modifiers like subdivision surface or auto smooth. * USD and Alembic previously only output velocity from fluid simulation, now they work with velocity from other sources too. * Simplifies the code for renderers like Cycles and exporters like Alembic and USD. This breaks compatibility: * External renderers and exporters accessing these velocities through the Python API now need to use the attribute instead. * Existing modifier node setups that create an attribute named "velocity" will render differently with motion blur. Differential Revision: https://developer.blender.org/D12305
2021-09-09Cleanup: remove newlines from logging textCampbell Barton
Line endings are already added.
2021-09-08USD import: remove unused files.Michael Kowalski
Removed unused usd_reader_instance.cc and .h files.
2021-09-04RNA: support extracting names from paths without allocating memoryCampbell Barton
Support extracting identifiers RNA paths into fixed size buffer since the maximum size of the identifier is known all cases. - Add BLI_str_unescape_ex to support limiting the destination buffer. - Add BLI_str_quoted_substr to copy values into a fixed size buffer.
2021-08-31Cleanup: Use C style comments for descriptive textCampbell Barton
2021-08-27Refactor IDProperty UI data storageHans Goudey
The storage of IDProperty UI data (min, max, default value, etc) is quite complicated. For every property, retrieving a single one of these values involves three string lookups. First for the "_RNA_UI" group property, then another for a group with the property's name, then for the data value name. Not only is this inefficient, it's hard to reason about, unintuitive, and not at all self-explanatory. This commit replaces that system with a UI data struct directly in the IDProperty. If it's not used, the only cost is of a NULL pointer. Beyond storing the description, name, and RNA subtype, derived structs are used to store type specific UI data like min and max. Note that this means that addons using (abusing) the `_RNA_UI` custom property will have to be changed. A few places in the addons repository will be changed after this commit with D9919. **Before** Before, first the _RNA_UI subgroup is retrieved the _RNA_UI group, then the subgroup for the original property, then specific UI data is accessed like any other IDProperty. ``` prop = rna_idprop_ui_prop_get(idproperties_owner, "prop_name", create=True) prop["min"] = 1.0 ``` **After** After, the `id_properties_ui` function for RNA structs returns a python object specifically for managing an IDProperty's UI data. ``` ui_data = idproperties_owner.id_properties_ui("prop_name") ui_data.update(min=1.0) ``` In addition to `update`, there are now other functions: - `as_dict`: Returns a dictionary of the property's UI data. - `clear`: Removes the property's UI data. - `update_from`: Copy UI data between properties, even if they have different owners. Differential Revision: https://developer.blender.org/D9697
2021-08-26Cleanup: soft CMake file listsCampbell Barton
2021-08-26Cleanup: sort struct blocksCampbell Barton
2021-08-26Cleanup: use C style comments for descriptive textCampbell Barton
2021-08-26Cleanup: remove deprecated flag use in colladaCampbell Barton
2021-08-21Cleanup: spelling in comments & minor cleanupCampbell Barton
Also hyphenate 'mouse-move' use doxy sections in render_update.c & move function comment from the header to the source.
2021-08-19Alembic import: option to always add a cache readerKévin Dietrich
The current behavior of the Alembic importer is to only create a `MeshSequenceCache` modifier or a `Transform Cache` constraint to imported objects if they have some animated properties. Since static objects do not have a cache reader, when reloading files those objects are not updated. Currently, the only way to properly reload a file because of this is to reimport it. This adds an option to the importer to always add a cache reader, even if there is no animated data, to ensure that all objects coming from Alembic archive are linked to them and updated properly upon reloads. Reviewed by: brecht, sybren Ref D10197.
2021-08-12Cleanup: use C++ style comments for disabled codeCampbell Barton
2021-08-11Fix T90519: USD Exporter ErrorMichael Kowalski
Fixes: `Error: metersPerUnit does not match retrieved type float`
2021-08-10Clean-up: Remove UTF8-BOM markersRay Molenkamp
Done at the request of Sergey.