Commit Graph

9840 Commits

Author SHA1 Message Date
Sergey Sharybin
f030758515 Tag object-data level boundbox as invalid rather than freeing it
Object update used to free object-data level bounding box to trigger
it's re-calculation in the future. Such a freeing performed from
object update isn't thread-safe because mesh could be shared between
multiple objects.

Rather than freeing bounding box, tag it's as invalid, this is safe
from threading point of view and also prevents unnecessary memory
re-allocation.

Object-level bounding box is still reallocating, but think we could
change this easily in the future as well.

--
svn merge -r58154:58156 -r59258:59259 ^/branches/soc-2013-depsgraph_mt
2013-08-19 09:58:28 +00:00
Sergey Sharybin
2dcb1d7002 Remove unused bounding box from MetaBall
--
svn merge -r58150:58151 ^/branches/soc-2013-depsgraph_mt
2013-08-19 09:41:13 +00:00
Sergey Sharybin
7ef3f98de1 Made curves almost thread-safe
Now modifier stack wouldn't modify original curve's nurbs
and will operate on a copy of nurbs.

This makes it possible to process curve object update with
shared curve datablocks from multiple threads. There's no
big overhead for creating a copy of nurbs comparing to old
behavior which was allocating original vertex array and
apply coordinates on curve after all modifier are applied.

The only remained issue with curves is curve's bounding box
and texture space. It's not thread-safe, but it wouldn't
lead to crashes -- it just could lead to either memory
leak or wrong texture coordinates due to difference in
modifiers stacks of objects which shares the same curve.

--
svn merge -r57959:57961 ^/branches/soc-2013-depsgraph_mt
2013-08-19 09:36:40 +00:00
Sergey Sharybin
345fff872b Remove unused argument from utility curve functions
So far it was harmless, but with upcoming changes having this
argument could be confusing from logic point of view

--
svn merge -r57958:57959 ^/branches/soc-2013-depsgraph_mt
2013-08-19 09:29:51 +00:00
Sergey Sharybin
527ddb0a5b Move bevel list and path from Curve to Object datablock
I know this is not so much nice to have this guys hanging
around in a general Object datablock and ideally they better
be wrapped around into a structure like DerivedMesh or
something like this. But this is pure runtime only stuff and
we could re-wrap them around later.

Main purpose of this is making curves more thread safe,
so no separate threads will ever start freeing the same path
or the same bevel list.

It also makes sense because path and bevel shall include
deformation coming from modifiers which are applying on
pre-tesselation point and different objects could have
different set of modifiers. This used to be really confusing
in the past and now data which depends on object is stored
in an object, making things clear for understanding even.

This doesn't make curve code fully thread-safe due to
pre-tesselation modifiers still modifies actual nurbs and
lock is still needed in makeDispListsCurveTypes, but this
change makes usage of paths safe for threading.

Once modifiers will stop modifying actual nurbs, curves
will be fully safe for threading.

Actually, this commit also contains wrapping runtime curve
members into own structure

This allows easier assignment on file loading, keeps curve-
specific runtime data grouped and saves couple of bytes in
Object for non-curve types.

--
svn merge -r57938:57939 ^/branches/soc-2013-depsgraph_mt
svn merge -r57957:57958^/branches/soc-2013-depsgraph_mt
2013-08-19 09:25:24 +00:00
Sergey Sharybin
0312b18319 Get rid of a display list stored in Curve datablock
This display list was only used for texture space calculation,
and even there this display list was only used for bounding
box calculation.

Since we already do have bounding box in a curve datablock
there's no reason to duplicate non-modified display list
just to calculate bounding box later, let's just calculate
bounding box at the first point.

This makes code a little be more thread-safe but curves are
still not safe for threads at all because of bevel list and
path. That would be solved later.

--
svn merge -r57939:57940 ^/branches/soc-2013-depsgraph_mt
2013-08-19 09:13:15 +00:00
Sergey Sharybin
beffaa293e Made modifiers_getVirtualModifierList safe for threading
Move static variables to context filling in by this fcuntion
and owned by a callee function. This ensures no conflicts
between threads happens because of static variables used in
this function.

Also moved modifier types and virtual modifiers data to a
function called from creator. This is needed to be sure all
the information is properly initialied to the time when
threads starts to use this data.

--
svn merge -r57899:57900 ^/branches/soc-2013-depsgraph_mt
2013-08-19 09:05:34 +00:00
Antony Riakiotakis
6fe983ddf5 Fix #34413 Dyntopo, smooth shading normals not getting uploaded to GPU
and undo buffers.

When we have smooth shading we must not only update the unique vertex
normals.
2013-08-18 19:47:33 +00:00
Campbell Barton
754b4ab3bc add hash function BLI_ghash_assign, BLI_edgehash_assign
avoids remove,insert and only hashes the key once.
2013-08-18 03:41:39 +00:00
Campbell Barton
5fafc222f0 style cleanup 2013-08-17 08:21:40 +00:00
Campbell Barton
9d4bf6b37b change CHECK_TYPE_INLINE macro not to add the pointer in the macro. 2013-08-17 04:48:34 +00:00
Sergey Sharybin
24ce60cfe4 Merge plane track feature from tomato branch
This commit includes all the changes made for plane tracker
in tomato branch.

Movie clip editor changes:

- Artist might create a plane track out of multiple point
  tracks which belongs to the same track (minimum amount of
  point tracks is 4, maximum is not actually limited).

  When new plane track is added, it's getting "tracked"
  across all point tracks, which makes it stick to the same
  plane point tracks belong to.

- After plane track was added, it need to be manually adjusted
  in a way it covers feature one might to mask/replace.

  General transform tools (G, R, S) or sliding corners with
  a mouse could be sued for this. Plane corner which
  corresponds to left bottom image corner has got X/Y axis
  on it (red is for X axis, green for Y).

- Re-adjusting plane corners makes plane to be "re-tracked"
  for the frames sequence between current frame and next
  and previous keyframes.

- Kayframes might be removed from the plane, using Shit-X
  (Marker Delete) operator. However, currently manual
  re-adjustment or "re-track" trigger is needed.

Compositor changes:

- Added new node called Plane Track Deform.

- User selects which plane track to use (for this he need
  to select movie clip datablock, object and track names).

- Node gets an image input, which need to be warped into
  the plane.

- Node outputs:
  * Input image warped into the plane.
  * Plane, rasterized to a mask.

Masking changes:

- Mask points might be parented to a plane track, which
  makes this point deforming in a way as if it belongs
  to the tracked plane.

Some video tutorials are available:
- Coder video: http://www.youtube.com/watch?v=vISEwqNHqe4
- Artist video: https://vimeo.com/71727578

This is mine and Keir's holiday code project :)
2013-08-16 09:46:30 +00:00
Sergey Sharybin
9e42f76bab Fix #36467: ends of curves - 2D differs to 3D
This is getting confused, why bevel is handled different
for 2D and 3D curves?

Anyway, made bevel work for 2D case nice again, but it's
probably nice to unify 2D and 3D cases.
2013-08-14 19:45:35 +00:00
Campbell Barton
7a6f3d9e43 fix [#36349] Separate mesh by material creates meshes with all the materials from the original 2013-08-14 14:36:43 +00:00
Campbell Barton
503b7d5b9a add materials.clear() method, matching other python list method. 2013-08-14 11:29:58 +00:00
Sergey Sharybin
c09034608c Fix double-free happening when having proxy with motion paths
Make it so mpath is not shared between several bones now.

Fix suggested by Joshua Leung, thanks!
2013-08-14 10:39:16 +00:00
Sergey Sharybin
463ff86592 Fix #36461: ends of curves - twist still not good
Needed correct quat for first point as well.

Maybe it's time to refactor make_minimum_twist function a bit..
2013-08-13 15:27:49 +00:00
Campbell Barton
a8d1c893e8 make materials.pop() and more like pythons list.pop
- allow negative index values.
- error when invalid index value are passed in.
- remove last item if no index argument is given.

also change behavior to remove the material slot, it was only clearning by default but the list length remained the same.
2013-08-13 10:21:11 +00:00
Lukas Toenne
4d5c64372a Moved NAN_FLT define to BLI_math, this may come in useful. 2013-08-13 10:09:27 +00:00
Campbell Barton
730b9c283e change VIEW3D_OT_camera_to_view_selected poll function so it can be called from a script (without a view3d). 2013-08-13 04:35:14 +00:00
Sergey Sharybin
3497b2241e Followup for r58992, fixing user decrement error
Some places like proxy rebuild didn't increent
custom shape user counter which lead to user
decrement errors later when freeing pose channels.

Try to keep custom object counter relevent, but
some corner cases might still be missing.
2013-08-12 13:52:13 +00:00
Sergey Sharybin
bc5dc88bda Fix #36420: ends of curves - caps & twist not good
Forgot to calculate directions of first/last points
for NURBS and POLY splines.
2013-08-12 09:00:48 +00:00
Sergey Sharybin
98e5e544b5 Fix #36408: Setting image.colorspace_settings.name changes saved alpha
Issue was caused by reload caused by input colorspace change.

For generated images generated alpha flags weren't saved to
DNA, which lead to fallback from 32 bit depth to 24 when
doing any kind reload of generated image.

The same alpha loss happens when you save .blend file with
generated images.

Now added generated depth to DNA, so reload image and .blend
file wouldn't loss alpha.
2013-08-12 07:47:44 +00:00
Campbell Barton
98c574e41a use 'greater/less then or equal to' operators rather then adding 1. 2013-08-11 05:40:35 +00:00
Mitchell Stokes
3627541894 BGE: Fixing the memory leaks reported when the BlenderPlayer exits.
They were caused by not having a free_windowmanager_cb set and by not having registered SpaceTypes, which meant data allocated for thosse SpaceTypes could not be freed. These were solved by defining a free_windowmanager_cb for the player that just frees wmWindows, and by making sure we only allocate memory for registered SpaceTypes.
2013-08-10 21:17:46 +00:00
Brecht Van Lommel
f07fda5a85 Fix #36274: empty particle texture slots should not have any influence, same
as for materials, world, lamps, etc.
2013-08-08 18:12:07 +00:00
Campbell Barton
26c0839220 disable cycles when building without python, also use const for function args in more places. 2013-08-07 22:40:03 +00:00
Sergey Sharybin
4941cafa09 Fix #36007: ends of curves do not fit
Made first/last tessellated curve have proper
direction and tilt. Before direction/tilt
from second/previous to last tessellated curve
segments.

Thanks Brecht for review and tests!
2013-08-07 18:22:15 +00:00
Brecht Van Lommel
438b50022e Fix #36391: removing an armature with a custom bone shape object would not
decrement the object user count when removing the armature. This could cause
the object to stick when it shouldn't, in particular when that object is part
of a group.
2013-08-07 15:23:09 +00:00
Campbell Barton
9bfbdd8118 remove assert in check_for_dupid() function for rare but valid renaming situation. 2013-08-07 08:20:37 +00:00
Campbell Barton
00b39c4e5b code cleanup: more confusion with 0/NULL/false 2013-08-07 03:55:21 +00:00
Campbell Barton
f97a4bd254 code cleanup: more zero as NULL pointers. 2013-08-07 03:36:05 +00:00
Campbell Barton
0398ef6ae0 code clenup: remove benchmarking left in by accident and GPU print, also some minor style edits 2013-08-06 02:47:47 +00:00
Campbell Barton
b03bc88d21 replace mul_serie_m4 with mul_m4_m4m4 when only 3 args are given 2013-08-06 01:45:29 +00:00
Campbell Barton
78d69a1e15 code cleanup: replace strcpy with BLI_strncpy for fixed size strings, and correct some harmless but incorrect sizeof() use 2013-08-04 18:12:49 +00:00
Campbell Barton
d2dbc0b85e more consistent use of checks of BLI_open(), check 'fd < 0' rather then -1. packedfile incorrectly treated 0 as an error value. best not be vague/sloppy with this. 2013-08-04 17:30:47 +00:00
Campbell Barton
4bd60205fb fix navmesh, error was introduced by r58420 looks like changes weren't tested. 2013-08-04 03:43:02 +00:00
Campbell Barton
bd89bd9e1c avoid using MEM_reallocN_id directly, add utility macro for freeing. 2013-08-04 03:00:04 +00:00
Campbell Barton
dd037a85a0 code cleanup: remove unused define, correct header guard mismatch, add NULL check so DM_to_mesh() can have a NULL object passed (currently not used) and remove redundant NULL check. 2013-08-03 23:58:17 +00:00
Campbell Barton
8052bf0ec2 add missing NULL checks from BKE_constraint_get_typeinfo(), so constraints from the future dont crash.
also remove some redundant NULL checks.
2013-08-03 22:03:15 +00:00
Campbell Barton
da5b04a0c2 fix for over-allocation in BKE_pbvh_search_gather, BKE_pbvh_gather_proxies,
each element was having the size of PBVHNode allocated rather then the size of a pointer (8 vs 184 bytes here)
2013-08-03 18:05:30 +00:00
Campbell Barton
2a8d76d734 add versions of MEM_reallocN, MEM_recallocN which take a string arg so new allocs have an ID, changing existing functions signatures would be too disruptive at the moment. 2013-08-03 17:53:41 +00:00
Thomas Dinges
5fc6f04fc8 Cycles / SSS:
* Render Passes are now available for Subsurface Scattering (Direct, Indirect and Color pass). 

This is part of my GSoC project, SVN merge of r58587, r58828 and r58835.
2013-08-03 13:12:09 +00:00
Sv. Lockal
66a4077927 fix for [#36260] 2,300 Objects Makes Blender Unresponsive
- performance of outliner was low because of unoptimal data structures.
- now it uses BLI_mempool instead of custom mempool and GHash to make searches for duplicates faster.
- also fix undesired behaviour of BLI_mempool_as_arrayN

thanks to Campbell Barton and Lukas Tönne for helping me get a better fix put together.
2013-08-03 11:35:09 +00:00
Miika Hamalainen
91d148b891 Dynamic Paint: Added a new "smoothness" parameter for waves.
It greatly helps getting rid of that "noise" that occurs if you use really steep objects (like cubes) as a brush. New default value is 1.0 which is just high enough to only get rid of the sharpest spikes, so if you want really smooth waves it's better use higher values.

This also seems to "fix" bug [#35413].
2013-08-03 09:46:38 +00:00
Miika Hamalainen
9f1670cde6 Fix [#35541]: Point cache doesn't load existing frames from disk if cache file name is changed. 2013-08-02 16:39:50 +00:00
Antony Riakiotakis
5302469834 Some versioning changes/patching of the brush system:
* Change overlay alphas to 33 if not initialized. This should have been
done for 2.67 but better do it now to avoid frustration with overly
transparent overlays. For users that have set this low manually this
will reset the setting to 33 but I think it's less irritating than users
who unwillingly had the setting to 1 and saw nothing when activating the
overlay.

* Allow overlay alpha to be zero as well

* Reset old, now obsolete BRUSH_FIXED flag for brushes that still use
this. I am doing this here to avoid patching hell when the paint brush
is merged, since it's not possible to know the merged version
beforehand, and this flag will be used.
2013-08-02 00:24:34 +00:00
Campbell Barton
78820edafc use bmesh for loop macros for looping over mesh verts/edges/faces 2013-08-01 18:33:35 +00:00
Miika Hamalainen
ceaec3c86a Fix [#36265]: Smoke doesn't work if domain object has negative scale. 2013-08-01 12:09:12 +00:00
Thomas Dinges
2a2f0319bc Cycles / HSV Separator and Combine node:
* Added nodes to separate and combine hsv colors.

Part of my GSoC 2013 project, SVN merge of r57981.
2013-07-31 21:27:48 +00:00