Commit Graph

512 Commits

Author SHA1 Message Date
Sergey Sharybin
9a6c5d8b3e We've reconsidered previous patch in IRC.
It's more useful to completely ignore alpha for display of straight
colors.

Supporting straight pipeline is possible, but not a topic for bcon4.
2013-02-10 13:14:51 +00:00
Sergey Sharybin
75cbb07507 Added option to composite/viewer nodes which specifys whether alpha input
is straight or not (premultiplied is default).

This is useful in cases when you want to check on output of such nodes
as keying which does have straight alpha output.

Also added missing do_version code to previous compo do_versions.
2013-02-10 12:20:10 +00:00
Jeroen Bakker
67da51fe76 fix for [#34133] Creation of an RGBA buffer from an RGB color and an alpha channel not possible. 2013-02-07 07:24:22 +00:00
Campbell Barton
296444e1dc style cleanup: some warnigs & spelling. 2013-02-06 14:02:19 +00:00
Monique Dewanchand
23bf087338 Code clean up translate node
added constants.
moved the code to a separate class. so it can be reused for other nodes
2013-02-06 08:40:12 +00:00
Thomas Dinges
a6f5a729fc Compile fix for r54300, setFactorXY function does not return a value. 2013-02-04 16:50:20 +00:00
Brecht Van Lommel
03687b7c66 Compositor "Relative" option for Translate node, same as for other nodes this
makes it possible to specify an offset relative to the render resolution (so 0.5
is half the image rather than giving the number of pixels). It's a bit late but
it's a trivial change and needed for 4k mango render.
2013-02-04 16:12:42 +00:00
Campbell Barton
69993c5d40 style cleanup: spaces -> tabs 2013-02-04 00:18:09 +00:00
Campbell Barton
9d4be17de4 style cleanup 2013-02-04 00:05:15 +00:00
Monique Dewanchand
2950214527 One fix for bug [#33785] compositor is (unnecessarily?) slow
Added additional buffers - new subtree - for groupnodes.
One needs to be aware of how groupnodes should be created. 
Having translate & scale nodes, with the translate inside the groupnode and the scale node outside, causes artefacts.
Both should be inside or outside the groupnode. Same holds for other distort nodes.
2013-02-03 17:22:26 +00:00
Jeroen Bakker
abe41ba65f Fix for [#34022] Lines on renders using Blur node in flat mode 2013-02-03 15:06:16 +00:00
Sergey Sharybin
7dc33e3ef8 Move opencl and reigidbody from source/blender/ to intern/
This modules does not depend on any blender-specific data
structures or algorithms and due to our policy better be
placed to intern/

Shall be no functional changes, tested CMake and SCons on
Linux, hopefully other platforms will work as well.

P.S. SVN history shall be preserved for the files.
2013-02-01 06:24:49 +00:00
Campbell Barton
a9015e3f7d style cleanup 2013-01-31 21:15:38 +00:00
Monique Dewanchand
a5cef69a0d Apply patch [#33999] Wrapping mode for the "translate" compositing node
this patch enables the translate node to wrap around the image borders. This is especially needed if the translate node is not used to position elements on a layer but when it is used instead for seamless backgrounds like mountains or clouds that should be repeated over time (by animating the x/y values).

No trunk without docs! So here is my documentation: http://wiki.blender.org/index.php/User:Plasmasolutions/TranslateNodeExtension

The code is properly documented and should be easy to read and understand. When there are any problems or issues, please comment, I'll tackle them right away!

Greetings, Thomas Beck


 * optimized determination dependant areas
 * fixed some issues with scale node

There are still some issues when scaling very small values (x=0.0001)

 - At Mind -
2013-01-31 15:08:37 +00:00
Campbell Barton
4e7b18876c style cleanup 2013-01-30 21:17:38 +00:00
Monique Dewanchand
4c971d5727 Patch by erwin94 [#34015] dilate/erode multithreading
another patch for the dilate/erode step method, still without any functional changes.
This time it keeps the general algorithm but uses the tile system to make it
multithreaded. I could not measure a speedup on my 2-core laptop, but hope that
it will be faster for more cores. The immediate speedup that is very visible though is
that tiles come in as soon as they are calculated and a dilate/erode node does not
block the whole image to be calculated.

till then, David.
2013-01-30 15:43:13 +00:00
Campbell Barton
774ff1c246 style cleanup: also remove unneeded NULL check. 2013-01-28 01:59:59 +00:00
Monique Dewanchand
5d385b9a9a committed patch [#33972] dilate/erode optimization
this patch optimizes the dilate/erode step method (hopefully without any functional change),
making its speed not depend on the distance anymore.

Couldn't detect funtional changes so committing. Haven't tested for speed gain.

 * credits to erwin94 David M
2013-01-25 09:47:28 +00:00
Sergey Sharybin
86991fbcb0 Fixed render time regression in Blender Internal
It was caused by image threading safe commit and it was noticeable
only on really multi-core CPU (like dual-socket Xeon stations), was
not visible on core i7 machine.

The reason of slowdown was spinlock around image buffer referencing,
which lead to lots of cores waiting for single core and using image
buffer after it was referenced was not so much longer than doing
reference itself.

The most clear solution here seemed to be introducing Image Pool
which will contain list of loaded and referenced image buffers, so
all threads could skip lock if the pool is used for reading only.
Lock only needed in cases when buffer for requested image user is
missing in the pool. This lock will happen only once per image so
overall amount of locks is much less that it was before.

To operate with pool:
- BKE_image_pool_new() creates new pool
- BKE_image_pool_free() destroys pool and dereferences all image
  buffers which were loaded to it
- BKE_image_pool_acquire_ibuf() returns image buffer for given
  image and user. Pool could be NULL and in this case fallback to
  BKE_image_acquire_ibuf will happen.

  This helps to avoid lots to if(poll) checks in image sampling
  code.

- BKE_image_pool_release_ibuf releases image buffer. In fact, it
  will only do something if pool is NULL, in all other case it'll
  equal to DoNothing operation.
2013-01-21 08:49:42 +00:00
Campbell Barton
761ac89877 style cleanup 2013-01-15 23:45:41 +00:00
Sergey Sharybin
440ef7356a Two threading issues:
- Drawing masks in image editor requires LOCK_DRAW_IMAGE around
  ED_space_image_get* functions since they'll acquire image buffer.

  Lock is needed because viewers will be modified directly in
  compositor (see commend in draw_image_main)

- Seems that was wrong order of invalidating render result and
  viewer image invalidation happened in Composite node, which
  could easily lead to thread lock.
2013-01-15 07:56:38 +00:00
Campbell Barton
e24443b79a style cleanup 2013-01-09 03:30:15 +00:00
Sergey Sharybin
1dd8851244 Fix #33804: Blender crash unlinking multilayer exr image in image node 2013-01-08 08:39:28 +00:00
Brecht Van Lommel
c2dfcd9208 Convert alpha node: rename "key alpha" to "straight alpha" for consistency. 2012-12-28 14:46:32 +00:00
Sergey Sharybin
8ac1d8a4ea Fix #33650: Compositor locks up when input is an unrendered render layer.
Issue was caused by resolution detecting which assumed zero resolution is
undefined one and should be re-evaluated. It doesn't work in cases when
there's a missing input, causing lots of unneeded resolution re-calculation.

It wasn't so much issue in average sized node trees, but it was a real
problem in generated tree from the report.

Currently used pretty simple solution which added a boolean flag to the
node operation which signal whether resolution was ever set or not.

There're probably smarter solutions here but can not think about them.
2012-12-24 13:33:47 +00:00
Sergey Sharybin
851cb9b345 Added support of J2K codec for Jpeg2000 writing
This codec is absolutely needed to generate DCP using OpenDCP,
before that external application to convert JP2 to J2K was used
which slowed down export a lot.

New codec is exposed to image format settings panel and called
Codec. Default one is JP2 which creates files with .jp2 extension,
new one is called J2K which creates with .j2c extension.

Other changes:
- Fixed avi jpeg warning which was treating as error here.
- Made it so extension is detecting from ImageFormatData instead
  of image file type, which makes it possible to have different
  extension for the same file type depending on it's settings.

  IRIS format should still be changed (depending on number of
  channels it'll be .bw, .rgb or .rgba extension)

- Default image format settings would be set from image buffer
  when re-saving it. Makes it possible to easily open .j2c file
  and save it using J2K codec (without this change it'll save as
  .jp2 using JP2 codec)
2012-12-23 13:57:09 +00:00
Campbell Barton
806720507e style cleanup: wrap long lines (>200) 2012-12-23 01:18:35 +00:00
Campbell Barton
f25618f29a make Node.links return a tuple, this may you can't do socket.links.append() by mistake.
removed RNAMeta mixin class since you cant register subclasses.

also some minor code cleanup
2012-12-21 12:16:13 +00:00
Campbell Barton
b2c66e268f replace MIN/MAX 3,4 with inline functions 2012-12-21 05:07:26 +00:00
Campbell Barton
899ba3fdb6 style cleanup 2012-12-18 01:46:15 +00:00
Bastien Montagne
ab2c273b12 Added GPL header to sconscripts!
Also changed shebang to '#!/usr/bin/env python', this is more portable across unixes...
2012-12-17 08:01:43 +00:00
Campbell Barton
5943c81a93 code cleanup: neareast -> nearest 2012-12-11 14:19:41 +00:00
Sergey Sharybin
4742dc3fd7 Fix for crop operation using uninitialized bounds in cases input image resolution is zero. 2012-12-05 14:27:51 +00:00
Sergey Sharybin
89d91f5a7d Fix #33402: Compositor crashes when drag-dropping multilayer exr
There was a missing image reload signal in node creation by drag-dropping,
which lead to incorrectly set image type.

Also fixed misusage of IMB_freeImBuf used to release buffer acquired by
BKE_image_acquire_ibuf.
2012-12-04 08:10:53 +00:00
Bastien Montagne
818a345be3 Silent a bunch of gcc warnings (usually dummy, but noisy!). 2012-12-02 16:01:06 +00:00
Campbell Barton
ee08c27f95 fix [#33368] Crash with multilayer exr node 2012-12-01 08:47:39 +00:00
Sergey Sharybin
7fa7ce297e Map Range: added the same infinity clamping for Z buffer as normalize node.
Think should be pretty much harmless since if this node was used for buffers
with infinities it already showed artifacts. Now it should be more useful for
mapping Z buffers.
2012-11-30 13:17:19 +00:00
Sergey Sharybin
4f8f5746a8 Normalize node: clamp infinities to 0/1 (depending on sign)
The same behavior was in old compositor system and it makes more sense
when you're normalizing Z buffer.
2012-11-30 12:48:30 +00:00
Sergey Sharybin
1db677a51c Final render wouldn't set compositor's update_draw callback, so added NULL check
Seems no extra notifiers should be added here.
2012-11-30 11:26:57 +00:00
Sergey Sharybin
323e86694e Compositor should never add notifiers by himself, notifiers should be added
from main thread using job update callback.

Added new execution-time callback to bNodeTree which marks job to be updated.

The code here could be a bit not so obvious because in some cases job update
callback need to merge local tree, but it's only needed for old compositor
system which is gonna to be removed soon, so decided not to bother with
cleanup now. Removing old compositor system will also allow to drop stats_draw
callback from bNodeTree.

This should fix following bugs:
2012-11-30 09:12:10 +00:00
Campbell Barton
0b9be70591 typo's and some style cleanup, also added asserts into BLI_vsnprintf and BLI_sprintfN when invalid args are given. 2012-11-28 06:43:04 +00:00
Campbell Barton
7ef78723b7 code cleanup: doxy comment corrections and correct own typo animation player docs. 2012-11-26 00:59:11 +00:00
Sergey Sharybin
c8767b514d m_overlay wasn't initialized in a constructor of FastGaussianBlurValueOperation 2012-11-23 12:54:44 +00:00
Sergey Sharybin
587067b4fc Fix usage of uninialized memory in some operations
- FastGaussianBlurValueOperation is a value operation, so use only first vector
  component in initializeTileData.

- Gamma correct/uncorrect operations didn't set alpha for output which lead to
  usage of uninitialzied memory further in nodes graph.
2012-11-23 12:50:59 +00:00
Lukas Toenne
130c60efa0 Compositor: Disabled debug assert checks for connected input sockets after convertToOperations. This breaks quite a lot and is not really necessary, since connected Node inputs are ignored later on. Connected outputs however are still forbidden, this indicates a real bug. 2012-11-23 12:39:49 +00:00
Lukas Toenne
d73633e537 When the File Output node exits early in convertToOperations (in case not rendering), it should still unlink all inputs to avoid debug assert failure that checks for remaining Node connections (debug_check_node_connections). 2012-11-21 10:09:51 +00:00
Lukas Toenne
e6449a5c2c Fix for debug assert failure with Reroute nodes in compositor. After redirecting links from the reroute output the input must be completely unlinked, otherwise the debug_check_node_connections will complain (this is a sanity check that ensures all the original Nodes have been fully reconnected to Operations). 2012-11-21 09:32:40 +00:00
Brecht Van Lommel
469324b049 Fix compositing normal node not properly showing vector XYZ values when opening
socket menu, and make the normal animatable.
2012-11-17 16:11:02 +00:00
Sergey Sharybin
0071ce5022 Fix #33209: Opening an image with image node on Compositing freezes Blender
Own mistake in image threading commit.
2012-11-17 11:07:46 +00:00
Sergey Sharybin
c063194c6a Fix #33204: Blur node ignores Gamma setting
Gamma correction option was ignored by new compositor system.
Also new compositor was doing alpha premul in a wrong way. In fact,
not sure if it should do premul -- old compositor didn't do that..
2012-11-17 06:14:25 +00:00