Age | Commit message (Collapse) | Author |
|
Many parts of the compositor are unnecessarily complicated. This patch
aims at reducing the complexity of writing nodes and making the code
more transparent.
== Separating Nodes and Operations ==
Currently these are both mixed in the same graph, even though they have
very different purposes and are used at distinct stages in the
compositing process. The patch introduces dedicated graph classes for
nodes and for operations.
This removes the need for a lot of special case checks (isOperation etc.)
and explicit type casts. It simplifies the code since it becomes clear
at every stage what type of node we are dealing with. The compiler can
use static typing to avoid common bugs from mixing up these types and
fewer runtime sanity checks are needed.
== Simplified Node Conversion ==
Converting nodes to operations was previously based on "relinking", i.e.
nodes would start with by mirroring links in the Blender DNA node trees,
then add operations and redirect these links to them. This was very hard
to follow in many cases and required a lot of attention to avoid invalid
states.
Now there is a helper class called the NodeConverter, which is passed to
nodes and implements a much simpler API for this process. Nodes can add
operations and explicit connections as before, but defining "external"
links to the inputs/outputs of the original node now uses mapping
instead of directly modifying link data. Input data (node graph) and
result (operations graph) are cleanly separated.
== Removed Redundant Data Structures ==
A few redundant data structures have been removed, notably the
SocketConnection. These are only needed temporarily during graph
construction. For executing the compositor operations it is perfectly
sufficient to store only the direct input link pointers. A common
pointer indirection is avoided this way (which might also give a little
performance improvement).
== Avoid virtual recursive functions ==
Recursive virtual functions are evil. They are very hard to follow
during debugging. At least in the parts this patch is concerned with
these functions have been replaced by a non-virtual recursive core
function (which might then call virtual non-recursive functions if
needed). See for example NodeOperationBuilder::group_operations.
|
|
add normal_poly_v3
|
|
handling.
Most notably, BM_LOOP and BM_FACE index recompute should now be fully decoupled.
|
|
Odd I did not catch this one... :/
|
|
We really should not have Object.imat_ren, that's the wrong place to put render
data. But just update it now on rotation rather than doing a bigger refactor to
remove it.
|
|
For now disable using linked edit mesh in the meshdeform modifier.
This is because editbmesh_get_derived_cage_and_final() might easily
conflict with the thread which evaluates object which is in the edit
mode for this mesh.
We'll support this case once granular dependency graph is landed.
|
|
Root of issue is probably in AUDASPACE itself (or even in OpenAL?).
Issue not present with SDL backend, only OpenAL afaik.
For now, workaround in Blender is to call seek twice when starting play
(not needed when resuming from pause).
|
|
|
|
|
|
|
|
properties.
|
|
RNA is low level data access, setting mesh values shouldn't change draw options.
Also its redundant to name attrs Face.freestyle_face_mark,
removed edge/face from attr names
|
|
|
|
marks.
This revision also addresses the issue of these properties not shown in the Outliner
in the Datablocks display mode. Now Freestyle edge/face marks can be keyframed
through the Outliner.
|
|
- BLI_ghashutil_strhash_n takes string length, to avoid terminating the string before hashing.
- BLI_ghashutil_inthash/uinthash take ints, to avoid casting to (void *)
This also showed up incorrect use of inthash, which was using a pointer.
|
|
|
|
One should always be wary of last minute changes, especially in comples code area... :/
|
|
deprecated settings
|
|
Clamped the EWA sampling region to buffer size now. Solves the issue,
but needs more tests to be sure weights are correct.
|
|
|
|
Missing color copy, noticed by @campbellbarton, thanks!
|
|
|
|
This was rather a TODO item related on supporting the proper painting color
space, but added a small tweaks which will make things working for now in
most of the situation (assuming the default view of display is ivnertible,
as it is to be expected to be anyway).
Shouldn't give much overhead since the conversion processors are cached in
the color management code.
And for the note: no, projection painting does not requite such a tweak
because viewport works in sRGB space anyway.
|
|
Either was some residue from the past or somebody didn't implement this in
the right way.
Also fixed memory leak in ED_space_clip_color_sample() caused by missing
image buffer release.
|
|
|
|
be cached and reused.
|
|
Naming:
Change pressure to size_pressure, it notes correctly that this value is
updated and expected to be used for size updating only.
Change name of cursor function and since it is used for uv sculpting
only now move to the relevant file. Also cleanup unneeded functionality
from function.
Stroke:
Separate updating of stroke variables to invariants (updated when
stroke->init = false) and variants.
|
|
texture nodes.
Adopt a similar system to texture sampling for painting.
|
|
|
|
Note that this commit completely replaces old behavior of the auto_smooth feature in BI.
Also note that split normals are only handled when no "advanced geometry post-processing" is used
(something like Displace will obviously break it, since it has to re-compute normals after displacement...).
Reviewers: brecht
Reviewed By: brecht
CC: campbellbarton
Differential Revision: https://developer.blender.org/D368
|
|
Mostly monkey coding in gpu ("modern" VBO drawing) and DM variants ("legacy" drawing) code...
Reviewers: brecht
Reviewed By: brecht
CC: campbellbarton
Differential Revision: https://developer.blender.org/D367
|
|
* Merely a re-implementation of core split algorithm for BMesh, taking advantage of topological data available.
* This code needs valid loop indices, so added BM_LOOP support to BM_mesh_elem_index_ensure() & co.
Reviewers: campbellbarton
Reviewed By: campbellbarton
CC: brecht
Differential Revision: https://developer.blender.org/D366
|
|
here):
* Add a new calcLoopNormals function to DerivedMesh struct, and implement it for CDDM and CCGDM (subsurf).
EditDerivedBMesh (edit mode DM) only gets a dummy one in this commit.
* Add a tessellated version of CD_LOOPNORMAL layer (CD_TESSLOOPNORMAL), with relevant code to handle it
(tessellation, rna access, etc.).
* Change auto_smooth options of Mesh (angle now in radian internaly, and toggle is now used to enable/disable
split normals in DM creation process). Note BI render code is not touched here, hence its behavior regarding
this option is now incoherent, will be addressed in a separate commit.
Reviewers: campbellbarton
CC: brecht
Differential Revision: https://developer.blender.org/D365
|
|
too short."
This reverts own commit e9d733a8bd9ebf803d4afac419670974792a3c0d.
Turns out there is no consensus here, better to open a design task. :/
|
|
|
|
|
|
Do not use compat version, we do not have a valid previous value really
to use here.
|
|
|
|
de-duplicate object drawing code between offscreen buffer and regular view3d.
Also skip drawing grease pencil and setting pixelspace when drawing from lamps.
|
|
|
|
This could go in 2.70a
|
|
HSL/HSV value would still get converted from linear values.
|
|
Fixed the part with missing tiles highlight and render info when rendering
different scene via the render layers node.
Displaying of the rendered result for a different scene after the render
is finished is still not "fixed". That's an intended behavior actually
to display render result for an active scene.
|
|
HSL sliders jumping. The issue here is that we store HSV in display
space.
To correctly account for that, made sure HSV/HSL is now using the
displayed
color to compute the values in the sliders. RGB values still show
the property values (linear for linear, gamma corrected for gamma
corrected)
We could change the way we store HSV uniformly (ie in all the code), but
we would need to add many more conversions in the picker code to account
for storing it that way. Also it doesn't make sense: Color pickers
should help with -visible- color selection. It may
be worth changing the RGB sliders as well.
My fix takes into account the way HSV is stored in HSVCube as well in
the code.
|
|
changes.
|
|
Fix wrong quat being calculated for curve's path.
Also avoid some divisions by zero.
Happened in cases when all the curve points have the same coord.
|
|
It has no benefits over other BVH types, as far as I know it was only added
because it was possible. This also fixes T39344.
|
|
It's possible that effetc strip would be placed to the same
'machine' as it's inputs. We don't want to clear such strips
from the stack.
|
|
Added a NULL-pointer check for now, actual issue might be
burried somewhere else (aka maybe traversal of the WM is
not actually correct here?)
|
|
The issue was caused by the readEWA spending loads of time trying
to sample regions outside of the buffer.Solved by adding an early
exit check.
We could also clamp the sampling region to the rect, but it's
not so much clear whether weight will be correct in such case
so left it for the future.
|