Commit Graph

12883 Commits

Author SHA1 Message Date
Lukas Tönne
6e99fb04b6 Use the new BKE_libblock_copy_nolib function for bNodeTree datablocks
as well.

These were already doing the same thing, just not as nice. Only
difference is the do_action argument (false for BKE_libblock_copy_nolib)
but this is of no consequence because the function is only called for
trees nested inside material, scene, etc., which never have own actions.
2014-03-21 14:07:49 +01:00
Sergey Sharybin
c626462c0f Fix T39209: Localizing materials could cause heisenbug with concurrent
depsgraph updates.

Material datablocks were localized by first making a regular datablock
copy, which always gets inserted into the bmain list, and then removing
it again from bmain.

Problem is that this localization happens in preview threads, which can
run while the depsgraph is also updating GPU materials. In case the
copying of materials takes any amount of time, this can cause the
depsgraph call to material_changed to use an invalid, localized material
and access invalid GPUMaterial lists which have already been freed for
the actual material.

Solution is to not add localized datablocks to the bmain lists in the
first place. bmain should be totally immutable during preview or render
threads.
2014-03-21 13:50:20 +01:00
Joshua Leung
3406ef8e03 Fix T39207: FCurve evaluation regressions following 2aff243 (again)
Yet another attempt at fixing the problems here. This time, I've added a new
function/version of the binary search utility so that we can pass in custom
thresholds (Note: This ability is only used for evaluation currently, with
everything else using a wrapper which still uses the old default threshold),
making it ok to start trusting the "exact" parameter.
2014-03-21 14:53:17 +13:00
Joshua Leung
3267454250 Debug prints weren't getting triggered, since they no longer use the old flag 2014-03-21 14:53:17 +13:00
Campbell Barton
27e86ed832 Code cleanup: use bools 2014-03-20 22:56:28 +11:00
Sergey Sharybin
9767ff8916 Code cleanup: use true/false in sequencer functions 2014-03-20 15:46:38 +06:00
Sergey Sharybin
3fc293cd57 Fix T39141: Video Sequencer Proxies don't take into account Strip Input Offset (or strip modifiers)
Basically issue was caused by the fact that strip for proxy has been
post-processed but proxy files were considered pre-processed. This lead
to situation of postprocessing being applied twice.
2014-03-20 15:09:45 +06:00
Joshua Leung
22ab652bb0 A simpler fix for the "clive" part of T39207 without the precision granularity risks 2014-03-20 02:23:04 +13:00
Joshua Leung
f0ac7294fa Fix T39207: FCurve evaluation regressions following 2aff243
This commit attempts to fix some of the FCurve evaluation regressions arising from
an earlier commit to speed up the process using binary search. Further tweaks may still
be needed though to get this to an acceptable level of reliability (namely, tuning the
threshold defining which keyframes get considered "close together"). Since we're still
in an early stage of the 2.71 dev cycle, for now it's still worth trying to get this
working instead of simply reverting this (which can still be done later if it proves too
problematic).

Specific fixes:
* The previous code was somewhat dangerous in that it allowed out-of-bounds accessing
  of memory when a == 0. It turns out this was more common than originally anticipated
  (as the assert I added here ended up failing in the "action_bug.blend" file in the report)
* Tweaked the code used to test for closely-spaced points so that the "Clive.blend" example
  for driver curves won't fail. The approach used here has the downside though that
  since "exact" uses a might coarser threshold for equality, there may be some precision
  loss issues causing backwards compat issues (namely with closely spaced keyframes, or
  for certain NLA strips).

For now, I've left in some debug prints that can be enabled by running Blender in debug
mode (i.e. "blender -d"), which can provide some useful tuning info should we need to
look more into our approach here.
2014-03-20 02:23:03 +13:00
Campbell Barton
a91247c2b4 Code cleanup: unreachable break/return 2014-03-19 12:47:09 +11:00
Sergey Sharybin
60cab47735 Correction to particle system commit: wrong struct name was used 2014-03-18 22:25:29 +06:00
Lukas Tönne
5febb09639 Fix T39180: Particle with fluid physics unstable.
Fluid sims have a very nasty feature for interaction, in which a psys
can directly update the bvhtree for //another object's psys//. This
breaks with threaded depsgraph evaluation and is generally a no-go.

To avoid crashes for now, use a global mutex to avoid concurrent writes
to an object psys' bvhtree.
2014-03-18 13:39:13 +01:00
Campbell Barton
ec55074f89 Code cleanup: jitter, use 2d float array 2014-03-18 10:52:38 +11:00
Campbell Barton
7da2175271 KDTree: deprecate 'normal' argument
Normals for each kdtree node were allocated but never used,
and search args only use in particles/boids code.
2014-03-18 09:14:47 +11:00
Campbell Barton
8480bb64ec Code cleanup: style 2014-03-17 21:48:13 +11:00
Bastien Montagne
930765faa8 Fix T39208: Adding scene to another scene's VSE causes audio and video to be unsynchronized
Audio of 'linked' scene has to be offset by the startframe of that scene, else it behaves as if 'linked' scene always started at frame 1...
2014-03-16 20:22:13 +01:00
Campbell Barton
7b7196e3ad Code cleanup: modifier_skin_customdata_ensure was a bad level call 2014-03-16 21:55:30 +11:00
Campbell Barton
2097e621ed Code cleanup: use r_ prefix for return args 2014-03-16 03:26:23 +11:00
Joshua Leung
2aff2435f0 Patch T36209: Use binary search function for evaluating F-Curves
This provides a speedup to evaluating long F-Curves in fcurve_eval_keyframes()
by using the pre-existing binarysearch_bezt_index() function (used for keyframe
insertion) to find the relevant BezTriple on the FCurve at the current evaltime.
The current code loops over all BezTriples (sometimes not even breaking from the
loop after cvalue has been evaluated).

Reviewer Notes:
- Unlike in the original patch, we use the old/existing logic instead of
  checking that (exact == true). See comments in code and also on the tracker
  entry for this patch for more details.

Patch By: Josh Wedlake
2014-03-15 11:47:46 +13:00
Sergey Sharybin
d908c90d6d Fix T39166: Disappearing text objects
This is a failure of viewport direct displist creation
caused by existing curve_cache pointer which empty content.

Made it so if the curve isn't evaluated it's curve_cache is NULL.

This is just-another-regression to be ported to the release.
2014-03-14 17:51:58 +06:00
Lukas Tönne
ade6646755 Fix T39180: Particle with fluid physics unstable.
Fluid particles use the particle system's bvhtree structure, which is a
runtime BVH tree. This was not reset properly on copying objects/psys,
which lead to concurrent access in threaded depsgraph updates and memory
corruption.
2014-03-14 11:03:04 +01:00
Antony Riakiotakis
4080673ea7 Fix bug 1 of T39156: Deadlock while undoing paint operations on image
sequences.

This commit should be included in 2.70 release
2014-03-13 19:56:16 +02:00
Campbell Barton
921c829bcf Code cleanup: redundant normalize in bmbvh ray cast 2014-03-12 18:30:37 +11:00
Campbell Barton
c2045ef794 Fix T39033: Regression, duplicating proxy loses proxy
fix for bug making duplicates real effected copying scenes and linked duplis.
2014-03-12 05:56:15 +11:00
Lukas Tönne
658b4c0d56 New Corner Pin node: uses explicit corner values for a plane warp transformation.
This was suggested by Christopher Barrett (terrachild). Corner pin is a common feature in compositing.

The corners for the plane warping can be defined by using vector node inputs to allow using perspective plane transformations without having to go via the MovieClip editor tracking data.
Uses the same math as the PlaneTrack node, but without the link to MovieClip and Object.

{F78199}

The code for PlaneTrack operations has been restructured a bit to share it with the CornerPin node.

* PlaneDistortCommonOperation.h/.cpp: Shared generic code for warping images based on 4 plane corners and a perspective matrix generated from these. Contains operation base classes for both the WarpImage and Mask operations.

* PlaneTrackOperation.h/.cpp: Current plane track node operations, based on the common code above. These add pointers to MovieClip and Object which define the track data from wich to read the corners.

* PlaneCornerPinOperation.h/.cpp: New corner pin variant, using explicit input sockets for the plane corners.

One downside of the current compositor design is that there is no concept of invariables (constants) that don't vary over the image space. This has already been an issue for Blur nodes (size input is usually constant except when "variable size" is enabled) and a few others. For the corner pin node it is necessary that the corner input sockets are also invariant. They have to be evaluated for each tile now, otherwise the data is not available. This in turn makes it necessary to make the operation "complex" and request full input buffers, which adds unnecessary overhead.
2014-03-11 14:12:08 +01:00
Campbell Barton
500088d9e3 Fix T39078: crash increasing hair emission number 2014-03-11 23:04:59 +11:00
Campbell Barton
4cfd14644b 3D Text: textbox selection while in editmode
D395 from Henrik Aarnio with some improvements.
2014-03-11 17:16:08 +11:00
Campbell Barton
23fbc9f22f Fix T39083: speakers were evaluated multiple times when used in sets
also skip checking all objects for speakers when no speakers are in the
blend file.
2014-03-11 14:46:55 +11:00
Antony Riakiotakis
2de9da6ee9 Fix T39034 brush always shown even after deactivating the show cursor
option after reentering a paint mode.

Solution by Bastien with modifications, thanks!
Show Brush flag need not be reenabled always, but make sure it is at
least enabled once on paint initialization.
2014-03-10 18:42:35 +02:00
Joshua Leung
7461fead50 Fix T39035: Cycles F-Modifier truncates end/beginning frame values for repetition
When the keyframes at either end of the source curve don't lie on exact frame boundaries,
this casued problems with the Cycles F-Modifier, as part of the cycle would get chopped
off.

This was caused by float -> integer truncation that was occurring, since one variable
was of the wrong type. The problem here wasn't discovered until now (thanks to gcc's
invalid-type warnings on printf's) as in standard usage, we can safely assume that all
keyframes are strictly on frame boundaries.
2014-03-08 17:57:31 +13:00
Antony Riakiotakis
f03df4f024 Fix crash when changing and using between layer and other brushes in
dyntopo

Layer brush would not invalidate the layer_disp arrays in dyntopo mode,
checking only for the existence of the array. This means that if a tool
resized the node due to topology changes, the layer brush code could
index (and write!) out of bounds in the array. Solution is to invalidate
the layer data prior to each stroke in dyntopo.
2014-03-07 16:58:56 +02:00
Thomas Dinges
e097c987a8 Maintenance: Start of 2.71 release cycle, BCon1, Alpha. 2014-03-07 13:43:59 +01:00
Lukas Tönne
c05896eb35 Fix for own commit: particle rng arrays should be declared extern in the
header.
2014-03-07 13:18:15 +01:00
Lukas Tönne
08444518e6 Removing ParticleSystem->frand arrays to avoid memory corruption issues
in threaded depgraph updates and effector list construction.

Gathering effectors during depgraph updates will call the
psys_check_enabled function. This in turn contained a DNA alloc call
for the psys->frand RNG arrays, which is really bad because data must be
immutable during these effector constructions.

To avoid such allocs the frand array is now global for all particle
systems. To avoid correlation of pseudo-random numbers the psys->seed
value is complemented with random offset and multiplier for the actual
float array. This is not ideal, but work sufficiently well (given that
random numbers were already really limited and show repetition quite
easily for particle counts > PSYS_FRAND_COUNT).
2014-03-07 11:20:45 +01:00
Sergey Sharybin
b839fb9bb7 Fix T38985: Setting endpoint_u property while creating spline in Python gives strange behavior 2014-03-07 14:05:38 +06:00
Campbell Barton
03af4cbf91 Code cleanup: style 2014-03-07 13:28:39 +11:00
Sergey Sharybin
3d2b530315 Hiding plane tracks was never implemented 2014-03-06 20:07:40 +06:00
Sergey Sharybin
4ce7d5cb79 Fixes for proxies color space
Basically proxy colorspace didn't work well enough.

It is still a bit weird and mainly:

- Proxies for image sequences are built in the image color space.

- Proxies for movies are built in the movie color space.

This could be unified but would need some work in proxy build
to make it not just pipe frames from one FFmpeg context to
another but also apply OCIO on it.
2014-03-06 17:32:45 +06:00
Campbell Barton
f56a74566a Bump version to Blender2.70rc and new splash
Splash concept art & paint-over: David Revoy. 3D artwork by Mathieu Auvray.
2014-03-06 04:40:49 +11:00
Lukas Tönne
3aedb3aed7 Fix for invalid custom data checks in armature and lattice functions.
Testing for custom data availability with getVertData and index 0 fails
on assert for empty meshes (the index must be in valid range). Better
use getVertDataArray which has no requirement for specific index.
2014-03-05 15:13:50 +01:00
Campbell Barton
e49e78e414 Fix for negative gamma correction rounding to int 2014-03-05 22:41:44 +11:00
Antony Riakiotakis
9ecf73f703 Follow up to the offset scale fix for texture painting: texture mask had
the same issue.
2014-03-04 20:36:03 +02:00
Brecht Van Lommel
53b03eff96 Fix T36496: unwanted behavior with NLA strip blend mode Replace.
If you have two overlapping NLA strips it automatically blends between them.
However it was also blending between the first strip and the rest pose
(e.g. 0,0,0 for locations and 1,1,1 for scale).

This is ok if the blend mode is Add or Multiply since then you are adding onto
the rest pose, but for Replace you want to be able to mix between two poses
and not take the rest pose into account at all.

What this does is that to not do any blending for the first strip if it has
blend mode Replace. If someone wants the old behavior (from bugfix commit
27d792fa9c) they can still make an action with the rest pose and use that
as the first strip.
2014-03-03 16:34:10 +01:00
Antony Riakiotakis
3c3c2cd53c Fix issue with texture painting: Tex slot scale was being applied twice. 2014-03-02 19:40:39 +02:00
Lukas Tönne
a89ef76136 Fix for own mistake: arc diff swallowed a commit somehow, breaking
compilation.
2014-03-02 17:04:24 +01:00
Lukas Tönne
fd553c5b7b Fix T37334: Better "internal links" function for muting and node disconnect.
Implements a more flexible internal connect function for standard nodes
(compositor, shader, texture). Allow feasible datatype connections by
priority.

The priorities for common datatypes in compositor, shader and texture
nodes are encoded in a simple function. Certain impossible connections
(e.g. color -> cycles shader) are excluded by giving them -1 priority.

Priority overrides link status: If a higher priority input can be found,
this will be used regardless of link status. Link status only comes into
play for inputs with same priority.

Reviewers: brecht

CC: sebastian_k

Differential Revision: https://developer.blender.org/D356
2014-03-02 16:04:25 +01:00
Bastien Montagne
f01d19431d Fix T38873: Crashing on undo of ocean modifier.
Issue of this bug is that most part of fftw is not thread safe, only compute-intensive fftw_execute & co are.

Since smoke was affected by this issue as well, a global fftw mutex was added to BLI_threads.
Audaspace also uses fftw in one of its readers (AUD_BandPassReader.cpp),
but this is not an issue currently since this code is disabled in CMake/scons files.

There was another threading issue with smoke, we need to copy dm used by emit_from_derivedmesh(),
as it is modified by this func.

Reviewers: sergey, brecht

Reviewed By: brecht

CC: brecht

Differential Revision: https://developer.blender.org/D374
2014-03-01 21:05:50 +01:00
Campbell Barton
176f1aad3d Fix for using non camera objects as a camera having zero area view-frame 2014-03-01 21:41:07 +11:00
Campbell Barton
9737717234 Fix for some unlikely memory leaks, remove redundant checks 2014-03-01 20:14:20 +11:00
Campbell Barton
13ea967cce Code cleanup: correct abs use and quiet warnings 2014-03-01 14:26:18 +11:00