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-01-20Cleanup doc comments for sculpt_intern.hJoseph Eagar
2022-01-19Fix: File Browser using asset indexer after Asset Browser was visibleJulian Eisel
When toggling to a File Browser from an Asset Browesr, the asset indexer would be used to load files. I couldn't spot issues with that on a quick look, but this should still be corrected.
2022-01-19Asset Browser: Add debug option to disable asset indexingJulian Eisel
Adds an "Asset Indexing" option (enabled by default) to Preferences > Experimental > Debugging. This is useful when working on the asset library loading.
2022-01-19Fix error in previous commitRichard Antalik
While doing last minute cleanup in e49bf4019b498be42b9a39657604ad750a99bbea, missed to rename function in one place.
2022-01-19VSE: Support copy-pasting strips with animationRichard Antalik
When copying strips between 2 scenes, it wasn't possible to copy animation curves along with strips. In this patch curves are copied into clipboard `ListBase`. When pasted, original curves are moved into temporary `ListBase` and curves in clipboard are moved into scene action. This is because when strips from clipboard have to be renamed, function `SEQ_ensure_unique_name()` does fix RNA paths of curves, but this is done globally for all curves within action. After strips are renamed, restore original curves from backup. Note: This patch handles only fcurves. Drivers and actions are currently not handled anywhere in VSE. Fixes T77530 Reviewed By: sergey Differential Revision: https://developer.blender.org/D13845
2022-01-19Cleanup: VSE animation handlingRichard Antalik
- Move functions that handle animation to own file - `animation.c` - Refactor `SEQ_offset_animdata` and `SEQ_free_animdata` functions - Add function `SEQ_fcurves_by_strip_get` to provide more granular and explicit way for operators to handle animation - Remove function `SEQ_dupe_animdata`, do curve duplication explicitly in operator code, which makes more sense to do. Further this function was also used for renaming strips which makes no sense. - Refactor usage of function `SEQ_free_animdata` and remove XXX comment. Now this functiuon is no longer called when `Sequence` data is freed implicitly, it is done explicitly in high level function `SEQ_edit_remove_flagged_sequences` Reviewed By: sergey Differential Revision: https://developer.blender.org/D13852
2022-01-19Fix T94987: Dragged node links are invisible.Jeroen Bakker
Route cause was data alignment mismatch between GPU and CPU. This mismatch would not allow us to bind the UBO where data wasn't available on the GPU. Fixed by using float4 in stead of float2. This could eventually be packed, but that would lead to less readable code.
2022-01-19Fix flipped order of items in the "Undo History" menuCampbell Barton
Error in 0e1bb232e68ce71f4c3dd331ed6331665238a065.
2022-01-18Cleanup: Use references, LISTBASE_FOREACH macroHans Goudey
2022-01-18Fix T93413: Nodes 'Make Links' fails for multi input socketPhilipp Oeser
This was the case for multi input sockets that have a link already. Since we have multi input sockets, the way we use `socket_is_available` is not really giving the expected result on these. When used for input sockets the intention is to find a free socket (either for noodle **replacement**, then it is always available, or just the next free available socket). Now I would think without the intention to replace an existing link, a multi input socket should still be available. From the inside of the function, the `replace` argument turns [namewise] to `allow_used`, which sounds a little different (so one might argue that if `allow_used` is `False` this should also trigger for already connected multi input sockets). In the end, this is an issue with the variable naming though, cant think of a usecase where the patch change would really go against intentions. Maniphest Tasks: T93413 Differential Revision: https://developer.blender.org/D13866
2022-01-18Fix T95029: Arrow gizmo always uses normal directionGermano Cavalcante
Bug possibly introduced in {rBc57e4418bb85aec8bd3615fd775b990badb43d30}. Interestingly, the orientation set before (NORMAL), even different from the orientation that was actually used, was allowing the use of "orient_matrix" ("orient_matrix_type" should have been NORMAL in that case too). In any case, make sure the "orient_matrix_type" and "orient_type" are the same so that the "orient_matrix" is used.
2022-01-18Cleanup: Make node editor functions privateHans Goudey
These operations (sorting and selecting all nodes) should generally be handled by the node editor and not outside code. They were not called outside of the node editor, so they can be moved to the editor's `intern` header.
2022-01-18Cleanup: Remove unused node editor toolbar fileHans Goudey
This file was added nine years ago, and was unused then. Now with active tools we use a different approach to create toolbars, so the file is not relevant.
2022-01-18RNA: display exact integer values without fraction if step is integer.Alexander Gavrilov
Display exact integer values of a floating point fields without a fraction if the step is also an exact integer. This is intended for cases when the value can technically be fractional, but most commonly is supposed to be integer. This handling is not applied if the field has any unit except frames, because integer values aren't special for quantities like length. The fraction is discarded in the normal display mode and when copying the value to clipboard, but not when editing to remind the user that the field allows fractions. Differential Revision: https://developer.blender.org/D13753
2022-01-18UI: fix a precision issue with float field step size.Alexander Gavrilov
Fix a precision issue when stepping down from 1 to 0 via the left decrement button and step 100 results in a small nonzero value. The reason is that 0.01 can't be precisely represented in binary and converting to double before multiplication reveals this. Ref D13753
2022-01-18Cleanup: Avoid possible NULL pointer errorAntonio Vazquez
In normal conditions, `gpf` always has a value, but better move inside the NULL checking.
2022-01-18GPU: Create Info for GPU_SHADER_2D_IMAGE_MULTI_RECT_COLOR.Jeroen Bakker
This patch converts GPU_SHADER_2D_IMAGE_MULTI_RECT_COLOR shader to use the GPUShaderCreateInfo pattern. It can be used as a reference when converting other shaders. In this special case the flat uniform vector cannot be used anymore as it doesn't fit as push constants. To solve this a uniform buffer is used.
2022-01-18Assets: Enabling Asset Indexing.Jeroen Bakker
Asset indexing was disabled as ID property indexing wasn't supported. Now that ID property support is added we can enable asset indexing. Check {T91406} for more information about asset indexing.
2022-01-18AssetsBrowser: Add ID Properties to Asset IndexerJeroen Bakker
Object/collection asset workflow would need the bounding box for snapping. The bounding box is stored using ID properties in the scene. Currently ID properties aren't stored in the asset index, what would break object snapping. For this reason Asset Indexing is turned off in mater. This patch will introduce the indexing of ID properties what will allow the indexing to be turned on again. ## Data Mapping ## For data mapping we store the internal structure of IDProperty to the indexer (including meta-data) to be able to deserialize it back. ``` [ { "name": .., "value": .., "type": .., /* `subtype` and `length` are only available for IDP_ARRAYs. */ "subtype": .., }, ] ``` | **DNA** | **Serialize type** | **Note** | | IDProperty.name | StringValue| | | IDProperty.type | StringValue| "IDP_STRING", "IDP_INT", "IDP_FLOAT", "IDP_ARRAY", "IDP_GROUP", "IDP_DOUBLE"| | IDProperty.subtype | StringValue| "IDP_INT", "IDP_FLOAT", "IDP_GROUP", "IDP_DOUBLE" | | IDProperty.value | StringValue | When type is IDP_STRING | | IDProperty.value | IntValue | When type is IDP_INT | | IDProperty.value | DoubleValue | When type is IDP_FLOAT/IDP_DOUBLE | | IDProperty.value | ArrayValue | When type is IDP_GROUP. Recursively uses the same structure as described in this section. | | IDProperty.value | ArrayValue | When type is IDP_ARRAY. Each element holds a single element as described in this section. | NOTE: IDP_ID and IDP_IDARRAY aren't supported. The entry will not be added. Example ``` [ { "name": "MyIntValue, "type": "IDP_INT", "value": 6, }, { "name": "myComplexArray", "type": "IDP_ARRAY", "subtype": "IDP_GROUP", "value": [ [ { "name": .. .... } ] ] } ] ``` ## Considered alternatives ## - Add conversion functions inside `asset_indexer`; makes generic code part of a specific solution. - Add conversion functions inside `BLI_serialize`; would add data transformation responsibilities inside a unit that is currently only responsible for formatting. - Use direct mapping between IDP properties and Values; leads to missing information and edge cases (empty primitive arrays) that could not be de-serialized. Reviewed By: Severin, mont29, HooglyBoogly Maniphest Tasks: T92306 Differential Revision: https://developer.blender.org/D12990
2022-01-18Cleanup: spelling in commentsCampbell Barton
2022-01-18Cleanup: quite old-style-declaration warning, strip trailing spaceCampbell Barton
2022-01-17Baking: new method to generate margin, based on adjacent facesMartijn Versteegh
This significantly reduces discontinuities on UV seams, by giving a better match of the texture filtered colors on both sides of the seam. It works by using pixels from adjacent faces across the UV seam. This new option is called "Adjacent Faces" and is the default. The old option is called "Extend", and extends border pixels outwards. Differential Revision: https://developer.blender.org/D13303
2022-01-17Cleanup: Remove now redundant performance workaround for asset previewsJulian Eisel
Not needed anymore after aa0ecd179. The removed function was identical to `icon_draw_rect()` now. Reverts ab7214ca2ef9.
2022-01-17Cleanup: Correct comments for immediate mode buffer draw functionsJulian Eisel
2022-01-17Cleanup: Improve naming of immediate mode buffer draw functionsJulian Eisel
Followup to the previous commit. Jeroen and I agreed the old naming was confusing.
2022-01-17UI: Speed up icon scalingJulian Eisel
Use GPU-side scaling to speed up the scaling itself, and to avoid having to copy the image buffer using the CPU. Mipmapping is used to get decent filtering when downscaling without ugly artifacts. In my comparisons, there was barely any difference between the methods for DPIs >= 1. Below that, the result looks a bit different due to the different filtering method. See D13144 for screen-recordings showing the difference. Part of T92922. Differential Revision: https://developer.blender.org/D13144 Reviewed by: Jeroen Bakker
2022-01-17Cleanup: deduplicate condition in transform curve codeGermano Cavalcante
Checking `t->around` and `nu->pntsv` does not need to be done in 2 places.
2022-01-17Alembic: add support for reading override layersKévin Dietrich
Override layers are a standard feature of Alembic, where archives can override data from other archives, provided that the hierarchies match. This is useful for modifying a UV map, updating an animation, or even creating some sort of LOD system where low resolution meshes are swapped by high resolution versions. It is possible to add UV maps and vertex colors using this system, however, they will only appear in the spreadsheet editor when viewing evaluated data, as the UV map and Vertex color UI only show data present on the original mesh. Implementation wise, this adds a `CacheFileLayer` data structure to the `CacheFile` DNA, as well as some operators and UI to present and manage the layers. For both the Alembic importer and the Cycles procedural, the main change is creating an archive from a list of filepaths, instead of a single one. After importing the base file through the regular import operator, layers can be added to or removed from the `CacheFile` via the UI list under the `Override Layers` panel located in the Mesh Sequence Cache modifier. Layers can also be moved around or hidden. See differential page for tests files and demos. Reviewed by: brecht, sybren Differential Revision: https://developer.blender.org/D13603
2022-01-17Revert "Revert "GPUShaderCreateInfo for interface abstraction""Jeroen Bakker
This reverts commit edee5a947b7ea3e1324aa334a22c7c9bbf47f5f7. Fixes compilation error (Missing file BLI_float2.hh)
2022-01-17Revert "GPUShaderCreateInfo for interface abstraction"Jeroen Bakker
This reverts commit 8fb2ff458ba579dba08bfdf57d043ad158b5db07. Missing some files.
2022-01-17GPUShaderCreateInfo for interface abstractionJeroen Bakker
This is a first part of the Shader Create Info system could be. A shader create info provides a way to define shader structure, resources and interfaces. This makes for a quick way to provide backend agnostic binding informations while also making shader variations easy to declare. - Clear source input (only one file). Cleans up the GPU api since we can create a shader from one descriptor - Resources and interfaces are generated by the backend (much simpler than parsing). - Bindings are explicit from position in the array. - GPUShaderInterface becomes a trivial translation of enums and string copy. - No external dependency to third party lib. - Cleaner code, less fragmentation of resources in several libs. - Easy to modify / extend at runtime. - no parser involve, very easy to code. - Does not hold any data, can be static and kept on disc. - Could hold precompiled bytecode for static shaders. This also includes a new global dependency system. GLSL shaders can include other sources by using #pragma BLENDER_REQUIRE(...). This patch already migrated several builtin shaders. Other shaders should be migrated one at a time, and could be done inside master. There is a new compile directive `WITH_GPU_SHADER_BUILDER` this is an optional directive for linting shaders to increase turn around time. What is remaining: - pyGPU API {T94975} - Migration of other shaders. This could be a community effort. Reviewed By: jbakker Maniphest Tasks: T94975 Differential Revision: https://developer.blender.org/D13360
2022-01-17Fix T94526: Incorrect workspace ordering tooltipAlaska
Fix the description for WORKSPACE_OT_reorder_to_back to say "last" in list rather than "first" See D13696 for more details. Differential Revision: https://developer.blender.org/D13696 Reviewed by Aaron Carlisle
2022-01-16Cleanup: simplify parametersGermano Cavalcante
Use a common `userdata` for the different snap callbacks.
2022-01-16Fix T94951: Crash when snappingGermano Cavalcante
Missed in {rBd9c6ceb3b88b6db87490b08e0089f9a18e6c52d6}
2022-01-14Cleanup: Outliner function names, simplify struct initializationJulian Eisel
2022-01-14Fix incorrect destruction of Outliner tree-elementsJulian Eisel
`TreeElement` isn't a trivial type anymore, so `MEM_delete()` should be called, which calls the destructor. AFAICS this would cause a memory leak, since the contained `unique_ptr` is allocated but not destructed correctly - but it's not using the guarded allocator so woudn't be reported.
2022-01-14Cleanup: Use destructor to delete Outliner runtime dataJulian Eisel
Simplifies and makes things safer due to proper RAII usage.
2022-01-14Cleanup: Use smart pointers for Outliner tree display and element typesJulian Eisel
Smart pointers should be the default choice for C++ owning pointers, since they let you manage memory using RAII. Also moved type factory methods into static class functions.
2022-01-14Cleanup: Remove Outliner C-API headers/wrappersJulian Eisel
Basically this removes any C <-> C++ glue code. C++ types are accessed directly via the public C++ APIs. Contains some related changes like, moving functions that were previously declared in a now removed header to a different file, whose header is the more appropriate place (and the source file as well). But generally I tried to avoid other changes.
2022-01-14Fix T94784: Crop node gizmo doesn't workSebastian Parborg
Fix refactoring mistake in rBcbca71a7cff3 Not the min and max values are initialized properly.
2022-01-14Cleanup: compiler warnings with clangBrecht Van Lommel
2022-01-14Fix T94089: GPencil Drawing don't Update after paste in DopesheetAntonio Vazquez
When paste new frames, the datablock need to be tagged to update the drawings.
2022-01-14Fix T94903: GPencil: Copying keys doesn't preserve Keyframe TypeAntonio Vazquez
When a new frame is created, ensure the keytype of source key is used.
2022-01-14Cleanup: move attribute operators to c++Jacques Lucke
2022-01-14Cleanup: spelling in comments, C++ style comments for disabled codeCampbell Barton
Also ensure space at end of comment.
2022-01-14Cleanup: Clang tidyHans Goudey
- modernize-deprecated-headers - modernize-use-using - modernize-use-nullptr - modernize-use-bool-literals
2022-01-13Refactor: Move normals out of MVert, lazy calculationHans Goudey
As described in T91186, this commit moves mesh vertex normals into a contiguous array of float vectors in a custom data layer, how face normals are currently stored. The main interface is documented in `BKE_mesh.h`. Vertex and face normals are now calculated on-demand and cached, retrieved with an "ensure" function. Since the logical state of a mesh is now "has normals when necessary", they can be retrieved from a `const` mesh. The goal is to use on-demand calculation for all derived data, but leave room for eager calculation for performance purposes (modifier evaluation is threaded, but viewport data generation is not). **Benefits** This moves us closer to a SoA approach rather than the current AoS paradigm. Accessing a contiguous `float3` is much more efficient than retrieving data from a larger struct. The memory requirements for accessing only normals or vertex locations are smaller, and at the cost of more memory usage for just normals, they now don't have to be converted between float and short, which also simplifies code In the future, the remaining items can be removed from `MVert`, leaving only `float3`, which has similar benefits (see T93602). Removing the combination of derived and original data makes it conceptually simpler to only calculate normals when necessary. This is especially important now that we have more opportunities for temporary meshes in geometry nodes. **Performance** In addition to the theoretical future performance improvements by making `MVert == float3`, I've done some basic performance testing on this patch directly. The data is fairly rough, but it gives an idea about where things stand generally. - Mesh line primitive 4m Verts: 1.16x faster (36 -> 31 ms), showing that accessing just `MVert` is now more efficient. - Spring Splash Screen: 1.03-1.06 -> 1.06-1.11 FPS, a very slight change that at least shows there is no regression. - Sprite Fright Snail Smoosh: 3.30-3.40 -> 3.42-3.50 FPS, a small but observable speedup. - Set Position Node with Scaled Normal: 1.36x faster (53 -> 39 ms), shows that using normals in geometry nodes is faster. - Normal Calculation 1.6m Vert Cube: 1.19x faster (25 -> 21 ms), shows that calculating normals is slightly faster now. - File Size of 1.6m Vert Cube: 1.03x smaller (214.7 -> 208.4 MB), Normals are not saved in files, which can help with large meshes. As for memory usage, it may be slightly more in some cases, but I didn't observe any difference in the production files I tested. **Tests** Some modifiers and cycles test results need to be updated with this commit, for two reasons: - The subdivision surface modifier is not responsible for calculating normals anymore. In master, the modifier creates different normals than the result of the `Mesh` normal calculation, so this is a bug fix. - There are small differences in the results of some modifiers that use normals because they are not converted to and from `short` anymore. **Future improvements** - Remove `ModifierTypeInfo::dependsOnNormals`. Code in each modifier already retrieves normals if they are needed anyway. - Copy normals as part of a better CoW system for attributes. - Make more areas use lazy instead of eager normal calculation. - Remove `BKE_mesh_normals_tag_dirty` in more places since that is now the default state of a new mesh. - Possibly apply a similar change to derived face corner normals. Differential Revision: https://developer.blender.org/D12770
2022-01-13Fix/workaround MSVC compile error with messag-busJulian Eisel
Some of the message-bus macros are not safe to use in C++. This has come up before, but no good solution was found. Now @LazyDodo, @HooglyBoogly and I concluded this is the best duct tape "solution" for the moment. The message-bus API should address this.
2022-01-13Cleanup: Run `make format`Julian Eisel
2022-01-13Fix compilation error caused by missing target relationSergey Sharybin
Space clip depends on DNA now so that it can access offsets.