On Jul 17, 2012, at 5:46 PM, Stefan Stavrev wrote: > 1. "I'm not sure I can easily think of a long series of operations that would > require multiple, different shufflings. Did you have a usage case in mind as > an example?" > > I imagine people having huge node graphs in compositors and they take > arbitrary channels from images, apply operations to those and save > them to arbitrary channels.
Well, there's the crux of it. ImageBuf and its command-line wrapper oiiotool are really meant for simple utility purposes -- for example, if you just want to write a shell script that loops over images and does a quick "over" comp, resize, and format conversion, say. Neither is designed to be the core of an industrial strength node-based compositor (for which you would specifically NOT want to compute intermediate IB's for each operation at all, but rather turn the loops inside out and essentially evaluate the whole node graph for each output pixel, yielding a single output that doesn't need buffering and has minimal memory allocation or copying). So, in short, I think we're not worried about what a compositing package for huge node graphs would need, since channel operations are the least of their architectural problems when it comes to IB's. > 3. "I think that doing the channel selection in one operation up front, then > having conditional-less operations following should be at least as efficient > as doing channel selection within each op." > > I can do it like that for now. Just to confirm we mean the same thing, > let's say that the mask says to only use channels 0 and 1 in image A. > Then I need to create a new image A' just with those two channels > and apply the operation on that. Any method I should use, or just > iterate over all pixels and copy values? Right. I'd just iterate over the pixels and copy values. -- Larry Gritz [email protected] _______________________________________________ Oiio-dev mailing list [email protected] http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
