Core Image intermediate rendering for full-extent lower-resolution kernel inputs

I render images using a tiled/LOD pipeline. The final render usually requests only the visible ROI at the current display scale, which works well for local filters.

The difficult case is filters that need a lower-resolution full-extent or larger-extent input, such as guided filters, blurs, histograms/statistics, and reduce passes. If that dependency remains inside the same CI graph, ROI propagation can force larger-extent evaluation of the upstream image, defeating small-ROI rendering.

My current approach is to render those intermediates in a separate lower-resolution CI render pass, cache the result, and feed the rendered intermediate back into the final graph.

Is this the recommended architecture, or is there a better Core Image structure for expressing this kind of intermediate render/cache barrier without manually creating and rendering a separate intermediate graph?

Thanks!

Answered by Engineer in 893517022

That approach is fine but you might want to try the new imageByInsertingTiledIntermediate API as an alternative.

That approach is fine but you might want to try the new imageByInsertingTiledIntermediate API as an alternative.

Thanks. Could you briefly explain how imageByInsertingTiledIntermediate should be used here?

Is it intended to replace my explicit render-to-texture/cache barrier, while still requiring me to build the lower-resolution intermediate branch myself?

Core Image intermediate rendering for full-extent lower-resolution kernel inputs
 
 
Q