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-02-15Cleanup: split off code from gpu_codegen.c into smaller filesBrecht Van Lommel
2020-02-15Cleanup: work around clang-format differences between versionsBrecht Van Lommel
Ref T73747
2020-02-15Cleanup: spellingCampbell Barton
2020-02-15Cleanup: unused math colorspace definesCampbell Barton
2020-02-15Modifiers: Add option to directly specify a 2D transform for UVWarpLukas Stockner
Currently the only option is to warp based on the transform of other objects, which is inconvenient if you want to e.g. control it through a driver - you need to set up a dummy object and go through that, which is clunky and should be unneccessary. Reviewed By: brecht Differential Revision: https://developer.blender.org/D6690
2020-02-15Cleanup: make BLI_make_exist local to the file selectorCampbell Barton
This isn't a general utility, and the name wasn't descriptive.
2020-02-13Cleanup: pass const variablesCampbell Barton
2020-02-12Cleanup: clang-format.Bastien Montagne
2020-02-11Sculpt: Split normal radius and area radiusPablo Dobarro
This enables an extra layer of control in the sculpt brushes. For now it is enabled only in Scrape, but it should work in all brushes (like normal radius). In the future it may also be enabled in other brushes. You can tweak in this property in the scrape brush to achieve a much better behavior when working on curve surfaces and control how much volume you want to trim. In most cases, it also fixes the bug where the brush keeps trimming in the same area without disabling accumulate. It should be possible to fix some other artifacts in other brushes by tweaking this default property. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D5993
2020-02-11Cleanup: minor edit to last commitCampbell Barton
Avoid repeating the fallback return.
2020-02-11Fix T73348: Surface Deform distortion on bind with small facesCampbell Barton
Thanks to @CodyWinch for finding the root cause
2020-02-11Cleanup: extra semicolons, comma use, undeclared varsCampbell Barton
2020-02-11Cleanup: add license header, use header guardsCampbell Barton
2020-02-10BLI: add utilities for defining non-movable and non-copyable classesJacques Lucke
Structs and classes can subclass these member-free classes privately. Then they become non-movable, non-copyable or both.
2020-02-10BLI: improve various C++ data structuresJacques Lucke
The changes come from the `functions` branch, where I'm using these structures a lot. This also includes a new `BLI::Optional<T>` type, which is similar to `std::Optional<T>` which can be used when Blender starts using C++17.
2020-02-10Cleanup: spellingCampbell Barton
2020-02-09BLI_string_utils: add utility to join a string into a fixed bufferCampbell Barton
2020-02-07BLI: add index_range method to some data structuresJacques Lucke
This can be used to iterate over all indices with less code.
2020-02-07Cleanup: `make format`Dalai Felinto
Remember to run `make format` after cleanups/renames/...
2020-02-07Cleanup: use of 'unsigned'Campbell Barton
- Replace 'unsigned' used on it's own with 'uint'. - Replace 'unsigned const char' with 'const uchar'.
2020-02-06Code_Cleanup_Day/Windows: Clean-up windows API Level.Ray Molenkamp
Not sure when this happened but apparently the lower bar is now windows 7 [1] This patch bumps to API version to 0x0601 (Win7) and cleans up any uses that worked around the globally set API version. [1] https://www.blender.org/download/requirements/ Reviewed By: brecht Differential Revision: https://developer.blender.org/D6758
2020-01-30Merge branch 'blender-v2.82-release'mano-wii
2020-01-30BLI_kdopbvh: Prevent division by zero in raycastmano-wii
2020-01-28Fix T73271, Delaunay Triangulation not robust enough.Howard Trickey
A big rework of the code now uses exact predicates for orientation and incircle. Also switched the main algorithm to use a faster divide and conquer algorithm, which is possible with the exact predicates.
2020-01-27Merge branch 'blender-v2.82-release'Campbell Barton
2020-01-27BLI_rect: add rect-rect intersection checks on a single axisCampbell Barton
2020-01-24Merge branch 'blender-v2.82-release'Alexander Gavrilov
2020-01-24Depsgraph: fix false positive time dependencies for simple drivers.Alexander Gavrilov
The dependency graph has to know whether a driver must be re-evaluated every frame due to a dependency on the current frame number. For python drivers it was using a heuristic based on searching for certain sub- strings in the expression, notably including '('. When the expression is actually evaluated using Python, this can't be easily improved; however if the Simple Expression evaluator is used, this check can be done precisely by accessing the parsed data. Differential Revision: https://developer.blender.org/D6624
2020-01-23Merge branch 'blender-v2.82-release'Sergey Sharybin
2020-01-23CMake: Refactor external dependencies handlingSergey Sharybin
This is a more correct fix to the issue Brecht was fixing in D6600. While the fix in that patch worked fine for linking it broke ASAN runtime under some circumstances. For example, `make full debug developer` would compile, but trying to start blender will cause assert failure in ASAN (related on check that ASAN is not running already). Top-level idea: leave it to CMake to keep track of dependency graph. The root of the issue comes to the fact that target like "blender" is configured to use a lot of static libraries coming from Blender sources and to use external static libraries. There is nothing which ensures order between blender's and external libraries. Only order of blender libraries is guaranteed. It was possible that due to a cycle or other circumstances some of blender libraries would have been passed to linker after libraries it uses, causing linker errors. For example, this order will likely fail: libbf_blenfont.a libfreetype6.a libbf_blenfont.a This change makes it so blender libraries are explicitly provided their dependencies to an external libraries, which allows CMake to ensure they are always linked against them. General rule here: if bf_foo depends on an external library it is to be provided to LIBS for bf_foo. For example, if bf_blenkernel depends on opensubdiv then LIBS in blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES. The change is made based on searching for used include folders such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries to LIBS ion that CMakeLists.txt. Transitive dependencies are not simplified by this approach, but I am not aware of any downside of this: CMake should be smart enough to simplify them on its side. And even if not, this shouldn't affect linking time. Benefit of not relying on transitive dependencies is that build system is more robust towards future changes. For example, if bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES and all such code is moved to bf_blenkernel this will not break linking. The not-so-trivial part is change to blender_add_lib (and its version in Cycles). The complexity is caused by libraries being provided as a single list argument which doesn't allow to use different release and debug libraries on Windows. The idea is: - Have every library prefixed as "optimized" or "debug" if separation is needed (non-prefixed libraries will be considered "generic"). - Loop through libraries passed to function and do simple parsing which will look for "optimized" and "debug" words and specify following library to corresponding category. This isn't something particularly great. Alternative would be to use target_link_libraries() directly, which sounds like more code but which is more explicit and allows to have more flexibility and control comparing to wrapper approach. Tested the following configurations on Linux, macOS and Windows: - make full debug developer - make full release developer - make lite debug developer - make lite release developer NOTE: Linux libraries needs to be compiled with D6641 applied, otherwise, depending on configuration, it's possible to run into duplicated zlib symbols error. Differential Revision: https://developer.blender.org/D6642
2020-01-16Merge branch 'blender-v2.82-release'Lukas Stockner
2020-01-16Fix T73133: UDIM texture count in Eevee is limited by OpenGLLukas Stockner
Based on @fclem's suggestion in D6421, this commit implements support for storing all tiles of a UDIM texture in a single 2D array texture on the GPU. Previously, Eevee was binding one OpenGL texture per tile, quickly running into hardware limits with nontrivial UDIM texture sets. Workbench meanwhile had no UDIM support at all, as reusing the per-tile approach would require splitting the mesh by tile as well as texture. With this commit, both Workbench as well as Eevee now support huge numbers of tiles, with the eventual limits being GPU memory and ultimately GL_MAX_ARRAY_TEXTURE_LAYERS, which tends to be in the 1000s on modern GPUs. Initially my plan was to have one array texture per unique size, but managing the different textures and keeping everything consistent ended up being way too complex. Therefore, we now use a simpler version that allocates a texture that is large enough to fit the largest tile and then packs all tiles into as many layers as necessary. As a result, each UDIM texture only binds two textures (one for the actual images, one for metadata) regardless of how many tiles are used. Note that this rolls back per-tile GPUTextures, meaning that we again have per-Image GPUTextures like we did before the original UDIM commit, but now with four instead of two types. Reviewed By: fclem Differential Revision: https://developer.blender.org/D6456
2020-01-14Cleanup: Use new BLI_rct utilities to ensure valid rectanglesJulian Eisel
Technically this does a slight change to the check in wm_window.c: The assert now also allows zero width/height rectangles.
2020-01-14BLI_rct: Utilities for sanitizing coordinates (ensuring min <= max)Julian Eisel
This might be useful in some places. Much of the code makes the implicit assumption that the rectangle has valid coordinate order, good to make it more explicit.
2020-01-08Fix T72878: Alphabetical sorting in Outliner sorts shorter names lastJulian Eisel
E.g. "Cube" would be placed after "Cube.001", which is not what you'd expect. 2.80 handled this correctly. Loosely based on D6525 by @radcapricorn, but found a bug in that and prefered to do some further adjustments. Also activates test for this case.
2020-01-07Blenlib: Add C++ guard for QueueSergey Sharybin
2020-01-07Cleanup: Remove unused task scheduler constantsSergey Sharybin
2020-01-04BLI_kdopbvh: Deduplicate codemano-wii
No need to create different callbacks for `BLI_task_parallel_range`, these callbacks are called a few times.
2020-01-04BLI_bvhtree_overlap does not work multithreadedmano-wii
`BLI_task_parallel_range` counts the number of tasks depending on the number of items. In the case of `BLI_bvhtree_overlap` the number of items is always between 2 and 16, which makes it always run in single thread. So, set the maximum number of items per thread to 1. In my tests the cloth collision system (which calls that function) went from 0.80fps to 0.88fps. Differential Revision: https://developer.blender.org/D6523
2020-01-04BLI_bvhtree_overlap: Don't use BLI_task API when not neededmano-wii
No functional change.
2020-01-04BLI_bvhtree_overlap: Fix wrong count of child nodesmano-wii
As you can see, here is testing the "children" of `node1`. So bvhtree is `tree1`. This problem has never been observed because usually `tree_type` of `tree1` equals `tree_type` of `tree2`.
2020-01-04BLI_bvhtree_overlap: Make sure the number of nodes matches the number of threadsmano-wii
2020-01-04BLI_bvhtree_overlap: Improve non-multithreaded usagemano-wii
Although not using multithreading, the `thread` parameter in the `BVHTree_OverlapCallback` callback always returned a value between the "number of threads". This parameter should always be 0 in such cases. Also a `BLI_Stack` was created for each "thread" and used. This small overhead is no longer seen. Differential Revision: https://developer.blender.org/D6510
2019-12-25Cleanup: Remove BLI_stringenc_pathLukas Stockner
2019-12-24Action Constraint: introduce a mix mode setting.Alexander Gavrilov
Currently the action channels are applied after the existing transformation, as if the action controlled a child of the bone. This is not very natural, but more importantly, the transform tools are not designed to work conveniently with an additional 'pseudo-child' transformation, resulting in effects like an unexpected pivot location. Implementing a Before mode that integrates the action channels as if applied to a parent allows using the special transform tool code intended for dealing with such constraints. Note that in either mode, Action constraints should be added in reverse order, putting a new constraint before the existing ones that the Action was keyframed to work together. In order to implement the option, extract a utility from the Copy Transform constraint code for combining transforms with special anti-shear scale handling that matches the Aligned Inherit Scale mode. The Before mode also requires switching the constraint to the Local owner space, while the After mode can still use the World space for efficiency as before. Since the constraint doesn't have an Owner space option in the UI, this has to be handled in an RNA setter. For full backward compatibility, the original simple matrix multiplication mode is preserved as the third option, but it is not recommended due to creating shear. Differential Revision: https://developer.blender.org/D6297
2019-12-24Cleanup: correct filenames in commentsCampbell Barton
2019-12-23Fix utility function used for wrong vector sizeSergey Sharybin
Both source and destination are 2D vectors.
2019-12-21Fix crash in delaunay triangulation due to epsilon issues.Howard Trickey
2019-12-18Cleanup: const warning, unused varCampbell Barton
2019-12-18Image Editor: Load UDIMs even if secondary tile is selectedLukas Stockner
Previously the user had to select the 1001 tile for this to work, now any tile will work as long as the 1001 tile still exists on disk.