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-23Mikktspace: Reduce number of data queries to callerLukas Stockner
The current code for computing tangents is not exactly fast. This has been a long-standing issue, and recently came up again with T97378. The main bottleneck is fetching the mesh data, since it's handled through a callback system and each vertex might have its data queried dozens of times. I've tried a lot of things to optimize `mikktspace.c`, but unfortunately most weren't that useful: - Vectorizing SVec3 gives a ~5% speedup, but I'm not sure if the additional ~70 lines of code are worth it - Keeping an internal copy of the data instead of re-querying all the time helps a lot (~50-60% time reduction), but requires a lot of extra memory (~100 byte per face) - Going C++ and replacing the internal quicksort with std::sort shows no difference - Restructuring the entire file to be a header-only library so that the callbacks can be inlined gives ~10% reduction, but is a major change and deviation from the original library In the end, two simple fixes that actually help remain: - Don't re-query the number of faces in each loop iteration - Don't bother looking for identical vertices if there's only one vertex with that hash With this, time for the test case in T97378 goes from 6.64sec to 4.92sec. It's something I guess. I feel like completely refactoring this library would not be a bad idea at some point, but for now it does the job... Differential Revision: https://developer.blender.org/D14675
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-02-11File headers: use SPDX for Zlib licenseCampbell Barton
2021-10-04Cleanup: pass arguments as constCampbell Barton
2021-06-24Cleanup: use '#if 0' for commented code-blockCampbell Barton
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2020-10-19Spelling: It's Versus ItsHarley Acheson
Corrects incorrect usage of contraction for 'it is', when possessive 'its' was required. Differential Revision: https://developer.blender.org/D9250 Reviewed by Campbell Barton
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-01-31Fix more undefined behavior in tangent space computationBrecht Van Lommel
Ref D6677
2020-01-27Fix undefined behavior in tangent space computationSimon G
Use an improved implementation for circular shift. Differential Revision: https://developer.blender.org/D6677
2019-10-03Cleanup: unused structs, struct membersCampbell Barton
2019-05-01Cleanup: comments (long lines) in mikktspaceCampbell Barton
2019-04-17ClangFormat: format '#if 0' code in intern/Campbell Barton
2019-04-17ClangFormat: apply to source, most of internCampbell Barton
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
2019-02-18doxygen: add newline after \fileCampbell Barton
While \file doesn't need an argument, it can't have another doxy command after it.
2019-02-06Cleanup: remove redundant doxygen \file argumentCampbell Barton
Move \ingroup onto same line to be more compact and make it clear the file is in the group.
2017-11-17Mikktspace: Speed up the merging of identical verticesLukas Stockner
Previously, Mikktspace just bucketed the vertices based on one spatial coordinate and then ran full pairwise comparisons inside each bucket. However, since models are three-dimensional, the bucketing has a massive false-positive rate, and since pairwise comparison is O(n^2), the merging process is very slow. But, since we only care about exactly identical vertices, there is a much more efficient approach - we can just hash all values belonging to each vertex and form buckets based on the hash. Since the hash has 32 bits and considers all values, false-positives are very unlikely - and since both hashing and the radixsort that's used for bucketing are O(n), both asymptotical and real-world performance (as well as code complexity) are significantly improved.
2017-09-19Fix T52818: Tangent space calculation is really slow for high-density mesh ↵Sergey Sharybin
with degenerated topology Now we replace O(N^2) computational complexity with O(N) extra memory penalty. Memory is much cheaper than CPU time. Keep in mind, memory penalty is like 4 megabytes per 1M vertices.
2017-09-19Mikkspace: Cleanup, reduce indentation levelSergey Sharybin
2017-08-25Fix for fix (tm): Residue of the debug codeSergey Sharybin
2017-08-25Fix mistake in previous tangent space optimizationSergey Sharybin
2017-08-25Another optimization of tangent space calculationSergey Sharybin
Don't use quick sort for small arrays, bubble sort works way faster for small arrays due to cache coherency. This is what qsort() from libc is doing actually. We can also experiment unrolling some extra small arrays, for example 3 and 4 element arrays. This reduces tangent space calculation for dragon from 3.1sec to 2.9sec.
2017-08-25Optimize tangent space calculation by inlining functionsSergey Sharybin
Brings tangent space calculation from 4.6sec to 3.1sec for dragon model in BI. Cycles is also somewhat faster, but it has other bottlenecks. Funny thing, using simple `static inline` already gives a lot of speedup here. That's just answering question whether it's OK to leave decision on what to inline up to a compiler..
2017-08-03mikktspace: minor optimizationCampbell Barton
Add a safe version of normalize since all uses of normalize did zero length checks, move this into a function. Also avoid unnecessary conversion. Gives minor speedup here (approx 3-5%).
2016-10-06Fix T49523: very slow normal map tangent computation for rendering in 2.78.Brecht Van Lommel
2016-09-18Fix T49384: crash in tangent space calculation with NaN mesh vertices.Brecht Van Lommel
2016-03-13Cleanup: warningCampbell Barton
2013-12-22Style Cleanup: remove preprocessor indentation (updated wiki style guide too)Campbell Barton
2013-09-09fix [#36685] crash calculating tangent space data on degenerate geometryCampbell Barton
the error was that the range check was done on the float before converting to an int. now convert to and int first and ensure a valid range on that.
2013-08-07code cleanup: some structs were declaring data when only typedef's were ↵Campbell Barton
intended, make local vars and functions static.
2012-09-20code cleanup: remove unused macros, commet some which may be useful later - ↵Campbell Barton
or good to keep for completeness. quieted some warnings and add flags -Wmissing-include-dirs and -Wno-div-by-zero to cmake/gcc
2012-09-15quiet -Wmissing-prototypes warnings, and enable this warning by default for ↵Campbell Barton
C with gcc. helps for finding unused functions and making functions static, also did some minor code cleanup.
2012-06-07style cleanupCampbell Barton
2012-06-05style cleanupCampbell Barton
2012-04-28style cleanup: changes to brace placement / newlines - for/while/if/switchCampbell Barton
2011-12-23Code cleanup: fix some clang static checker warnings.Brecht Van Lommel
2011-10-06set mikktspace functions as static which are not used externally.Campbell Barton
2011-07-16print an error message if Python.h can't be found for cmake and scons since ↵Campbell Barton
its such a common problem.
2011-03-29use 'is None' rather then '== None' as suggested by python docs & mis-spelling.Campbell Barton
2011-03-28misc nodes & editors: floats were being implicitly promoted to doubles, ↵Campbell Barton
adjust to use floats. + minor update to demo_mode
2011-03-19remove some redundant vars, assignments & checks.Campbell Barton
2011-03-08Apply a small patch from mikktspace author Morten Mikkelsen (cosmetic changes).Nathan Letwory
2011-02-25doxygen: intern/mikktspace tagged.Nathan Letwory
2011-02-18malloc() comes from stdlib.h per K&R ANSI C, C89 & C99.Guillermo S. Romero
If some plataform really needs malloc.h, that is the exception to get #ifdef.
2011-02-17apply fix [#26117] Recent changes to "mikktspace.c" broke building on ↵Campbell Barton
FreeBSD. Patch attached. also check for NetBSD. note: we probably should use define HAVE_MALLOC_H, seems common for other projects.
2011-02-16The modifications in mkktspace broke compilation on gcc 4.2.xM.G. Kishalmi
This is a patch proposed by sparky_ on irc.
2011-02-16fix from mikes for building on apple with gcc 4.2.1Campbell Barton
2011-02-15Fix from sparky for compile problem with older GCCNathan Letwory
2011-02-15Move mikktspace code to own library, so it is clear that it is alsoNathan Letwory
intended as a standalone library for use in other applications that want the same tangent space as Blender. This also keeps blenkernel clean(er) from extra math functions.