Made exr saving respect the 'RGB' or 'RGBA' setting in render output
panel. Saves a whopping 25% filesize!
This commit is contained in:
@@ -178,7 +178,8 @@ static short imb_save_openexr_half(struct ImBuf *ibuf, char *name, int flags)
|
||||
header.channels().insert ("R", Channel (HALF));
|
||||
header.channels().insert ("G", Channel (HALF));
|
||||
header.channels().insert ("B", Channel (HALF));
|
||||
header.channels().insert ("A", Channel (HALF));
|
||||
if (ibuf->depth==32)
|
||||
header.channels().insert ("A", Channel (HALF));
|
||||
if (write_zbuf) // z we do as float always
|
||||
header.channels().insert ("Z", Channel (FLOAT));
|
||||
|
||||
@@ -195,8 +196,8 @@ static short imb_save_openexr_half(struct ImBuf *ibuf, char *name, int flags)
|
||||
frameBuffer.insert ("R", Slice (HALF, (char *) &pixels[0].r, xstride, ystride));
|
||||
frameBuffer.insert ("G", Slice (HALF, (char *) &pixels[0].g, xstride, ystride));
|
||||
frameBuffer.insert ("B", Slice (HALF, (char *) &pixels[0].b, xstride, ystride));
|
||||
frameBuffer.insert ("A", Slice (HALF, (char *) &pixels[0].a, xstride, ystride));
|
||||
|
||||
if (ibuf->depth==32)
|
||||
frameBuffer.insert ("A", Slice (HALF, (char *) &pixels[0].a, xstride, ystride));
|
||||
if (write_zbuf)
|
||||
frameBuffer.insert ("Z", Slice (FLOAT, (char *) ibuf->zbuf_float + 4*(height-1)*width,
|
||||
sizeof(float), sizeof(float) * -width));
|
||||
@@ -268,7 +269,8 @@ static short imb_save_openexr_float(struct ImBuf *ibuf, char *name, int flags)
|
||||
header.channels().insert ("R", Channel (FLOAT));
|
||||
header.channels().insert ("G", Channel (FLOAT));
|
||||
header.channels().insert ("B", Channel (FLOAT));
|
||||
header.channels().insert ("A", Channel (FLOAT));
|
||||
if (ibuf->depth==32)
|
||||
header.channels().insert ("A", Channel (FLOAT));
|
||||
if (write_zbuf)
|
||||
header.channels().insert ("Z", Channel (FLOAT));
|
||||
|
||||
@@ -281,8 +283,8 @@ static short imb_save_openexr_float(struct ImBuf *ibuf, char *name, int flags)
|
||||
frameBuffer.insert ("R", Slice (FLOAT, (char *) first, xstride, ystride));
|
||||
frameBuffer.insert ("G", Slice (FLOAT, (char *) (first+1), xstride, ystride));
|
||||
frameBuffer.insert ("B", Slice (FLOAT, (char *) (first+2), xstride, ystride));
|
||||
frameBuffer.insert ("A", Slice (FLOAT, (char *) (first+3), xstride, ystride));
|
||||
|
||||
if (ibuf->depth==32)
|
||||
frameBuffer.insert ("A", Slice (FLOAT, (char *) (first+3), xstride, ystride));
|
||||
if (write_zbuf)
|
||||
frameBuffer.insert ("Z", Slice (FLOAT, (char *) ibuf->zbuf_float + 4*(height-1)*width,
|
||||
sizeof(float), sizeof(float) * -width));
|
||||
|
||||
Reference in New Issue
Block a user