Age | Commit message (Collapse) | Author |
|
Is lazily-initialized array owned by the SubdivCCG. Allows to access
index of a first grid of a given face in the flat array of grids.
Currently unused, but is needed for multires bake.
|
|
|
|
|
|
|
|
Should be no functional changes.
|
|
In preparation of TBB we need to split the finalize function into reduce
and free. Reduce is used to combine results and free for freeing any
allocated memory.
The reduce function is called to join user data chunk into another, to reduce the
result to the original userdata_chunk memory. These functions should have no side
effects so that they can be run on any thread.
The free functions should free data created during execution (TaskParallelRangeFunc).
Original patch by Brecht van Lommel
{rB61f49db843cf5095203112226ae386f301be1e1a}.
Reviewed By: Brecht van Lommel, Bastien Montagne
Differential Revision: https://developer.blender.org/D7394
|
|
Actually, begin will do the entire initialization.
Refine will only refine if there is a topology refiner associated
with the Subdiv descriptor.
Allows to refine Subdiv to new coarse positions without touching
displacement evaluation. Will be needed to update SubdivCCG during
sculpt undo.
|
|
|
|
This implements the Sculpt Mode API functions needed for Face Sets and
visibility management for PBVH_GRIDS. No major changes were needed in
the operators and the sculpt mode code. This implementation stores the
face sets in the base mesh, so faces created in higher subdivision
levels can't be modified individually. Also, we are not checking for
multiple face sets per vertex (that can be added in the future), so
relax tools don't work yet. The rest of the features (paint, undo,
visibility operators..) work as expected.
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D7168
|
|
Currently, there its a function that sets manually the fully_hidden flag
of the nodes from the visibility operators in paint_hide.c. The undo
code was not updating the flag, so the visibility state of the nodes was
incorrect after preforming undo operations. This sometimes was drawing
fully hidden nodes with empty buffers, causing artifacts in the
geometry.
I added a function to mark nodes which visibility state changed (similar
as we are updating the mask flags and the nodes bounding boxes). This
way, the tools, operators and undo code don't have to update the
visibility flags, making everything much simpler to understand and
maintain.
I did not remove the flag update code from the current visibility
operators in this patch, but after reimplementing them (and all the new
ones) in the new visibility system, all visibility updates should be
done using this method and the BKE_pbvh_node_fully_hidden_set function
should be removed.
Reviewed By: jbakker
Maniphest Tasks: T72721
Differential Revision: https://developer.blender.org/D6767
|
|
|
|
These were the last remaining new sculpt tools that did not support multires.
Performance could be improved still, but it should work.
Fixes T68899
|
|
The other direction is faster.
|
|
This is to be used by the new sculpting tools.
|
|
Makes it easier to initialze adjacency, avoid extra re-allocations during
initialization, reduces memory footprint.
|
|
|
|
Deformation of subdivision surface modifier was using wrong coordinates
for the coarse mesh: as the modifier flow goes the coordinates are to be
taken from the input array of coordinates.
|
|
|
|
T68035 by @luzpaz
|
|
TLS and Settings can be used by other types of parallel 'for loops', so
removing 'Range' from their names.
No functional changes expected here.
|
|
Was a mistake in normals calculation: need to consider all grids for correct
average in the center of the face.
Reviewers: brecht
Reviewed By: brecht
Maniphest Tasks: T66712
Differential Revision: https://developer.blender.org/D5254
|
|
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
|
|
The issue was caused by lack of proper accumulation for
averaging. Doing it incrementally introduced a bias.
|
|
|
|
The work data for materials flags was never freed.
|
|
|
|
On CCG side it is done similar to displacement, where we have
a dedicated functor which evaluates displacement. Might be seemed
as an overkill, but allows to decouple SubdivCCG from mesh entirely,
and maybe even free up coarse mesh in order to save some memory.
Some weak-looking aspect is the call to update normals from the
draw manager. Ideally, the manager will only draw what is already
evaluated. But it's a bit tricky to find a best place for this since
we avoid dependency graph updates during sculpt as much as possible.
The new code mimics the old code, this is how it was in 2.7.
Fix shading part of T58307.
|
|
While \file doesn't need an argument, it can't have another doxy
command after it.
|
|
Move \ingroup onto same line to be more compact and
make it clear the file is in the group.
|
|
Needed for clan-format not to wrap onto one line.
|
|
BF-admins agree to remove header information that isn't useful,
to reduce noise.
- BEGIN/END license blocks
Developers should add non license comments as separate comment blocks.
No need for separator text.
- Contributors
This is often invalid, outdated or misleading
especially when splitting files.
It's more useful to git-blame to find out who has developed the code.
See P901 for script to perform these edits.
|
|
|
|
|
|
|
|
Needed for clang formatting to workaround bug/limit, see: T53211
|
|
Display statistics from CCG structure.
This makes values to be different from what is shown in object
mode, since CCG is operating on individual grids, and object
mode will stitch those grids. But on another, those values from
CCG is what sculpt mode is actually "sees" or "uses".
The number of faces should be the same in both sculpt and object
modes.
|
|
|
|
|
|
|
|
|
|
Matches type better, avoiding possible confusion.
|
|
Differential Revision: https://developer.blender.org/D3719
|
|
|
|
|
|
|
|
Makes it so smooth brush works properly, without causing grids
to become disconnected from each other.
This need to optimize the code for brush, to only average edges
and vertices which are adjacent to modified faces.
|
|
Similar to previous commit, but for vertices.
|
|
This information is stored for each non-loose edge.
For each of such edge we store:
- List of CCG faces it is adjacent to.
This way we can easily check whether it is adjacent to
any face which is tagged for update or so.
- List of boundary elements from adjacent grids.
This allows to traverse along the edge and average all
adjacent grids.
|
|
Forgot to free memory used by grid to face mapping array.
|
|
|