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
2017-12-05Merge branch 'master' into blender2.8Bastien Montagne
2017-12-04Better bevel profile at extreme values of profile.Howard Trickey
Patch from Richard Erhardt, with some additions & modifications. Changes bevel profile shape parameter so that can get arbitrarily near square profile as parameter -> 1. Adds code to make profile=0 case work, at least for cube corners, so changed hard min of profile parameter to 0 from 0.15.
2017-12-04Merge branch 'master' into blender2.8Campbell Barton
2017-12-04Cleanup: styleCampbell Barton
2017-11-26Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: source/blender/editors/mask/mask_draw.c
2017-11-26Removing OMP: bmesh_operators.cBastien Montagne
Two more 'not really useful' cases (OMP only shows some noticeable speedup with above 1M elements, and since this is quick operation anyway compared to even ather basic operators, gain is in the 1% area of total processing time in best case). So not worth parallelizing here, we'll gain much more on tackling heavy operations. ;) And BMesh is free from OMP now!
2017-11-26Removing OMP: bmesh_interp.cBastien Montagne
Performances tests on this one are quite surprising actually... Parallelized loop itself is at least 10 times quicker with new BLI_task code than it was with OMP. And subdividing e.g. a heavy mesh with 3 levels of multires (whole process) takes 8 seconds with new code, while 10 seconds with OMP one. And cherry on top, BLI_task code only uses about 50% of CPU load, while OMP one was at nearly 100%! In fact, I suspect OMP code was not properly declaring outside vars, generating a lot of uneeded locks. Also, raised the minimum level of subdiv to enable parallelization, tests here showed that we only start to get significant gain with subdiv levels of 4, below single threaded one is quicker.
2017-11-26Removing OMP: nuke last usages in bmesh_mesh.cBastien Montagne
Those three ones were actually giving no significant benefits, in fact even slowing things down in one case compared to no parallelization at all (in `BM_mesh_elem_table_ensure()`). Point being, once more, parallelizing *very* small tasks (like index or flag setting, etc.) is nearly never worth it. Also note that we could not easlily use per-item parallel looping in those three cases, since they are heavily relying on valid loop-generated index (or are doing non-threadable things like allocation from a mempool)...
2017-11-26Cleanup: rename edge -> edgesCampbell Barton
2017-11-26Minor improvement to last commitCampbell Barton
Don't operate on multiple boundaries at once, instead keep collapsing from the first selected boundary.
2017-11-26BMesh: improve edge rotate when edges share facesCampbell Barton
Previously outcome depended on order of edges, now the longest boundary edges are rotated first, then the faces connected edges. This gives more predictable results, allowing regions containing a vertex fan to be rotated onto the next vertex.
2017-11-26Cleanup: move edge-rotate into own fileCampbell Barton
2017-11-26Fix for Fix (c): broken atomic lock in own bmesh code.Bastien Montagne
That was a nasty one, Debug build would never have any issue (even tried with 64 threads!), but Release build would deadlock nearly immediately, even with only 2 threads! What happened here (I think) is that gcc optimizer would generate a specific path endlessly looping when initial value of virtual_lock was FLT_MAX, by-passing re-assignment from v_no[0] and the atomic cas completely. Which would have been correct, should v_no[0] not have been shared (and modified) by multiple threads. ;) Idea of that (broken) for loop was to avoid completely calling the atomic cas as long as v_no[0] was locked by some other thread, but... Guess the avoided/missing memory barrier was the root of the issue here. Lesson of the evening: Remember kids, do not trust your compiler to understand all possible threading-related side effects, and be explicit rather than elegant when using atomic ops! Side-effect lesson: do check both release and debug builds when messing with said atomic ops...
2017-11-25Fix broken atomic_cas lock in own recent commit in bmesh.Bastien Montagne
Using atomic cas correctly is really hairy... ;) In this case, the returned value from cas needs to validate *two* conditions, it must not be FLT_MAX (which is our 'locked' value and would mean another thread has already locked it), but it also must be equal to previously stored value... This means we need two steps per loop here, hence using a 'for' loop instead of a 'while' one now. Note that collisions are (as expected) very rare, less than 1 for 10k typically, so did not catch the issue initially (also because I was mostly working with release build to check on performances...).
2017-11-24Merge branch 'master' into blender2.8Bastien Montagne
2017-11-24Cleanup leftover timing debug prints from own recent commits.Bastien Montagne
Sorry about that...
2017-11-24Merge branch 'master' into blender2.8Campbell Barton
2017-11-24Cleanup: -Wnonnull-compare GCC warningCampbell Barton
2017-11-23Merge branch 'master' into blender2.8Bastien Montagne
2017-11-23Getting rid of OMP: first usage of new parallel BMesh items iteration instead.Bastien Montagne
`BM_mesh_normals_update` was converted from OMP to new parallel iterator code, basic test with heavily subdivided cube (24.5k faces) gives: - old OMP code: average 10ms per run. - new BLI_task code: average 6ms per run. So new code seems to be easily 40% quicker, in addition to getting rid of OMP. ;) Reviewers: sergey, campbellbarton Differential Revision: https://developer.blender.org/D2930
2017-11-23BMesh: add limited support for parallelization over some basic iterators.Bastien Montagne
This merely uses new memloop/task looper over vertex/edge/face mempools. Quite obviously, only BM_VERTS/EDGES/FACES_OF_MESH iterators are supported.
2017-11-22Merge branch 'master' into blender2.8Sergey Sharybin
2017-11-22Removing OMP: get rid of usages in /bmesh/ area.Bastien Montagne
Just removing it, such cases are not bottlenecks and not worth the complication of doing real threading with own BLI_task. Other (remaining) usages may be relevant, need case-by-case check.
2017-11-20Merge branch 'master' into blender2.8Campbell Barton
2017-11-20UV Cube Project: improve default behaviorCampbell Barton
- initialize the cube-size from the bounding box when it's not set. - no longer wrap faces to keep in 0-1 bounds, other projection methods don't do this and calculating the scale prevents the UV's from being too far outside the view.
2017-11-05Merge branch 'master' into blender2.8Campbell Barton
2017-11-05Cleanup: spellingCampbell Barton
2017-11-02Merge branch 'master' into blender2.8Campbell Barton
2017-11-01Cleanup: styleCampbell Barton
2017-10-29Merge branch 'master' into blender2.8Sybren A. Stüvel
2017-10-29BMesh: use heap update for dissolve-decimateCampbell Barton
2017-10-29BLI_heap: minor changes to the APICampbell Barton
Recent addition of 'reinsert' didn't match logic for ghash API. Rename to BLI_heap_node_value_update, also add BLI_heap_insert_or_update since it's a common operation.
2017-10-28Use BLI_heap_reinsert for decimate and beautifyCampbell Barton
Improves performance for high poly meshes, ~70% faster for decimate, only ~10% for beautify.
2017-10-27Merge branch 'master' into blender2.8Campbell Barton
2017-10-27Fix T53131: Incorrect vert-edge angle calculationCampbell Barton
Vertex w/ a single edge wasn't detected
2017-10-24Merge branch 'master' into blender2.8Sergey Sharybin
2017-10-24Fix T53143: Knife Crash after Grid FillCampbell Barton
BM_ELEM_INTERNAL_TAG flag wasn't ensured to be cleared.
2017-10-24Fix edge-split bmesh operator giving empty resultCampbell Barton
2017-10-23Merge branch 'master' into blender2.8Julian Eisel
2017-10-22Polyfill Beautify: half-edge optimizationCampbell Barton
Was using an edge hash for triangle -> edge lookups, updating triangle indices for each edge-rotation. Replace this with half-edge which can rotate edges much more simply, writing triangles back once the solution has been calculated. Gives ~33% speedup in own tests.
2017-10-20Merge branch 'master' into blender2.8Campbell Barton
2017-10-20Cleanup: redundant castsCampbell Barton
2017-10-06Merge branch 'master' into blender28Campbell Barton
2017-10-06Cleanup: Math lib naming (use v3 suffix)Campbell Barton
2017-10-04Merge branch 'master' into blender2.8Sergey Sharybin
2017-10-04Fix T52923: Circle diameter is in fact radiusCampbell Barton
2017-09-29Merge branch 'master' into blender2.8Campbell Barton
2017-09-29Drop platform support for Solaris & AIXCampbell Barton
These platforms didn't see maintenance in years. This commit just removes ifdef's & cmake check.
2017-09-26Merge branch 'master' into blender2.8Campbell Barton
2017-09-26Beauty fill was skipping small facesCampbell Barton