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-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-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-02Cleanup: use back-slash for doxygen commands, color after parametersCampbell Barton
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2022-02-10Correction to previous Clang strict warning commitSergey Sharybin
Need to only pop diagnostic if it was really pushed. Pointed out by Aras Pranckevicius, thanks!
2022-02-10Fix compilation with strict Clang flagsSergey Sharybin
There is no `-Wformat-truncation` warning in Clang, so tweak checks around diagnostics pragma accordingly.
2022-02-06Further speedup of new obj exporter.Aras Pranckevicius
This change from Aras further parallelizes wihin large meshes (the previous one just parallelized over objects). Some stats: on A Windows machine, AMD Ryzen (32 threads): (one mesh) Monkey subdivided to level 6: 4.9s -> 1.2s (blender 3.1 was 6.3s; 3.0 was 49.4s). (one mesh) "Rungholt" minecraft level: 8.5s -> 2.9s (3.1 was 10.5s; 3.0 was 73.7s). (lots of meshes) Blender 3 splash: 6.2s -> 5.2s (3.1 was 48.9s; 3.0 was 392.3s). On a Linux machine (Threadripper, 48 threads, writing to SSD): Monkey - 5.08s -> 1.18s (4.2x speedup) Rungholt - 9.52s -> 3.22s (2.95x speedup) Blender 3 splash - 5.91s -> 4.61s (1.28x speedup) For details see patch D14028.
2022-02-06Merge branch 'blender-v3.1-release'Howard Trickey
Also fixed conflicts due to the change in file writing in the new obj exporter in master, and fixed one of the tests that was added in master but not 3.1.
2022-02-06Fix T95360, new 3.1 obj exporter losing nurbs curve "endpoint".Aras Pranckevicius
The new wavefront .obj exporter in 3.1 was producing slightly invalid parm line syntax (missing u), and was not setting first/last N params to zeroes and ones for curves with "endpoint" flag properly.
2022-02-02Cleanup: spelling in commentsCampbell Barton
2022-01-30Speed up the new OBJ exporter via bigger write buffer and parallelization.Aras Pranckevicius
This is a patch from Aras Pranckevicius, D13927. See that patch for full details. On Windows, the many small fprintfs were taking up a large amount of time and significant speedup comes from using snprintf into chained buffers, and writing them all out later. On both Windows and Linux, parallelizing the processing by Object can also lead to a significant increase in speed. The 3.0 splash screen scene exports 8 times faster than the current C++ exporter on a Windows machine with 32 threads, and 5.8 times faster on a Linux machine with 48 threads. There is admittedly more memory usage for this, but it is still using 25 times less memory than the old python exporter on the 3.0 splash screen scene, so this seems an acceptable tradeoff. If use cases come up for exporting obj files that exceed the memory size of users, a flag could be added to not parallelize and write the buffers out every so often.
2022-01-24Cleanup: spelling in commentsCampbell Barton
2022-01-22Fix T13879 new OBJ exporter not saving files with Unicode characters.Aras Pranckevicius
Need to use BLI_fopen instead of fopen.
2022-01-21.obj: simplify templates in FileHandler, add commentsAnkit Meel
- Remove redundant template from `FormattingSyntax`. - Replace one enable_if with static assert for readability - Add comments No functional change expected. Reviewed by: jacqueslucke Differential Revision: https://developer.blender.org/D13882
2022-01-18Fix obj exporter tests by deduping normals and printing with less precision.Howard Trickey
Some new obj exporter tests were disabled because the normals were different in the last decimal place on different platforms. The old python exporter deduped normals with their coordinates rounded to four decimal places. This change does the same in the new exporter. On one test, this produced a file 25% smaller and even ran 10% faster.
2022-01-06Cleanup: spelling in commentsCampbell Barton
2022-01-03Add a new C++ version of an exporter for the Wavefront .obj format.Howard Trickey
This was originally written by Ankit Meel as a GSoC 2020 project. Howard Trickey added some tests and made some corrections/modifications. See D13046 for more details. This commit inserts a new menu item into the export menu called "Wavefront OBJ (.obj) - New". For now the old Python exporter remains in the menu, along with the Python importer, but we plan to remove it soon (leaving the old addon bundled with Blender but not enabled by default).