This is using instructions from Ton, so hopefully the implementation is ok.
This is really needed here where we are using all sorts of wacky scales, and
empties look too big or too small. Of course we don't want to scale the
empties because there are often things parented to them.
New options are in edit buttons for empties to control the display style
and the size. New styles are easy to add, too. Just needs useful ideas and
minor effort from anyone who wants to.
Support for copying these values has also been added to the Copy Attributes
->Drawtype menu command.
causing render to crash on cygwin with gcc 3.4.4. Changed
declaration of shadepixel() argument "int facenr" to volatile.
Can anybody recommend a more elegant solution?
- cleanup of color curves code; goes at least twice faster now!
(includes black/white point stuff)
- When using 'Curves' in image window on a byte rect, it creates a (temp)
float rect to operate on. So curves work for regular pictures too now.
Until now, the zbuffer was written straight from the internal zbuffer,
which has values that are inverse-proportional (like 1.0/z) which makes
it very hard to use it for postprocess, like zblur or other composit effects
that require Z.
Based on info from ILM, the values stored for Z in exr files is the
actual distance from a camera. I think that's about time to migrate to that
convention!
By default now, after render, the z values are converted to floats. This
saves in exr files now, but not in the Iris Z files. That latter was a
blender-only anyway, so might be not a real hassle to drop. :)
You can see the difference in the image window, but notice the range now
is linear mapped from camera clipstart to clipend.
Note; I just discover that ortho Z values need a different correction...
- Image textures use float colors now, when present. Works for mipmap too,
and for AO skycolor (probes)
- Backbuffer option uses float buffers too. Note that rendering OSA will
resample the backbuffer, filtering it... will need to be solved with the
new composit stage
- LMB sampling in image window now shows float color too
+ bugfix in imbuf, filtering for float buffers had an error.
- options to show with alpha-over (checkered backdrop), only alpha (BW) and
when available: the zbuffer.
Note: it's icons in the header, I just re-used existing ones, no time now
for fancy design. :)
Also: recoded the way alpha-only draws, also in renderwindow. Mucho faster!
Oh, and sampling the buffer with LMB now displays z values in float range
of 0.0 to 1.0. Note that we still save signed int in files for Z...
- images with a so-called "data window" (have negative start coordinate)
did not read correctly
- negative colors were not clamped yet in imbuf
Now there's still some compliancy issues with zbuffers... you can save
it either as unsigned int or as float, whilst blender renders zbuffer in
signed int. :)
some strange merging). Unfortunately, Bullet doesn't build correctly
for gcc under cygwin (some private vs public stuff), so it is
important to be able to disable the game engine in these circumstances.
- EXR now saves and reads Zbuffers correctly
- EXR reading didn't set alpha to 1 yet when no alpha buffer was present
- ImageWindow: the "black point" only checked for the r value... now is OK
- ImageWindow: Curves panal has button "reset"
- ImageWindow: hold LMB drag shows rgba and z values. With SHIFT or CTRL it
applies black/white point whilte dragging too
- ImageWindow: saving file copied the entire buffer... removed that. Also
made the header print clear; this save only saves in own file type.
- Curves: zoom and drag now gets clamped by the Clipping value
- Imbuf: duplicate buffer only copied one quarter of to new buffer
Accidentally didn't disable the tests I did for 'translucent raytrace',
a cheapskate SSS method;
http://www.blender.org/bf/rt.jpghttp://www.blender.org/bf/rt1.jpg
It slowed down render too much, was default on... but invisible! It needed
the F10 buttons "rt" to be huge (600-1000)
causing building without OPENEXR to fail. (Hopefully this doesn't mess up
current scons stuff, shouldn't but I haven't tested it after latest
changes in scons)
(I also cleaned up the Makefile a tad so it didn't check twice for WITH_OPENEXR)
Kent
This fixes most of the UV distortion issues with subsurf. Near seams
however there might still be some distortion, but this should at least
not be worse than before. Subsurf UV is enabled by default on new meshes,
and can be enabled in the modifier panel for existing ones.
Before and after:
http://users.pandora.be/blendix/notsmooth.pnghttp://users.pandora.be/blendix/smooth.png
Objects with no modifier could still be converted, but resulting meshes were corrupt and segfaulted Blender when cycling edit mode.
This tests each mesh object for modifiers before converting.
Resulting metaballs meshes were not visible in wireframe.
Also made the selection context nicer, All new converted objects are selected while objects that are converted are deselected.
Image as loaded in Blender (from openexr.com):
http://www.blender.org/bf/exrcurve1.jpg
Image with different white point:
http://www.blender.org/bf/exrcurve2.jpg
Image with white and black point and a curve:
http://www.blender.org/bf/exrcurve3.jpg
Use SHIFT+click to set the black point, and CTRL+click for white point.
The buttons in the panel work too, of course.
The curves work after the black/white range was corrected, so you can
stick to curves with a normal 0-1 range.
There's also now a general color curve, marked with 'C' button.
Note; this currently only maps the float colors to a visible 8 bits per
channel rect. You can save it, but when the blender file loads the curve
or mapping is not executed until you click in the curves... have to look
at that still.
Speed for this is also quite unoptimized... still WIP, but fun!
- Reading exr images now goes OK. I've unified the code for reading
'half' and 'float' (was nicely possible!). And removed useless copying
of data around.
- Fixed bug in allocating new rects, like for making mipmaps. flag issues.
- filter code accidentally incremented wrong pointer (crash on mipmap too)
After this click on the object name and start typing, even though the selection makes it that the new string would be overwritten, it dosent let you type in any text.
from
if(len <= but->max) {
to...
if(len-SELWIDTH+1 <= but->max) {
- Tested and works well.
On duplicating an object with material ipos that has drivers, the new ipos
(if material and ipos were copied) didn't get the correct pointer to the
new driver object (if that was copied!)
- F10 scene buttons now has options "half" and "zbuf" for exr saving.
Note: when no float buffer is available, it always saves as "half",
that's sufficient anyway, since half is 16 bits per channel.
- EXR in imbuf now uses compliant ibuf->ftype flags for denoting exr
extensions such as 'half' and 'compression'.
- Removed ugly blenkernel dependency from exr module
Commented out crufty name spesific actions that changed variables and added a label of buttons started with "Rot" - Since panels are used for rotating now.
* Improved context, unwraps active object if not selected and makes sure it only unwraps a mesh once even if 2+ instances are selected.
* Added Option to stretch to bounds
* Added option to have a margin, thanks to letterrip
* Fixed bug whe nassigning UV's to zero area faces.
I also provided a fix for tiff images. (It was appending tif even if
it was already in the name, now it does it correctly)
(no more image.tif.tif)
Kent
These should make it so that other people can compile with OpenEXR support.
(I also added the OPENAL fix erwin commited to bf-blender since I
need it for my machine, and this syncs up the file)
Kent
Credits go to Gernot Ziegler, who originally coded EXR support, and to
Austin Benesh for bringing it further. Kent Mein provided a lot of code
for integrating float buffers in Blender imbuf and ImBuf API cleanup,
and provided Make and Scons and static linking.
At this moment; the EXR libraries are a *dependency*, so you cannot get
the Orange branch compiled without having OpenEXR installed. Get the
(precompiled or sources) stuff from www.openexr.com. Current default is
that the headers and lib resides in /user/local/
Several changes/additions/fixes were added:
- EXR code only supported 'half' format (16 bits per channel). I've added
float writing, but for reading it I need tomorrow. :)
- Quite some clumsy copying of data happened in EXR code.
- cleaned up the api calls already a bit, preparing for more advanced
support
- Zbuffers were saved 16 bits, now 32 bits
- automatic adding of .exr extensions went wrong
Imbuf:
- added proper imbuf->flags and imbuf->mall support for float buffers, it
was created for *each* imbuf. :)
- found bugs for float buffers in scaling and flipping. Code there will
need more checks still
- imbuf also needs to be verified to behave properly when no 32 bits
rect exists (for saving for example)
TODO:
- support internal float images for textures, backbuf, AO probes, and
display in Image window
Hope this commit won't screwup syncing with bf-blender... :/
PupBlock method. This wraps the "clevernumbut" code to allow scripters to use popup blocks for user input instead of a sequence of multiple different popups.
See the blend file for a comprehensive test and example file.