[JAI] Dumbo question about rendered vs renderable
Apologies for the dumbo question, but I've read the JAI 1_0_1 guide a
number of times, and am still struggling to understand the distinctions
between the rendered/renderable deferred execution model.
This is one part of the explanation that I'm struggling with:
"A Rendered graph processes images in immediate mode. For any node in
graph, the image source is considered to have been evaluated at the
moment it is
instantiated and added to the graph. Or, put another way, as a new
added to the chain, it appears to compute its results immediately."
After having fooled with chained OpImages, I know that tile computation
doesn't start until the data is required. For example, if I do
RenderedOp cannyImage = JAI.create("Canny", cannyParameterBlock);
RenderedOp storedImage = JAI.create("FileStore", storeParameterBlock);
The Canny computation (and all of the chained OpImages therein) doesn't
begin until the FileStore tries to do its stuff. To me, this seems like
execution is deferred until a sink requires the data. I thought
Rendereds didn't work that way, since this is how Renderables performed
their work. Isn't the Rendered chain working like a pull model here?
Also, I understand that Renderables are resolution independent. I've
got the impression from somewhere that Renderables are associated with a
pyramid of subsampled data so that when rendering is pulled, the
resolution-specific computation can be done quickly, because the data is
at hand. (I probably misunderstand this) If so, does that mean that
Renderables are more memory hungry than Rendered?