- pending commit for OSX intel systems, with intel graphics. These now call
an extra swapbuffers after glFlush(). Code is ifdeffed, and doesnt affect
other systems.
- show-off commit: option to have transparent nodes over the composite
result. Only draws Image for active Viewer Node now, and image doesnt
translate nor zoom (which isnt bad though).
Set in themes the alpha color of "node backdrop" to make nodes
transparent.
- ImagePaint now uses ImBuf directly, and the rect blending functions
were moved into the imbuf module.
- The brush spacing, timing and sampling was abstracted into brush.c, for
later reuse in other paint modes.
Float ImagePaint support.
Textured Brushes:
- Only the first texture channel is used now.
- Options for size and offset should be added, but need to find some space
in the panel, or add a second one ..
* 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.
- Code for brush spacing and timing was rewritten, making spacing more even.
Example: http://users.pandora.be/blendix/brush_spacing.jpg
- Instead of Stepsize for regular brushes and Flow for airbrushes, there is
now Spacing for both, and Rate for airbrushes.
- Airbrush now works more like it does in the Gimp now, by maintaining the
spacing even if the brush moves faster than the painting rate.
- Some preparations to make brushes work in texture paint mode.
vec.normalized()
mat.inverted()
mat.transposed()
made vec/float possible
normalize/invert/transpose now return None because they modify the data in place.
use the ...(ed) versions to return a modified copy.
Fixed Memory leaks from not decreffing PyFloat_AS_DOUBLE from these python functions...
(found when testing above functions)
ob.rbMass
ob.rbRadius
matrix.determinant()
quat*float
vec*float
matrix.transpose()
EXPP_setModuleConstant
Checked all instances of PyFloat_AS_DOUBLE so I dont think there are any mroe leaks there.
- Added a new Brush datablock, only used by image paint, but intended
to be used in texture paint, vertex paint, weight paint and sculpt
mode also.
- Being a datablock, these brushes can be saved, appended and linked.
They have a fake user by default, to make sure they are saved even if
not selected.
Image Painting:
- Replaced the img module with C code in imagepaint.c
- Airbrush is no longer a separate tool, but rather an option that can
be used for soften, smear and clone also.
- Blend modes mix, add, subtract, multiply, darken and lighten have been
added, code taken directly from vertex paint.
Note to project files maintainers:
- The img module was removed from SCons and Makefiles, and this should
be done in other build systems also. I'll wait to remove the module
from cvs, to not break compilation.
Multiplication of 3D vectors by 4x4 matrices converts the vector to 4D but
did not make the vector homogenous. Fixing that so the translation part of
the matrix will also be applied.
about blockyness of previous one. :)
(note, file name has .jpg still, this is needed for the splash code to
work, not going to change blender code for it now).
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.
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.
Missing dependency graph update on establishing a new relationship between
a static particle system and a curve guide, with the pulldown button in the
"Fields and Deflection" panel.
python new action function (M_NLA_NewAction) was making actions with 2 users, so that acrions would never de-allocated,
alloc_libblock alredy assigns a user, so just dont assign another from M_NLA_NewAction.
Using "Deselect all" pulldown in Node Editor crashed when no nodetree is
visible.
Bugfix #4753
Hotkey SHIFT+P in buttons window started game engine, which it should not.
Ancient issue; when you press keypad-0, it should assign the active camera
object to a scene, but this did not happen when that camera was already
assigned to the active 3d view. A rare case, causing 'error no camera' on
a render.
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.
Actually a bug since dark ages... the code that tries to find the view
correction (zoom) factor for grabbing stored result in a global. With
multiple 3d windows open, with different views, that could result in
wrong correction. Just made the factor a local property in View3D.
Bugfix: using Image.GetCurrent() and image.save() on the "Render Result"
image could result in a segfault since image->ibuf was NULL. This change
forces ibuf to be created if necessary.
NOTE: the Image API needs additional methods/attributes for image.save() to
really do anything useful. The image type, quality, etc., don't seem to be
gettable/settable so the resulting image file may not be in the format the
user would like.
N_T: the implementation of this feature isn't 100% nice, it currently does
a full recalc on each redraw, and it doesn't work properly unless it is
recalculated for each frame.