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
2020-10-10Cleanup: use C comments for descriptive textCampbell Barton
Follow our code style guide by using C-comments for text descriptions.
2020-10-10Fix T81545: Moving nested collections changes view layer flagsHans Goudey
The code that restored collection flags after they are rebuilt when moving a collection didn't take into account collection children. The flag for the active collection was properly restored, but all of its children would take on the exclude flag of the collection the active collection was dragged into. This commit builds a temporary tree structure to store the flags for the moving collection and its children. Then it reapplies these flags after `BKE_main_collection_sync`. Differential Revision: https://developer.blender.org/D9158
2020-10-09Cleanup: Use LISTBASE_FOREACH macroHans Goudey
2020-10-09Fix T81573: Users refcount not incremented when creating a proxy.Bastien Montagne
Proxies are refcounting usages of objects, historical code was apparently missing that.
2020-10-09BKE: improve calculating edgesJacques Lucke
This is a follow up commit for rB309c919ee9. Clearing hash tables is now parallelized as well. Surprisingly, most of the time is actually spent in `free` (a couple of milliseconds per call in my test). Benchmark of individual functions: reserve_hash_maps: 17% add_polygon_edges_to_hash_maps: 49% serialize_and_initialize_deduplicated_edges: 12% update_edge_indices_in_poly_loops: 14% clear_hash_tables: 5%
2020-10-09BKE: parallelize BKE_mesh_calc_edgesJacques Lucke
`BKE_mesh_calc_edges` was the main performance bottleneck in D9141. While openvdb only needed ~115ms, calculating the edges afterwards took ~960ms. Now with some parallelization this is reduced to ~210ms. Parallelizing `BKE_mesh_calc_edges` is not entirely trivial, because it has to perform deduplication and some other things that have to happen in a certain order. Even though the multithreading improves performance with more threads, there are diminishing returns when too many threads are used in this function. The speedup is mainly achieved by having multiple hash tables that are filled in parallel. The distribution of the edges to hash tables is based on a hash (that is different from the hash used in the actual hash tables). I moved the function to C++, because that made it easier for me to optimize it. Furthermore, I added `BLI_task.hh` which contains some light tbb wrappers for parallelization. Reviewers: campbellbarton Differential Revision: https://developer.blender.org/D9151
2020-10-09CleanUp: Introduce `eMeshBatchDirtyMode` enumJeroen Bakker
It used to be an int mode.
2020-10-09Revert "CleanUp: Introduce `eMeshBatchDirtyMode` enum"Jeroen Bakker
This reverts commit 0796807720882731cdb70be144aa182e9b0b9ee5.
2020-10-09Cleanup: spellingCampbell Barton
2020-10-08Refactor CustomData interpolation code.Bastien Montagne
- Move some security checks outside of `interp` callbacks. Namely, that we do get interpolation weights, and have something to interpolate. Some callbacks where not checking on those anyway, safer to move that up into calling code. - Cleanup usage of sub-weights, lots of interpolation callbacks wher actually using those completely wrong. - Change default behavior when no weights are given to higher-level API functions: prevriously, each callback was responsible to handle that case (and one did not even do it!), they were switching to purely additive behavior then. Instead, we now default to expected simple average of source values. Note that the only real important change here is defaulting to actual average of source value when no inertpolation weights are given (afaik, this only happens in Weld modifier code). Differential Revision: https://developer.blender.org/D9114
2020-10-08Cleanup/refactor: move init of ParticleSettings to proper place.Bastien Montagne
2020-10-08Cleanup/refactor: move init of MovieClip to proper place.Bastien Montagne
2020-10-08Cleanup/Refactor: Shapekey: Get rid of `BKE_key_copy_nolib()`Bastien Montagne
Once again, no behavioral change expected here.
2020-10-08Cleanup/refactor: move init of Collection to proper place.Bastien Montagne
2020-10-08Cleanup/refactor: move default init of armature to proper place.Bastien Montagne
2020-10-08Cleanup/refactor: `BKE_libblock_alloc` -> `BKE_id_new` in ID creation code.Bastien Montagne
Better use higher-level code from common ID management when possible. Helps to de-duplicate logic, and reduces outside usages of more 'dangerous' functions. Note that we could get rid of many of those `BKE_<id_type>_add` functions now, but on the other hand several of those take extra parameters and perform additional actions, so think we can keep them all for now as 'non-standard ID specific creation functions'.
2020-10-08Cleanup: Remove `BKE_mask_copy_nolib()` and `BKE_mask_free()`.Bastien Montagne
Generic ID management code can now do those local temp copy handling, so no need for duplicated own code for that. No behavioral changes expected here.
2020-10-08Cleanup: use doxy sections for fmodifier.cCampbell Barton
2020-10-07Cleanup: inconsistent parameter nameJacques Lucke
Found by clang-tidy.
2020-10-07Refactor: remove `BKE_<id_type>_copy` functions.Bastien Montagne
Those were only shallow wrappers around `BKE_id_copy`, barely used (even fully unused in some cases), and we want to get rid of those ID-specific helpers for the common ID management tasks. Also prevents weird custom behaviors (like `BKE_object_copy`, who was the only basic ID copy function to reset user count of the new copy to zero). Part of 71219.
2020-10-07Refactor `BKE_id_copy` to return the new ID pointer.Bastien Montagne
No reasons to keep the new ID pointer as parameter here. Part of T71219.
2020-10-07Refactor `BKE_id_copy_ex` to return the new ID pointer.Bastien Montagne
Note that possibility to pass the new ID pointer as parameter was kept, as this is needed for some rather specific cases (like in depsgraph/COW, when copying into already allocated memory). Part of T71219.
2020-10-07Python API: add volume.grids.save(filepath) to save grids and metadata to diskBrecht Van Lommel
Particularly useful now that we can dynamically generate volume using modifiers. Not exposed in the user interface currently, but it can be used by add-ons that need to export an entire scene including volumes.
2020-10-07CleanUp: Introduce `eMeshBatchDirtyMode` enumJeroen Bakker
It used to be an `int mode`.
2020-10-07Fix T76595: Indicate the Active Keyframe in Graph EditorHans Goudey
In the graph editor there is a panel that says "Active Keyframe" for numerically editing a keyframe's values, but in the code there is no concept of the "active keyframe." Since this is a useful concept to have for some other features anyway, this commit adds an active keyframe index value to FCurves. It also displays it with a theme color for the active vertex (which didn't exist before) if the FCurve is active. The active keyframe in the graph editor is treated similarly to the active vertex in the 3D view. It is the keyframe most recently selected with a single click, and it is always selected. For now, the only real functional change is that the active keyframe appears in white and it should be more predictable which keyframe is being edited in the sidebar panel. Differential Revision: https://developer.blender.org/D7737
2020-10-07Cleanup: improve integer typesJacques Lucke
Reviewers: mont29, brecht Differential Revision: https://developer.blender.org/D9135
2020-10-07IDTypeInfo: add flag to indicate that ID has no animation dataJacques Lucke
This is part of T75724. Reviewers: mont29 Differential Revision: https://developer.blender.org/D9134
2020-10-07Cleanup: add commentJacques Lucke
2020-10-07Refactor: Remove `BKE_XXX_localize()`, in favor of using regular ID copying ↵Bastien Montagne
code. Besides the NodeTree case (which remains unchanged), the localize code is only used in one place (to generate previews of shading data-blocks). This commit introduces a new `LIB_ID_CREATE_LOCAL` option for ID creation/copying, which essentially implements the behavior of the removed `BKE_XXX_localize()` functions into regular mainstream ID copy code. When this option is set: - new ID is tagged with `LIB_TAG_LOCALIZED`; - Some ID copying callbacks have specific behaviors, mainly the root nodetree of shading IDs gets duplicated with specialized `ntreeLocalize()` function. Note that I would not consider getting rid of `ntreeLocalize` for now, this function is recursive, which should ideally never happen within ID management copying code (this introduces all kind of complications). No behavioral change expected from this commit.
2020-10-07Cleanup: IDManagement: Localize: tweak to flags.Bastien Montagne
Add a specific flag for nodetree deep-copy special localization code. And add a new `LIB_ID_CREATE_LOCALIZE` flag, similar to `LIB_ID_COPY_LOCALIZE`, for creation purposes. No behavioral changes expected here.
2020-10-07Silence CLOG error about usercount of deprecated IPO IDs.Bastien Montagne
2020-10-07Fix T81272: Crash on opening old files where nodetrees had no name.Bastien Montagne
This code gets called before do_version can fix that, so we have to work around it for now.
2020-10-05Fix T81392: subdivision surface poor shading without limit surfacePiotr Ostrowski
When the limit surface is disabled OpenSubdiv generates a set of linear patches which are only C0 continuous, not C1. This makes it impossible to evaluate derivatives at vertices which, in this mode, are by definition put at boundaries of patches. Normals are calculated from those derivatives. Solution is to disable normal calculation and let it be done downstream, as for other modifiers. This limitation is also the reason that non feature adaptive subdivision is badly suited for GPU evaluation. Differential Revision: https://developer.blender.org/D9103
2020-10-05GPencil: Fix unreported Layer SOLO mode brokenAntonio Vazquez
During the refactor, this feature was removed by error. When this option is enabled, only the frames with a keyframe are displayed in Draw mode. This is used when fill an animation to paint only in the frames with real drawing.
2020-10-05Insert keyframes while preserving shape of curveSybren A. Stüvel
Apply the De Casteljau algorithm to split the Bèzier curve at the X coordinate where the new key is inserted, and uses the result to update both the newly inserted and surrounding handles. For curves that use Auto keyframes this has been largely addressed by the new algorithm from D2884. This commit extends this to non-auto handles. This code is heavily based on D3172 by Alexander Gavrilov (@angavrilov). Manifest Task: https://developer.blender.org/T81353
2020-10-05Fix building without OPENVDBCampbell Barton
2020-10-05Volumes: more generic way to handle different openvdb typesJacques Lucke
Reviewers: brecht Differential Revision: https://developer.blender.org/D9093
2020-10-05Move sequencer sources from blenkernelRichard Antalik
This is first step of refactoring task T77580. Next step will be breaking up files into smaller ones. Reviewed By: sergey, brecht Differential Revision: https://developer.blender.org/D8492
2020-10-05Rename eSpaceSeq_Proxy_RenderSize membersRichard Antalik
Remove word proxy from eSpaceSeq_Proxy_RenderSize members if proxy is not used with that item. Otherwise this can be a bit confusing. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8861
2020-10-05Cleanup: simplify tempdir_session_createCampbell Barton
Remove the need for a temporary allocated path.
2020-10-05Correct last commit (where_is_temp refactor)Campbell Barton
Changes didn't account the case when mkdtemp failed. Previously the copying the string wasn't needed in this case.
2020-10-04Cleanup: refactor where_is_tempCampbell Barton
Functionality was hard to follow as the meaning of fullname depended on basename being NULL or not. - where_is_temp is now only responsible for finding the temp directory. - Split out tempdir_session_create into it's own function that wraps mkdtemp. - Rename basename to tempdir, fullname to tempdir_session.
2020-10-04Cleanup: BKE_appdir store static values in a struct, clarify namesCampbell Barton
Avoid multiple static variables with odd names, instead keep them all in one struct, expand their names for clarity.
2020-10-04Fix error in last commit printing NULL stringsCampbell Barton
While this works with GCC, printing NULL strings is undefined behavior.
2020-10-04BKE_appdir: log details about path lookupsCampbell Barton
These were printf's, disabled by a define that could be uncommented. Use logging since this can be useful when investigating any issue with paths not being found at the expected location. Without this any problem finding app-templates, Python's installation, icons ... etc are quite difficult to troubleshoot especially on systems without access to system-call tracing. To use this run: blender --log "bke.appdir" --log-level 3
2020-10-04Fix color-management ignoring the data-path command line valueCampbell Barton
Initialize ImBuf (and color-management) after passing arguments that set environment variables such as `--env-system-datapath` This also fixes a bug where BKE_appdir logging failed since it was called before the `--log` argument was passed. Add asserts so this doesn't happen again.
2020-10-04Cleanup: clarify names in appdirCampbell Barton
- ver -> version. - env -> env_path.
2020-10-04Cleanup: BKE_appdir left paths set even when not foundCampbell Barton
Internally appdir functions would test if a path exists, returning false if it doesn't, leaving the string set instead of clearing it. This is error prone as invalid paths could be used accidentally. Since BKE_appdir_folder_id_user_notest & BKE_appdir_folder_id_version depend on this, add a 'check_is_dir' argument so the path can be used even when the directory can't be found.
2020-10-03Cleanup: use BLI_path_join in appdir.c to simplify logicCampbell Barton
Change `test_path` function so: - Joining paths calls a function instead of being performed inline. - Optional NULL paths must always be ordered last (easier to follow). Other minor changes: - Remove FIXME comment is it's handled properly by BLI_path_join. - The wrong size was being used copying into `targetpath`.
2020-10-03Cleanup: Remove/replace C standard library assert() and header usagesJulian Eisel
We have our own assert implementation, `BLI_assert()` that is prefered over the C standard library one. Its output is more consistent across compilers and makes termination on assert failure optional (through `WITH_ASSERT_ABORT`). In many places we'd include the C library header without ever accessing it.