Commit Graph

80 Commits

Author SHA1 Message Date
Ton Roosendaal
78d3f7358b Two more fixes for pass composite:
- Blur nodes didn't accept RGB buffers (only RGBA or single channel ones)
- Mix node had maximum for 'mix' on 1.0, for passes edit that could become
  more, made it 5!
2006-12-05 18:27:43 +00:00
Ton Roosendaal
869eeadeff Damn! Commit for render passes in wrong dir.... 2006-12-05 16:44:57 +00:00
Simon Clitherow
8b65afe877 Added define for atanf to get VC7.1 linking again. 2006-12-02 09:11:32 +00:00
Ton Roosendaal
20ac94e8f0 Two hours of fixing details based on Klocwork source review. Useful report,
although it has a lot of noise. Not to mention our bad string code gives
a load of warnings.

I've reviewed specifically:
- file reading/write
- dna and library code
- node system
- entire render module

Done a couple of files in src/ too, seemed to be nice errors.
2006-12-01 19:52:04 +00:00
Ton Roosendaal
db5d58aaa2 Bugfix #5333
Actually no real bug, but unfinished work in Composite:
The ZCombine node only accepted images, no value inputs for sockets.
Now only the first (top) input socket should be an image, the other ones
can use constant color or values too. Nice way to split an image in
foreground and background.

Also: added an output socket for the resulting Z value.

Do note that zcombone is aliased, no AA or sample info is available.
That's for another time.
2006-12-01 10:52:36 +00:00
Ton Roosendaal
823e71e757 RESCUE COMMIT!
Yesterday's commit from Brecht broke armature editmode, damaging armatures
in a way you cannot rescue. This rewinds the main changes. After commit
I'll try to find the error...
2006-11-21 09:26:59 +00:00
Ton Roosendaal
a667b79b35 Small usability tweaks in Compositor:
- After making a Group, internal socket values are now copied to the
  group node, so an execute will give identical results
- After ungrouping, the cyclic dependency tagging didn't work well in
  all cases, showing a red noodle line and giving composite errors.
  For time being solved by calling the NodeSort twice.
- Viewer nodes now get previews updated always (used to be only the active)
  Note: this is not for previews inside of groups!
2006-11-20 09:37:01 +00:00
Robert Holcomb
0a7c43c6e5 Updated tooltips in matte nodes to better explain their use. Made the names of the matte nodes more consistent.
Minor change to to how luminance detail is added to alpha channel in chroma key node.

Removed unused inputs in chroma key and luminance key nodes.

Changed chroma key controls back to sliders because I think they offer the user a more intuitive interface to the node.
2006-11-19 19:17:32 +00:00
Ton Roosendaal
fe339da0f0 Bugfix #5168
Composite: Rotate and Scale nodes ignored the translation offset.
I've added rotating and scale of offset vector, but this should become a
nice 2d matrix[3][3].

Also fixed: the call "pass_on_compbuf" now has correct handling for
using duplicate buffer rects. Can be used safely again to migrate input
buffers to the output when no operation happened. This makes translate
node faster again btw.
2006-11-18 12:34:33 +00:00
Ton Roosendaal
e76a1c120f Small fix in Composite "File Output" node: added Z buffer input socket,
for saving rgba+z exr files.
2006-11-18 11:11:55 +00:00
Ton Roosendaal
f89b052262 New Compo node: the Split-Viewer, showing two images halves to compare.
Works internally already with masks, so we can have several builtin
types.
2006-11-16 21:50:35 +00:00
Ton Roosendaal
6cd62026b9 - Previews for composite nodes didn't scale correct for portrait sized
images (should make it narrow then)

- Forgot to press 'save' for changes in Juho's flip node, previous commit
2006-11-15 16:55:40 +00:00
Ton Roosendaal
3959fbcf1f Patch #5166, Juho V (bebraw)
New Composite Node: Flip (X/Y/both)
2006-11-15 15:18:06 +00:00
Ton Roosendaal
5d8efc9756 Patch #2307, by Bob Holcomb
Loadsa new compo nodes, most added in new menu "Mattes".

- Seperate into YCC
- Combine YCC
- Seperate into YUV
- Combine YUV

- (Chroma) Difference Matte
- Chroma Key
- Luminance Key

- Color Spill correction

Main problem is missing docs still... Bob is working on it, he'll also
make tooltips for all buttons.
Some UI things might change too, like more clear names.
2006-11-15 14:41:04 +00:00
Ton Roosendaal
7ce7d0e7d3 Bugreport in irc:
The Preview panel in UV window, for compositing, sets a 'crop' flag in the
scene when used. Somehow this flag can hang when you switch screens or
close windows. Or even worse, it crashed on renders.

This commit ensures that the compositor survives and gives error prints.
The real issue, hanging flags on closing windows, has to be solved still.
2006-11-09 12:06:06 +00:00
Ton Roosendaal
a7d3a58ba9 Serious bugfix for compositing; using Groups could crash if one of the
input nodes was 'passing on' the buffer (because it didn't operate on the
image). That's for example for Blur with size 0 or for Translate node.
This passed-on buffer then got freed inside the group...

Solution now is just a malloc. Better system should be devised, with
reference counting or so. Thanks Ivan Hoffmann for the sample file!
2006-10-27 19:52:41 +00:00
Ton Roosendaal
9f77785d7c Coding work while on the trip to london (based on Plumiferos wishlist);
- Icon previews for Images were created always for old files, which made
  browsing (menus) incredible slow. Added a minor change in the flow, so
  icons only get created when the user invokes loading images.
  Andrea; you might check this, probably not al cases are covered yet?

- Compositor: the 'File Output' node now has a min/max frame for which it
  writes files

- Compositor: fixed a very bad bug (even in 2.42a release) that made the
  depsgraph for nodes not work... while editing, only the nodes that change
  should be recalculated, but accidentally all of them were done each time.
2006-10-26 10:13:16 +00:00
Brecht Van Lommel
dfa01a56ba Fix for bug #5044: random crashes when rendering.
This one is of my own making, removed too many locks. Thanks Malefico for reporting.
2006-09-30 21:29:47 +00:00
Ton Roosendaal
bcb16ea280 Patch #4970 (brecht)
Added: Scale node in Compositor.

- Only works for RGBA buffers now
- I have added an option "Relative" or "Absolute" scale. So you can also
  define actual pixels for scale. Values for scale are reset when you
  switch, to prevent too weird situations.
- Scaling wasn't foreseen to work with the preview-panel in UV window, this
  preview cropping only happens for Image and RenderResult nodes... actually
  should be done for the scale too. I wait with t hat though... this preview
  method isn't very advanced yet.
- The pass_on_compbuf() here crashed in tests with preview panel, that's
  weak code... I have to recode that. For time being I use the
  dupalloc_compbuf to have it stable.
2006-09-14 12:21:18 +00:00
Brecht Van Lommel
e7d6537f1c Added support for threadsafe MEM_mallocN/MEM_freeN in the guardedalloc
module itself, replacing the special MEM_mallocT/MEM_freeT functions.
Mutex locking is only enabled when threads are running.

There was no good reason to have these separate, it just led to ugly
hacks when calling functions with non-threadsafe malloc from threads.
2006-09-06 19:13:23 +00:00
Ton Roosendaal
e0ec517d72 Patch #4199 (by David Millán, rewritte though)
Compositor: Rotate Node
It only delivers RGBA buffers for now. Also Image size is unaltered, so
parts get cropped away. Doesn't work with translation Node before this
node yet.
2006-08-29 14:32:06 +00:00
Ton Roosendaal
b894ee5b87 Bugfix #4892
Compositor: Image nodes used for Movie files didn't convert the relative
paths (if used), so it could not load the movie file.

This bug explains why sometimes movies worked in the Compositor... so for
the current release the bypass is to disable the "Relative" button in the
File Window.
2006-08-20 10:18:01 +00:00
Ton Roosendaal
7539cec416 Plumiferos bugreport:
The Blur node didn't pass on a buffer when the 'factor' value was not
exactly zero. Tiny values (like 0.0000001) or even negative ones were
still handled by the blur code.
2006-08-18 08:16:34 +00:00
Ton Roosendaal
7440aba482 Compositor: finished work on node "File Output".
- It saves a file with indicated type on each change, with number
  appended denoting the current frame (like ANIM saving).
- Output filename button supports relative paths ("//")
- Shows optional preview image too
- For now, added a print on each file save as feedback

To make this option work nicely, changed the BKE_makepicstring() function
to have less globals inside, so it is more generic. Todo: allow amount of
digits in filenames to be set (to support files like tmp_123456.jpg)
2006-08-10 10:38:50 +00:00
Matt Ebb
3650abf328 A couple of compositing nodes:
* Combine RGBA
Basically the opposite of separate RGBA, brings 4 value channels into a single
RGBA image). Has interesting possibilities for reordering channels, when used
with separate RGBA!

* Dilate/Erode
Originally written by Brecht van Lommel, with some minor modifications and
tweaking by myself. Positive distances dilate, negative distances erode.

* I also added the 'value' field to the hue/saturation node. Minimal extra cost,
and can be handy.
2006-07-31 02:24:35 +00:00
Ton Roosendaal
662d49f076 Bugfix #4773
The VectorBlur node crashed when it didn't get a RGBA type image as
input (like using Alpha as input). Added typeconversion for it.

Note: the Z input and Vector input are not converted, but checked for.
When an improper type gets connected to these inputs, an error is
printed in console.
2006-07-23 09:54:22 +00:00
Ton Roosendaal
a6b0c136bb Bugfix #4770
When adding a new node in a group, the call to refresh input/output
sockets was called after a compositing update was executed.
Just moved this call 2 lines up.

This also uncommits the fix from Joilnen, the stack pointers in the node
system are *per definition* set. If NULL, it's an indication something
else is wrong.
2006-07-23 09:10:05 +00:00
Joilnen Leite
9868544a41 fix for bug #4770
.
2006-07-23 02:56:45 +00:00
Ton Roosendaal
49bbb326b1 Bugfix #4736
Composite: the Translate Node only worked in some cases (pixel processor
call), and not for:

- filter
- seperate rgba
- conversion of buffer types (value to rgba etc)

Blur still doesn't either, but that code is too optimized to add quick.
Will put on todo for checking on better unification of translations.
2006-07-19 19:46:42 +00:00
Ton Roosendaal
d55b5240b9 Composite node "Separate RGBA" didn't do a typecheck.
Errors happened when inputting a Normal or Value buffer in this node.
2006-07-03 15:25:11 +00:00
Ton Roosendaal
5e30fb119c Bugfix #4561
Sequence renders, calling scenes with compositing, didn't execute composite
correctly. Confusement caused by the rule that a "Render" handle has same
name as Scene, which gives conflict for the case when a Scene has
sequencing with Scene strips with its own scene in it.

The previous solution for that conflict caused composite not to work. This
commit solves that, but it is still hackish. Main reason is the still
bad global G.scene, in use by compositor.
2006-07-02 09:56:41 +00:00
Ton Roosendaal
d173a0c8de Bugfix #4528
In compositor you can mix RGBA and Value buffers freely, but with one
exception... the Composite (output) node!

This solves a crash when connecting a Alpha socket to RGBA input in
Composite node.
2006-06-28 17:59:36 +00:00
Ton Roosendaal
5f5ee11fcb Seems a large commit, but I also changed function names to match the new
naming convention for Compositing:

- Render Result node -> Render Layers node (name only appears in Add menu)
- Compositor image -> Viewer Node image

I've also added a version patch (2.41 saved files only) to rename existing
"Compositor" Images.
2006-06-19 08:45:11 +00:00
Ton Roosendaal
16bce562d0 Fix for Compositor, Image node: reads now from Movie files as well.
(support was there already halfway, needed to add button and an anim check)
2006-06-17 11:40:50 +00:00
Matt Ebb
cf9e420ad3 * Added header pulldown menus for the Node Editor. Also tweaked colours and some
of the menu organisation, consolidating the redundant 'Generators' with 'Input'.
2006-06-16 04:32:39 +00:00
Ton Roosendaal
e18e59ee67 Bugfix #4295
Composite: Z Combine node, output socket "Z" didn't do anything, removed it
2006-06-09 12:45:09 +00:00
Ton Roosendaal
bc7b4988d0 Plumiferos request
Compositor:
Viewer Nodes inside of Groups now work too. To not frustrate interactive
speed, the following rules apply:

- Making a Group editable (or closing) doesn't signal recalculation of
  composite
- clicking on an Input socket always checks changes and calulcates
- When there are Viewers inside an edited Group, Viewers in the main tree
  are not executed.

Also added: a "hide unused sockets" icon in the header of Viewer nodes.
This allows cleanup of Groups, to prevent these sockets get reveiled.
2006-06-03 09:19:10 +00:00
Ton Roosendaal
aecb5b468a Bugfix #4257
The "Laplace" filter in Compositor didn't do what it should... which is
a mild edge detection, similar to Sobel etc.
2006-06-02 13:19:48 +00:00
Ton Roosendaal
1418cc4483 Compositor: Group nodes could free buffers internally while still in use
external. For example Blur and Translate nodes suffered it.

Makes Group Nodes a tinsy bit more stable now. :)
2006-05-30 17:47:34 +00:00
Ton Roosendaal
e5b39b69d1 So! Finally time to work on finishing render pipeline project.
This commit brings back:

- Field Render
- MBlur Render (old style)
- Border render with or without cropping

Note: Field Render is not supported in Compositor yet. Blurring or filter
will destroy field information.
Both MotionBlur as Field render are done before Compositing happens.

Fixes:

- The "Save Buffers" option only worked on single frame renders, not for
  Anim render.
- Found an un-initalized variable in Render initialize... this might have
  caused the unknown random crashes with render.

Code restructure:

Cleaned up names and calls throughout the pipeline, more clearly telling
what goes on in functions.
This is visible in the updated first image of the Wiki doc:
http://mediawiki.blender.org/index.php/BlenderDev/RenderPipeline
2006-05-27 13:35:03 +00:00
Ton Roosendaal
ebe2958559 Bugfix #4212
Material Nodes: The Texture node didn't do the standard "2d mapping" yet
in case an Image Texture is used. Caused wrong mapping for example for UV
coordinate inputs.
2006-05-23 14:15:07 +00:00
Ton Roosendaal
578ab76bd4 Bugfix: when compositor reads incomplete renders, when using the new
render option "save result to disk" and ESC from rendering, it crashed...

Note; reading partially saved exr files still crash... but that's an issue
within the openexr lib. I've mailed the openexr dev list for assistance
how to properly close a partial saved tile-file.
2006-03-15 10:44:58 +00:00
Ton Roosendaal
6401244afd Crashfix in compositing RenderLayer that doesn't exist... can happen on
appending a scene, which used again another scene to do compomagic with. :)
2006-03-14 20:01:53 +00:00
Ton Roosendaal
34a5739a8a Two fixes in renderpipe...
- Renderwin still used a thread-unsafe malloc, in the header text print

- Setting clipping flags in vertices for parts required a mutex lock after
  all... I thought it would go fine, but noticed on renders with small
  amounts of faces that sometimes faces disappear from a render.
  (was doing movie credits, so all faces are visible! Otherwise it would
  have hardly been noticable...)
2006-03-13 11:01:17 +00:00
Ton Roosendaal
d0011f3318 Compositing workflow goodie; each 'render result' node now has a button
option to re-render that specific node. Also works for nodes using other
scenes.
2006-03-07 21:26:37 +00:00
Ton Roosendaal
b1c7f7f0f7 Urm... Kent's commit to fix a bug broke the other nodes that use the
same composit3_pixel_processor() function. gcc even gives nice warning:

node_composite.c: In function `node_composit_exec_mix_rgb':
node_composite.c:1437: warning: passing arg 9 of `composit3_pixel_processor' from incompatible pointer type

floats were read as pointer...
2006-02-28 16:24:25 +00:00
Kent Mein
4de6d54eec Fix for bug #3967.
It still needs some work but at least now it doesn't crash.

Basically it changed composit3_pixel_processor so that its using full
vector instead of first element (fac variable in the code).
In reality though its just pushing where its looking at the first element
of the vector to another function (do_mix_rgb)
which is calling ramp_blend with fac[0].

Kent
2006-02-27 21:38:57 +00:00
Ton Roosendaal
ef257c2519 Composite: filter node now includes image edge in calculation, the outer
pixels even had alpha zero...
2006-02-22 22:23:30 +00:00
Ton Roosendaal
ef8ec0e4a1 Composite fix: Blur node with option "Bokeh" didn't survive on very small
filtersizes (below 2 pixels). This because Bokeh actually does 2 peaks...

 /\  /\
/  \/  \

I've added some fixes in the filter calculus though, and made sure that
on size 1 at least the image gets copied straight away.
Also fixed error, Bokeh shifted image 1 pixel up.

Todo; make filters become real floats in size...
2006-02-22 20:13:52 +00:00
Ton Roosendaal
b9eb5620b5 Bug in Composite AddAlpha node. The option premul added alpha wrong. 2006-02-21 12:41:48 +00:00