Changes to remove doubles face creation,
Recent change to remove doubles broke when the new faces already existed (rare occurrence),
however theres no point to return an existing double face.
Now check if the face exists before creating it.
Other changes:
- avoid 2x hash lookups on all mapped verts.
- fill in the vert array instead of calculating from edges.
- remove inefficient search of entire edge-array before adding to it.
(flag verts to ensure they're not used multiple times).
- move logic for transfusing edge-flags to edge creation.
- When rendering in the Viewport, next_tile is sometimes called after a reset has been performed, but before
new tiles were generated. In that case, the tile list would be invalid, causing Blender to crash randomly.
- When generating new tiles, the TileManager would not clear the tile lists before re-generating them, leading
to some tiles being skipped during viewport rendering.
- When popping the next tile from a tile list, a reference to the just-deleted object would be returned, now the
object is copied before deleting it.
This way socket type conversions (such as color to float, or float to vector) do not stop the folding process.
Example: http://www.pasteall.org/pic/show.php?id=96803 (selected nodes are folded).
This commit modifies the TileManager to sort render tiles once after tiling the image,
instead of searching the next tile every time a new tile is acquired by a device.
This makes acquiring a tile run in constant time, therefore the render time is linear
w.r.t. the amount of tiles, instead of the quadratic dependency before.
Furthermore, each (logical) device now has its own Tile list, which makes acquiring
a tile for a specific device easier.
Also, some code in the TileManager was deduplicated.
Reviewers: dingto, sergey
Differential Revision: https://developer.blender.org/D1684
Delimiting on seams was only ever intended for face selection,
Previously this option didn't work for vertices,
now it's fixed the defaults aren't right for vertex/edge select-linked.
Add a workaround that bypasses operator-defaults - since this is such a rare case.
Reasons:
- Only parallelized piece of code gives little local speedup (code block only about 25% quicker even on 1M polys cube).
- No gain nor loss using new BLI_task system.
- At 10% of build, parallelized piece of code is only about 5% of total func runtime (run-time explodes as build proportion increases).
See no point in adding (in utmost best optimistic case, in real use-case, when depsgraph will likely already fire several evaluations in parallel,
speedup would be even smaller) 1% speedup here at the cost of threading complexity...
Note that since later code uses hashes, I don't think it's easy to thread it, so think we can leave with it for now.
- use 'Intersect' prefix for boolean and regular intersection.
hints that they use the same basic logic with different modes.
- 'split by edges' while correct - isn't very descriptive.
This was causing some random black bakes. It was introduced in of of the commits replacing calloc by malloc. Things should be better now.
This error was only noticeable when baking the selected objects (not when baking from selected to active).
- Remove deprecated/unused builders
- Remove unused SCons OSX slave configuration
- Remove SCons slave logic, it is not giving error about unknown building
system used for the slave.