Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
The issue was caused by SpinLock implementation in old pthreads we ar eusing on
Windows. Using newer one (2.10-rc) demonstrates same exact behavior. But likely
using own atomics and memory barrier based implementation solves the issue.
A bit annoying that we need to change such a core part of Blender just to make
specific CPU happy, but it's better to have artists happy on all computers.
There is no expected downsides of this change, but it is so called "works for
me" category. Let's see how it all goes.
|
|
|
|
future use.
|
|
|
|
The legacy algorithm only considers two adjacent points when computing
the bezier handles, which cannot produce satisfactory results. Animators
are often forced to manually adjust all curves.
The new approach instead solves a system of equations to trace a cubic spline
with continuous second derivative through the whole segment of auto points,
delimited at ends by keyframes with handles set by other requirements.
This algorithm also adjusts Vector handles that face ordinary bezier keyframes
to achieve zero acceleration at the Vector keyframe, instead of simply pointing
it at the adjacent point.
Original idea and implementation by Benoit Bolsee <benoit.bolsee@online.be>;
code mostly rewritten to improve code clarity and extensibility.
Reviewers: aligorith
Differential Revision: https://developer.blender.org/D2884
|
|
Also minor readability changes, avoid running both heap_up/down
gives minor speedup too.
|
|
|
|
|
|
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.
|
|
Improves performance for high poly meshes,
~70% faster for decimate, only ~10% for beautify.
|
|
Allows avoiding remove/insert calls.
|
|
The single byte version of hash_data was casting from unsigned char
instead of signed.
This didn't cause any errors since the result of each aren't compared.
Even so, better keep them matching.
|
|
|
|
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.
|
|
|
|
Convention was only followed loosely,
apply to DNA where changes aren't likely to conflict.
(Skipped ModifierType for eg).
|
|
|
|
|
|
Original code by @mano-wii, modified for general use.
|
|
These platforms didn't see maintenance in years.
This commit just removes ifdef's & cmake check.
|
|
Replace iroundf with round_fl_to_int, add other types
|
|
|
|
Only lock tri's facing different directions.
Needed because scanfill creates zero area faces.
|
|
mistakenly considering the state as degenerated"
This reverts commit a8f11f5422afa01608817755eea310e987f896be.
Result is no longer symmetrical, will investigate a different fix.
|
|
considering the state as degenerated
|
|
|
|
|
|
|
|
|
|
This allows to have different macro headers without them sharing
similar names to regular C modules.
|
|
Some error checks weren't being done in both directions
when calculating the best split direction for a quad.
|
|
|
|
Integer division that floors on negative output (like Python's).
|
|
Needed for 3D iterative edge-rotation to avoid flipping when projected
from different angles,
but could keep zero area faces in 2D polygons.
|
|
|
|
Also use assert w/ rotate_m4.
|
|
|
|
|
|
Was already used in two other headers, remove underscore prefix.
|
|
So we can use in headers without pulling in many other defines.
|
|
Includes a version that takes a separator and macros for convenience.
|
|
Useful when ghash keys are reallocated.
|
|
This exposes end-point bias argument, needed in rare cases.
|
|
|
|
|
|
This will allow much finer controll over how we copy data-blocks, from
full copy in Main database, to "lighter" ones (out of Main, inside an
already allocated datablock, etc.).
This commit also transfers a llot of what was previously handled by
per-ID-type custom code to generic ID handling code in BKE_library.
Hopefully will avoid in future inconsistencies and missing bits we had
all over the codebase in the past.
It also adds missing copying handling for a few types, most notably
Scene (which where using a fully customized handling previously).
Note that the type of allocation used during copying (regular in Main,
allocated but outside of Main, or not allocated by ID handling code at
all) is stored in ID's, which allows to handle them correctly when
freeing. This needs to be taken care of with caution when doing 'weird'
unusual things with ID copying and/or allocation!
As a final note, while rather noisy, this commit will hopefully not
break too much existing branches, old 'API' has been kept for the main
part, as a wrapper around new code. Cleaning it up will happen later.
Design task : T51804
Phab Diff: D2714
|
|
|