Commit Graph

1091 Commits

Author SHA1 Message Date
1e479d1722 Potential fix for T37525: Viewer node causes crash
LOCK_DRAW_IMAGE used to be unlocked twice. Now made it
so all the thread-unsafe code is inside a single lock/
unlock section.
2013-11-19 13:15:17 +06:00
bc6ba9eb3b Fix T37493: Defocus node with angle = 90° rotates bokeh only for ~1.5° 2013-11-16 19:49:23 +04:00
Lukas Toenne
b91e841f8f Fix #37333: Bad default value in Color Balance. Use independent offset/power/slope variables for the CDL mode in color balance node. This avoids stupid default values in particular for offset, which would be 1 when just using the lift value for it. 2013-11-06 12:44:51 +00:00
Lukas Toenne
b9aa637b83 Removed the DNA storage for LGG lift and inverse gamma in the color balance node. These values were always calculated at execution time, so there is no need to keep them around in DNA data and no forward compatibility break either. Only reason they were stored in DNA before is that the old compositor had no other means of keeping precomputed values around for every pixel than storing the DNA node data, with new compositor this is no longer necessary (values are stored in operations). 2013-11-06 12:44:49 +00:00
3b91a77c7d code cleanup: typo in function name 2013-11-04 11:27:11 +00:00
beae4f498d code cleanup: spelling 2013-10-31 14:10:01 +00:00
8f747c4923 Code cleanup: use bool instead of int in mask module 2013-10-29 18:46:45 +00:00
e667f12783 Fix #37221: Multilayer EXR inputs generate pink frame/last displayed frame when using an image sequence offset
generally speaking, if multilayer image fails to load for current
frame doesn't mean anything bad. It might be used to make it so
image sequence is being alpha-overed somewhere in the middle of
scene time.

Made it so if the whole file fails to load, image node will
deliver black transparent color, the same what happens for
regular (non-multilayer images).

Also needed to tweak code in load_multilayer_sequwnce to make
sure no cached frames are pointing to a freed memory.
2013-10-28 12:16:17 +00:00
692693b92f Remove duplicate cmake enries in game engine and compositor 2013-10-25 11:00:16 +00:00
5b6e6b7285 code cleanup and add mball select similar into the menu 2013-10-25 06:22:15 +00:00
Lukas Toenne
268e519b41 Fix #37175, Viewer node issue for newly toggled render passes.
The RenderLayers node would use the "combined" image result for all passes which don't have a valid render result yet. This causes problems when the buffer element size is not actually 4 floats (RGBA) as
with the 3 float normal passes. Also the result is rather meaningless then, so just keep the image buffer at NULL for unavailable passes, which will return plain (0,0,0) color.
2013-10-23 11:58:00 +00:00
304a32bf1f style cleanup 2013-10-23 02:52:27 +00:00
7c8c49a34a style cleanup 2013-10-21 23:35:08 +00:00
0410eff306 Applied patch [#34178] tile rendering for fast gaussian blur
Thanks to David M (erwin94)
only added some comments.

https://projects.blender.org/tracker/?func=detail&aid=34178&group_id=9&atid=127
2013-10-19 17:45:58 +00:00
1c675034c1 Compositor: did some inner loop optimizations of the fast gaussian blur.
- At Mind -
2013-10-19 16:51:35 +00:00
Lukas Toenne
78efff5f42 Fix #37084, Backdrop not invalidating inside node groups.
Extended the is_active_group flag such that both the current edittree as well as the base node tree in Scene do a viewer node update.
2013-10-16 07:55:52 +00:00
3cfd933d94 code cleanup: correct unsigned int in string formatting and use empty() checks for vectors. 2013-10-14 08:23:57 +00:00
52296b941e code cleanup: remove duplicate assignments 2013-10-14 07:15:59 +00:00
afab39b9d6 code cleanup: use const's for static arrays 2013-10-10 20:22:17 +00:00
d6b21df2e6 correct include guards and add checks in check_style_c.py for them. 2013-09-19 23:17:52 +00:00
Lukas Toenne
407371d0ab Fix #36755, EXR Layers are not fully updated on scene load or image refresh.
After discussion with Brecht decided that automatically updating the sockets of the node based on externally modified data (removed EXR file passes) is not desirable behavior. But at least making sure
the correct passes are assigned to the output sockets of the Image node is possible. Now the passes are matched by name instead of using the faulty index stored in the socket data, which is more
reliable. Still may break if changing pass names externally, but an image reload is highly recommended anyway and will fix that.
2013-09-19 08:21:55 +00:00
Lukas Toenne
c628c4b45b Fix for OutputFile node, this would crash with unconnected sockets in MultiEXR mode, because it matches sockets and EXR layers by index and was skipping unconnected sockets. Simply create EXR layer info
for all sockets now and then ignore unconnected layers when finally writing to file in deinitExecution.
2013-09-19 08:21:53 +00:00
7335a4af04 style cleanup 2013-09-18 23:08:23 +00:00
Lukas Toenne
eac7c19b04 Fix for #36720 and #36721.
This was own error in r60049 which fixed chunk number calculation. This was mixing int and unsigned int values from ExecutionGroup, which leads to huge chunk numbers which are then skipped.
2013-09-13 16:01:41 +00:00
Lukas Toenne
fdd8897172 Cleanup and improvements of the compositor debug output.
Debug code for graphviz output moved to a dedicated file COM_Debug.h/cpp.

The DebugInfo class has only static functions, which are called from a number of places to keep track of what is happening in the compositor. If debugging is disabled these are just inline stubs, so we
don't need #ifdefs everywhere and don't get any overhead.

The graphviz output is much more useful now. DebugInfo keeps track of node names in a static string map for meaningful names. It uses a number of colors for various special operation classes.
ExecutionGroups are indicated in graphviz with clusters.

Currently the graphviz .dot files are stored in the BLI_temporary_dir() folder. A separate dot file is generated for each stage of the ExecutionGroup scheduling, this is intended to give some idea of the
compositor progress, but could still be improved.
2013-09-13 13:36:47 +00:00
Lukas Toenne
ba68fea78b Fix #36700, z-depth not rendering properly at (n*256)+1 dimensions.
The chunk indices for scheduling chunks based on a given area were calculated incorrectly. This caused chunks at the very border of the render (pixels 256..257) to be omitted, leading to incorrect values
in the Z buffer of the test file, which in turn caused wrong normalization range and the resulting almost-white image.
Also added a dedicated executePixel function for Z buffer to avoid any interpolation of Z values.
2013-09-11 17:34:32 +00:00
97d250fa65 Fix #36692: crash with split viewer compositing node and rendering. Only one viewer
node should write to the viewer image, the logic to check this was wrong, now made
it the same as the viewer node.
2013-09-09 18:00:25 +00:00
567e3b47cc On the second thought, no need to go between straight and premul when doing AA for plane warp node 2013-09-06 09:56:04 +00:00
f6b37f34ec code cleanup:
- add missing headers from cmake (own omission)
- quiet rna_test.c unused define warnings.
- minor style edits
- spelling corrections and ignore all uppercase words with spell checking script.
2013-09-05 19:56:49 +00:00
d4b8a6cb85 Code cleanup: use boolean instead of int for colormanagement 2013-09-05 17:13:43 +00:00
Lukas Toenne
028371c174 Compositor cleanup: Merge conversion operations into a single file (see also r59820).
Most convert operations can share a common base class with a single socket reader (except channel separate/combine nodes).
2013-09-05 13:32:14 +00:00
Lukas Toenne
69b68ed867 Removed unused variables used only in BLI_assert, this triggers compiler warning in release builds. 2013-09-05 12:10:49 +00:00
Lukas Toenne
8d2e79aaab Fix #36113, Translate's wrapping has 1 pixel gap in X and Y after scale node.
The issue with wrapping is that it requires correct interpolation of the border pixels. Since interpolation is done at the far left end of the node tree in buffer/image/etc read operations, the wrapping
setting can not be used directly in those operations (otherwise in-line translate operations would cause conflicts). To make wrapping work correctly we need to add a buffer in front of the translate
operation, which can then be interpolated correctly based on wrapping. The WrapOperation becomes a variant of ReadBufferOperation, which uses its wrapping setting to determine the correct "extend" mode
for interpolation of the buffer.
2013-09-05 10:45:21 +00:00
Lukas Toenne
4a1ce71fd9 Extend mode option for MemoryBuffer reading in compositor. This will allow proper interpolation of pixel values when using wrapping in the Translate node. Implemented in inline functions, so won't cause
overhead if constant values are passed (as happens with most calls using the default argument).
2013-09-05 10:45:19 +00:00
c84b18790d Merge some operations into a single file
This merges all mix operations into a COM_MixBaseOperation
(naming could be better, but this way it corresponds to what's
going on with math operations.

Same was done with RenderLayers operations.

Overall this gives 20% of bf_compositor library compilation
time decrease. And it was rather annoying to have tens of
files with just a single-line constructors anyway.

TODO:
- All Convert operations could also be merged into a single file,
  but that would require adding some ConvertBaseOperation to
  reduce code duplication (ideally). Leaving it unchanged for now.

- Some operations' headers seems to be wrongly including MixOperation
  header, they need to include NodeOperation instead it seems.

  This is rather harmless, but would be nice to doublecheck on this
  eventually.
2013-09-05 09:39:38 +00:00
a14febc70a Fix issue with EWA filtering in compositor which disabled alpha
It was caused by wrong copy-paste thing, which replaced check
"whether alpha channel is enabled" with "whether alpha channel
is not zero" (which is always zero in accumulator).

Compositor always works with RGBA, so no need to do any special
checks here.

TODO: Maybe MapUV ode shall ignore alpha channel?
2013-08-19 08:30:03 +00:00
1dc19975c0 Fix warnings reported by cavity checker 2013-08-19 07:32:47 +00:00
1b11428101 fix for crash in compositor/opencl, the error value of -1001 would read past the error-string array. 2013-08-17 07:09:07 +00:00
36c530dec9 Remove ifdef-ed code, it's still in SVn anyway. 2013-08-16 13:58:39 +00:00
a59777c33f Tweaks to MapUV and PlaneTrack nodes to make results less doggy
This disables crazy adaptive sampling happening in diagonal direction.

This still gives some doggyness, but it's much less dramatic now,
and behavior is pretty damn the same as EWA filtering when rendering
textures with Blender Internal.
2013-08-16 13:58:34 +00:00
Lukas Toenne
8d1c0b6f0f Fix for #36468, "Buffer Groups" option changes compositing output.
Problem is that the read/write buffer operations only work with actual
image inputs. If a singular value is used as group input no actual
buffer will be created, the write operation does not schedule any chunks
and the ReadBufferOperation subsequently returns zero
(MemoryBuffer::read).

The fix uses the (0,0) resolution to detect single value input of the
WriteBufferOperation. The actual resolution is then clamped to (1,1) to
ensure we have a single pixel to store the value in. A m_single_value
flag is also set, so we can reliably distinguish this from genuine image
resolutions without having to check m_width/m_height later on.

The ReadBufferOperation copies this flag from the associated
WriteBufferOperation and if set will always return the single value from
pixel (0,0).
2013-08-16 13:11:15 +00:00
a8353530be Make byte-float conversion threaded in compositor
In fact, there's no need to get float buffer at all,
conversion could be done in pixel processor level
after interpolation.

It might give slightly worse interpolation results
(which i'm not sure would be visible by eye) but
it gives more than 2x speedup on my laptop on node
setups used for warping image.

--
svn merge -r58988:58989 ^/branches/soc-2011-tomato
2013-08-16 10:01:09 +00:00
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
82aa90b2d6 Another preview fix for SplitViewer node
Use the same logic as in ViewerNode to update preview when backdrop is disabled.
2013-08-07 18:01:25 +00:00
cf9dcb0709 code cleanup: remove lock from ViewerOperation class 2013-08-06 09:27:20 +00:00
b438c2840c SplitViewer node:
- fix thumbnail preview (previously it showed only one input)
- make SplitViewer node update even if the second input is not connected
- now it works when the first socket is connected to a zero-sized node tree (e. g. Color Input node)
- SplitViewer node is now based on 2 operations: SplitOperation and ViewerOperation.
- ViewerBaseOperation was removed as a redundant one. Any future viewer style node can use the same principle and prepare the output before passing to an actual ViewerOperation.

Thanks Lukas Toenne for reviewing this patch and giving me get few pieces of advice.
2013-08-05 19:16:52 +00:00
6e940a15cb Cycles / SSS passes:
* Connecting the new passes in the compositor caused a crash, forgot to register the new passes in the compositor operations code.
2013-08-03 21:56:27 +00:00
3f53c33d4a fix [#36248] Crash using factor input on color mix node. 2013-07-22 19:59:07 +00:00
7db1d6556d code cleanup: add break statements in switch ()'s, (even at the last case). 2013-07-21 08:16:37 +00:00
397da50002 style cleanup: switch statements, include break statements within braces & indent.
also indent case's within the switch (we already did both of these almost everywhere)
2013-07-19 15:23:42 +00:00