Age | Commit message (Collapse) | Author |
|
- BKE_mask_update_scene was only used with do_newframe=FALSE,
removed this argument.
- Made it so BKE_mask_update_scene is able to handle LIB_ID_RECALC_DATA
case. Namely, if mask ID is tagged for data update it means shapekeys
will be re-evaluated (as if do_newframe=true).
If mask id only tagged for LIB_ID_RECALC, then no shapekey evaluation
happens (same as it used to behave before).
This means, doing DAG_id_tag_update(&mask->id, OB_RECALC_DATA) will
lead to shapekeys re-evaluation which is really needed in such
operators as clearing shapekeys (and cleaning shapekeys which is
in tomato branch yet).
This is a bit silly to use OB_RECALC_DATA sine mask is not an OB,
but could not see better way to do it now.
This fixes missing mask re-evaluation after clearing shapekey,
would expect no other functional changes.
|
|
- Added MaskLayer.splines.new (which creates single spline
and returns pointer to it).
- Added MaskLayer.splines.remove() to remove given spline.
- Added MaskSpline.points.new() which creates new point
in the origin and returns pointer to it.
- Added MaskSpline.points.remove() to remove given point.
|
|
|
|
Issue was caused by couple of circumstances:
- Normal Map node requires tesselated faces to compute tangent space
- All temporary meshes needed for Cycles export were adding to G.main
- Undo pushes would temporary set meshes tessfaces to NULL
- Moving node will cause undo push and tree re-evaluate fr preview
All this leads to threading conflict between preview render and undo
system.
Solved it in way that all temporary meshes are adding to that exact
Main which was passed to Cycles via BlendData. This required couple
of mechanic changes like adding extra parameter to *_add() functions
and adding some *_ex() functions to make it possible RNA adds objects
to Main passed to new() RNA function.
This was tricky to pass Main to RNA function and IMO that's not so
nice to pass main to function, so ended up with such decision:
- Object.to_mesh() will add temp mesh to G.main
- Added Main.meshes.new_from_object() which does the same as to_mesh,
but adds temporary mesh to specified Main.
So now all temporary meshes needed for preview render would be added
to preview_main which does not conflict with undo pushes.
Viewport render shall not be an issue because object sync happens from
main thread in this case.
It could be some issues with final render, but that's not so much
likely to happen, so shall be fine.
Thanks to Brecht for review!
|
|
|
|
C with gcc.
helps for finding unused functions and making functions static, also did some minor code cleanup.
|
|
- freeing a mask from RNA BKE_libblock_free() twice on the mask.
- loading a new blend file would only free the mask and not unlink it from nodes - it would access freed memory.
|
|
|
|
|
|
some mask evaluation funcs into mask_evaluate.c
|
|
|
|
only drawing on one side of an unfilled spline.
|
|
feathered masks.
now do intersection checks for both sides of the feather.
|
|
Enable self-intersection check for preview. In own tests average
time for this operation on mango files was ~0.0015sec, and it was
like 20 splines max which still gives pretty smooth performance
on my core quad machine.
Would think let's check how it works for now, if it'll give some
issues here, would just avoid tessellation on every redraw by
storing tessellation in some cache (probably in mask user).
Another change is related on a way which loop to collapse.
Changed length check with AABB size check. A bit slower but
should be a bit more predictable.
|
|
- resolution could become so high that it would wrap around to a negative number, now check for small numbers before doing float division.
- resolution was being calculated in some cases when it already met the clamp value - now this is skipped.
|
|
|
|
|
|
when adding feather points very close together.
|
|
|
|
image viewer should be generally usable now though still some TODO's left.
|
|
|
|
|
|
|
|
the compositor).
notes:
- uncomment #define USE_RASKTER in BKE_mask.h to use the previous mask rasterizer.
- slightly slower for regular masks but significantly faster for feather.
- main benefit is that it threads well so works nice for tile compositor.
- feather is lower quality, can use some improvements here.
- feather can also use some interpolation enhancements, will do later.
|
|
mostly functional but disabled by default (still a little wip).
|
|
functions)
|
|
being developed. Also adds a bit more mask tiling code.
|
|
This creates a list of splines to be rasterized in nitExecution which
is being called from main thread. This should resolve possible threading
issues discovered in tomato branch.
|
|
key data.
useful if you add many keys to one part of a curve, then later want to key another part - but dont want to continuously make the same corrections.
|
|
masks its useful to be able to disable.
also rename RNA to 'use_antialiasing'
|
|
lib. Code is still quite messy but will be replaced when final algo comes in anyway.
|
|
- highlight active mask layers.
- remove keyframes when all layer data is removed.
|
|
|
|
delete, select- etc).
|
|
|
|
|
|
|
|
curves.
|
|
|
|
|
|
|
|
- clear feather weights (alt+s)
- fix for glitch where placing the feather would jitter.
|
|
|