From 387f9a7c6d42994b127bb481d191c1169709637b Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Sat, 18 Feb 2006 13:28:44 +0000 Subject: Four-in-one commit: (NOTE: new include dependency in Render module, might need MSVC update! It has to include the imbuf/intern/openexr/ directory in search path) -> New Composite node: "Hue Saturation". Works like the former 'post process' menu. There's no gamma, brightness or multiply needed in this node, for that the Curves Node functions better. -> Enabled Toolbox in Node editor This now also replaces the SHIFT+A for adding nodes. The nodes are automatically added to the menus, using the 'class' category from the type definition. Current classes are (compositor examples): Inputs: RenderResult, Image Outputs: Composite, Viewer Color Ops: RGB Curves, Mix, Hue Saturation, AlphaOver Vector Ops: Normal, Vector Curves, Map Value Filters: Filter, Blur, VectorBlur Convertors: ColorRamp, RGBtoBW, Separate RGBA, Separate HSVA, Set Alpha Generators: RGB, Value, Time Groups: the list of custom defined nodes -> OpenEXR tile saving support Created an API for for saving tile-based Images with an unlimited amount of layers/channels. I've tested it for 'render result' now, with the idea that this can (optionally) replace the current inserting of tiles in the main result buffers. Especially with a lot of layers, the used memory for these buffers can easily go into the 100s of megs. Two other advantages: - all 'render result' layers can be saved entirely in a single file, for later use in compositing, also for animation output. - on each render, per scene, a unique temp file can be stored, allowing to re-use these temp files on starting Blender or loading files, showing the last result of a render command. The option is currently disabled, needs more work... but I had to commit this because of the rest of the work I did! -> Bug fix The Image node didn't call an execute event when browsing another image. --- source/blender/imbuf/intern/openexr/openexr_api.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'source/blender/imbuf/intern/openexr/openexr_api.h') diff --git a/source/blender/imbuf/intern/openexr/openexr_api.h b/source/blender/imbuf/intern/openexr/openexr_api.h index c12eb1f05ae..a82713b6595 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.h +++ b/source/blender/imbuf/intern/openexr/openexr_api.h @@ -47,11 +47,20 @@ extern "C" { * @param mem pointer to loaded OpenEXR bitstream */ -int imb_is_a_openexr(unsigned char *mem); +int imb_is_a_openexr (unsigned char *mem); -short imb_save_openexr(struct ImBuf *ibuf, char *name, int flags); +short imb_save_openexr (struct ImBuf *ibuf, char *name, int flags); + +struct ImBuf *imb_load_openexr (unsigned char *mem, int size, int flags); + + +void * imb_exrtile_get_handle (void); +void imb_exrtile_add_channel (void *handle, char *channame); +void imb_exrtile_begin_write (void *handle, char *filename, int width, int height, int tilex, int tiley); +void imb_exrtile_set_channel (void *handle, char *channame, int xstride, int ystride, float *rect); +void imb_exrtile_write_channels (void *handle, int partx, int party); +void imb_exrtile_close (void *handle); -struct ImBuf *imb_load_openexr(unsigned char *mem, int size, int flags); #ifdef __cplusplus } -- cgit v1.2.3