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-04-06Cleanup: spelling & poor wording in code & commentsCampbell Barton
2022-04-05Refactor: Evaluate surface objects as mesh componentsHans Goudey
This commit furthers some of the changes that were started in rBb9febb54a492 and subsequent commits by changing the way surface objects are presented to render engines and other users of evaluated objects in the same way. Instead of presenting evaluated surface objects as an `OB_SURF` object with an evaluated mesh, `OB_SURF` objects can now have an evaluated geometry set, which uses the same system as other object types to deal with multi-type evaluated data. This clarification makes it more obvious that lots of code that dealt with the `DispList` type isn't used. It wasn't before either, now it's just *by design*. Over 1100 lines can be removed. The legacy curve draw cache code is much simpler now too. The idea behind the further removal of `DispList` is that it's better to focus optimization efforts on a single mesh data structure. One expected functional change is that the evaluated mesh from surface objects can now be used in geometry nodes with the object info node. Cycles and the OBJ IO tests had to be tweaked to avoid using evaluated surface objects instead of the newly exposed mesh objects. Differential Revision: https://developer.blender.org/D14550
2022-04-05Cleanup: move doc-strings into headersCampbell Barton
- The comment for create_normals was moved into an inline note as it's not related to the public API. - Use a colon after parameters. Ref T92709
2022-04-05Cleanup: spelling in commentsCampbell Barton
2022-04-04OBJ: fix printf specifier compile warning on some compilersAras Pranckevicius
2022-04-04OBJ: fix mac/linux tests and compile warnings in the new obj importerAras Pranckevicius
Related to D13958
2022-04-04OBJ: New C++ based wavefront OBJ importerAnkit Meel
This takes state of soc-2020-io-performance branch as it was at e9bbfd0c8c7 (2021 Oct 31), merges latest master (2022 Apr 4), adds a bunch of tests, and fixes a bunch of stuff found by said tests. The fixes are detailed in the differential. Timings on my machine (Windows, VS2022 release build, AMD Ryzen 5950X 32 threads): - Rungholt minecraft level (269MB file, 1 mesh): 54.2s -> 14.2s (memory usage: 7.0GB -> 1.9GB). - Blender 3.0 splash scene: "I waited for 90 minutes and gave up" -> 109s. Now, this time is not great, but at least 20% of the time is spent assigning unique names for the imported objects (the scene has 24 thousand objects). This is not specific to obj importer, but rather a general issue across blender overall. Test suite file updates done in Subversion tests repository. Reviewed By: @howardt, @sybren Differential Revision: https://developer.blender.org/D13958
2022-04-01Cleanup: Use const for bounding boxes where possibleHans Goudey
2022-04-01Fix T96763: New OBJ Exporter Incorrectly saving the materials in the MTL fileAras Pranckevicius
Original report (T96763) only reported the issue of double-space before the texture path, but while adding test coverage I found some other issues that I fixed while at it: - Incorrectly emits two spaces between `map_Xx` keyword and the texture path, leading to some 3rd party software not finding the textures, - Emissive texture map (`map_Ke`) was not exported, - When Mapping node is used on the texture UVs, the "Location" and "Scale" values were mixed up (location written as "scale", scale written as "location). Added gtest coverage. Reviewed By: Howard Trickey Differential Revision: https://developer.blender.org/D14519
2022-03-31Fix T76746: Alembic, wrong result importing back exported curvesKévin Dietrich
In Alembic curve topology is stored with an array of values describing how many points each sub-curve has. Instead of writing the number of points for the current curve, the Alembic exporter would write the accumulated number of points. This error has existed since the initial implementation.
2022-03-31Cleanup: spelling, trailing space for comment-blocksCampbell Barton
2022-03-29GPencil: Fix Windows compiler errorsAntonio Vazquez
For non trivial data must be used `MEM_new`
2022-03-27OBJ: use fmt library instead of sprintf for faster formattingAras Pranckevicius
On Windows/MSVC this gives a minor (~20%) speedup presumably due to a faster float/int formatter. On macOS (Xcode13), this gives a massive speedup, since snprintf that is in system libraries ends up spending almost all the time inside some locale-related mutex lock. The actual exporter code becomes quite a bit smaller too, since it does not have to do any juggling to support std::string arguments, and the buffer handling code is smaller as well. Windows (VS2022 release build, Ryzen 5950X 32 threads) timings: - Blender 3.0 splash scene (2.4GB obj): 4.57s -> 3.86s - Monkey subdivided level 6 (330MB obj): 1.10s -> 0.99s macOS (Xcode 13 release build, Apple M1Max) timings: - Blender 3.0 splash scene (2.4GB obj): 21.03s -> 5.52s - Monkey subdivided level 6 (330MB obj): 3.28s -> 1.20s Linux (ThreadRipper 3960X 48 threads) timings: - Blender 3.0 splash scene (2.4GB obj): 10.10s -> 4.40s - Monkey subdivided level 6 (330MB obj): 2.16s -> 1.37s The produced obj/mtl files are identical to before. Reviewed By: Howard Trickey, Dalai Felinto Differential Revision: https://developer.blender.org/D13998
2022-03-25MSVC: Fix linker issue with USDRay Molenkamp
USD requires to be linked with /WHOLEARCHIVE so the linker won't remove their static initializers. This strangely has never worked for MSVC since the flags were set on the LINK_FLAGS property which is only used to link .dll and .exe files, given this is a static lib, the flags were not used, nor did CMake propagate the link directive to the final targets that did link. Not quite sure how this has not lead to more problems in the past. Setting the link directive on the INTERFACE_LINK_OPTIONS makes cmake do the right thing. Differential Revision: https://developer.blender.org/D14394 Reviewed by: sybren
2022-03-25USD: Support building against USD 21.11+Michael Kowalski
For 3.2 USD will be bumped to a newer version with some slight API changes, however since we cannot simultaneously land the libs for all platforms as well as these code changes, we'll have to support both 21.02 and 21.11+ for at least a short period of time making the code slightly more messy than it could have been. Differential Revision: https://developer.blender.org/D14184 Reviewed by: sybren
2022-03-25Implement C++ methods for DNA structuresSergey Sharybin
This change makes it possible to add implementation of common C++ methods for DNA structures which helps ensuring unsafe operations like shallow copy are done explicitly. For example, creating a shallow copy used to be: Object temp_object = *input_object; In the C++ context it was seen like the temp_object is properly decoupled from the input object, while in the reality is it not. Now this code becomes: Object temp_object = blender::dna::shallow_copy(*input_object); The copy and move constructor and assignment operators are now explicitly disabled. Other than a more explicit resource management this change also solves a lot of warnings generated by the implicitly defined copy constructors w.r.t dealing with deprecated fields. These warnings were generated by Apple Clang when a shallow object copy was created via implicitly defined copy constructor. In order to enable C++ methods for DNA structures a newly added macro `DNA_DEFINE_CXX_METHODS()` is to be used: tpyedef struct Object { DNA_DEFINE_CXX_METHODS(Object) ... } Object; For the shallow copy use `blender::dna::shallow_copy()`. The implementation of the memcpy is hidden via an internal DNA function to avoid pulling `string.h` into every DNA header. This means that the solution does not affect on the headers dependencies. --- Ideally `DNA_shallow_copy` would be defined in a more explicit header, but don;t think we have a suitable one already. Maybe we can introduce `DNA_access.h` ? Differential Revision: https://developer.blender.org/D14427
2022-03-25Revert "Implement C++ methods for DNA structures"Sergey Sharybin
This reverts commit 8c44793228750537c08ea7b19fc18df0138f9501. Apparently, this generated a lot of warnings in GCC. Didn't find a quick solution and is it not something I want to be trading between (more quiet Clang in an expense of less quiet GCC). Will re-iterate on the patch are re-commit it.
2022-03-25Implement C++ methods for DNA structuresSergey Sharybin
This change makes it possible to add implementation of common C++ methods for DNA structures which helps ensuring unsafe operations like shallow copy are done explicitly. For example, creating a shallow copy used to be: Object temp_object = *input_object; In the C++ context it was seen like the temp_object is properly decoupled from the input object, while in the reality is it not. Now this code becomes: Object temp_object = blender::dna::shallow_copy(*input_object); The copy and move constructor and assignment operators are now explicitly disabled. Other than a more explicit resource management this change also solves a lot of warnings generated by the implicitly defined copy constructors w.r.t dealing with deprecated fields. These warnings were generated by Apple Clang when a shallow object copy was created via implicitly defined copy constructor. In order to enable C++ methods for DNA structures a newly added macro `DNA_DEFINE_CXX_METHODS()` is to be used: tpyedef struct Object { DNA_DEFINE_CXX_METHODS(Object) ... } Object; For the shallow copy use `blender::dna::shallow_copy()`. The implementation of the memcpy is hidden via an internal DNA function to avoid pulling `string.h` into every DNA header. This means that the solution does not affect on the headers dependencies. --- Ideally `DNA_shallow_copy` would be defined in a more explicit header, but don;t think we have a suitable one already. Maybe we can introduce `DNA_access.h` ? Differential Revision: https://developer.blender.org/D14427
2022-03-25Cleanup: use array syntax for sizeof, zero before float suffixCampbell Barton
2022-03-24Fix: Volume grid duplication on USD import.Michael Kowalski
Fix provided by Piotr Makal in patch D14204. This patch fixes volume grid duplication which was occurring during importing USD files. This was caused by calling BKE_volume_grid_add twice per grid (excluding 'density' grid) for the same Volume object: (1) in USDVolumeReader::read_object_data and (2) later in BKE_volume_load. Differential Revision: https://developer.blender.org/D14204
2022-03-24Cleanup: clang-formatDalai Felinto
2022-03-24Cleanup: use "filepath" instead of "filename" for full pathsCampbell Barton
Reserve "filename" when only the name component is used.
2022-03-24Cleanup: Clang tidyHans Goudey
- Deprecated headers - Else after return - Inconsistent parameter names (I used the most recently modified) - Raw string literals
2022-03-23Cleanup: add const qualifierKévin Dietrich
This adds a const qualifier to some code path in the Alembic and USD importers. More could be added elsewhere. This change is done as it will be required when GeometrySets are supported and helps keeping diff noise in the patch to a bare minimum.
2022-03-23Cleanup: Run clang-format on the OBJ exporterSergey Sharybin
2022-03-22Fix T96294: Crash and error with shape key normal calculationHans Goudey
A mistake in the mesh normal refactor caused the wrong mesh to be used when calculating normals with a shape key's deformation. This commit fixes the normal calculation by using the correct mesh, with just adjusted vertex positions, and calculating the results directly into the result arrays when possible. This completely avoids the need to make a local copy of the mesh, which makes sense, since the only thing that changes is the vertex positions. Differential Revision: https://developer.blender.org/D14317
2022-03-22Fix T96308: Mesh to BMesh conversion doesn't calculate vertex normalsHans Goudey
Currently there is a "calc_face_normal" argument to mesh to bmesh conversion, but vertex normals had always implicitly inherited whatever dirty state the mesh input's vertex normals were in. Probably they were most often assumed to not be dirty, but this was never really correct in the general case. Ever since the refactor to move vertex normals out of mesh vertices, cfa53e0fbeed7178c7, the copying logic has been explicit: copy the normals when they are not dirty. But it turns out that more control is needed, and sometimes normals should be calculated for the resulting BMesh. This commit adds an option to the conversion to calculate vertex normals, true by default. In almost all places except the decimate and edge split modifiers, I just copied the value of the "calc_face_normals" argument. Differential Revision: https://developer.blender.org/D14406
2022-03-22Obj: try to fix Linux testsAras Pranckevicius
Related to previous D14368 bug fix, the sorting operator was not necessarily a stable order sort.
2022-03-22Fix build when using WITH_TBB=OFF after recent changesBrecht Van Lommel
And wrap tbb::parallel_sort in blender namespace similar to other TBB functionality.
2022-03-21Fix T96511: New OBJ exporter no longer groups faces by materialAras Pranckevicius
Old python exporter in 3.0 and earlier ordered faces by material, but the new C++ exporter in 3.1+ did not, and was just writing them in whatever is the order of the mesh data structure. This mostly does not cause problems, except in some apps e.g. Procreate -- for large enough meshes, this lack of "order by material" (which ends up having more usemtl lines) ends up creating more mesh subsets than necessary inside Procreate. The change is not computationally heavy, e.g. exporting 6-level subdivided Monkey mesh goes 1085ms -> 1105ms on my machine. Reviewed By: @howardt Differential Revision: https://developer.blender.org/D14368
2022-03-21Cleanup: add image_format.cc for functions related to ImageFormatDataBrecht Van Lommel
Also fixes missing code to read/write/free/copy color management settings in various places. This can't be set through the UI currently, but still should be handled consistently.
2022-03-20Fix T96470 new obj exporter writing material groupsAras Pranckevicius
This is patch D14349 from Aras Pranckevicius. The logic in the code was _completely different_ from the documentation and what the python exporter in 3.0 did. The new code assumed that "export material groups" meant "append material name to the object name", and was only ever kicking in when the "export object groups" option was also checked. But the proper behavior (as in 3.0 exporter & the online docs), is to emit g objectname_materialname before each usemtl line. Which is something entirely else.
2022-03-20Fix T96415: new OBJ exporter was applying scaling factor incorrectlyAras Pranckevicius
This is patch D14347 from Aras Pranckevicius. Instead of scaling "the scene" (i.e. transform vertices by object matrix, then multiply by scale factor), it was instead first applying the scale factor in local space, and then transforming by the object matrix.
2022-03-19Fix T96430: new OBJ exporter wrong normals for non-uniform scale, and wrong ↵Aras Pranckevicius
face order for negative scale This applies patch D14343 from Aras Pranckevicius, with a description: The new 3.1+ OBJ exporter did not have correct logic when faced with non-uniform & mirrored (negative on odd number of axes) object scale: - Normals were not transformed correctly (should use inverse transpose of the matrix), and were not normalized, - Face order was not "flipped" when transform has negative scale on odd number of axes (visible when using "face orientation" viewport overlay).
2022-03-18Cleanup: Compilation warningsSergey Sharybin
Mainly -Wset-but-unused-variable. Makes default compilation on macOS way less noisy. Differential Revision: https://developer.blender.org/D14357
2022-03-18Cleanup: unused class members.Kévin Dietrich
2022-03-16Cleanup: rename cnt to countCampbell Barton
Follow naming from T85728.
2022-03-13Fix T96303: C++ OBJ exporter needs presets and skip modifiers.Aras Pranckevicius
This patch, D14303, from Aras Pranckevicius adds presets to the OBJ exporter, and also adds a checkbox (default on) to apply modifiers before export.
2022-03-11Cleanup: use M_PI_2 and M_PI_4 where possibleHallam Roberts
The constant M_PI_4 is added to GLSL to ensure it works there too. Differential Revision: https://developer.blender.org/D14288
2022-03-10Cleanup: spelling in comments & some minor clarificationsCampbell Barton
2022-03-08Cleanup: spelling in commentsCampbell Barton
2022-03-02Merge branch 'blender-v3.1-release'Jacques Lucke
2022-03-02Fix T95692: incorrect interpolated children particle hairJacques Lucke
Differential Revision: https://developer.blender.org/D14227
2022-03-02Cleanup: use back-slash for doxygen commands, color after parametersCampbell Barton
2022-03-01Cleanup: ED_view3d_win_to_delta & ED_view3d_calc_zfac usageCampbell Barton
- Rename ED_view3d_win_to_delta `mval` argument to `xy_delta` as it as it was misleading since this is an screen-space offset not a region relative cursor position (typical use of the name `mval`). Also rename the variable passed to this function which also used the term `mval` in many places. - Re-order the output argument of ED_view3d_win_to_delta last. use an r_ prefix for return arguments. - Document how the `zfac` argument is intended to be used. - Split ED_view3d_calc_zfac into two functions as the `r_flip` argument was only used in some special cases.
2022-02-25Fix T94396: USD errors opening saved scenes.Michael Kowalski
Added call to ensure that the USD plugins are registered when opening a USD cache archive. This is to avoid USD load errors due to missing USD file format plugins when opening blender files that contain USD transform cache constraints and mesh sequence cache modifilers. Fixes T94396
2022-02-24Merge remote-tracking branch 'origin/blender-v3.1-release'Kévin Dietrich
2022-02-24Fix T95959: crash when exporting subdivision to AlembicKévin Dietrich
When exporting generated coordinates, the subdivision export code was using the schema for the non-subdivision case, which is invalid as non-initialized. This typo existed since the initial commit for the feature (rBf9567f6c63e75feaf701fa7b78669b9a436f13dd).
2022-02-22GPencil: Simplify sample modifier improvements.YimingWu
1. Now handles cyclic strokes correctly. 2. Added a sharp threshold value to allow preservation of sharp corners. Reviewed By: Antonio Vazquez (antoniov), Aleš Jelovčan (frogstomp) Ref D14044
2022-02-22Cleanup: clang-formatCampbell Barton