The meaning of tiles has shifted form being a performance tweak to
a memory saving technique (avoid having full-frame buffers stored
in memory during rendering).
This is an initial implementation which brings some crucial building
blocks, such as:
- User interface.
The tiling is default to be "Use Auto Tile". In the current version the "auto" part is not implemented, but the idea is to only use tiles when needed.
- Internal support for tile manager, render scheduler, path tracer.
Short-term plan is to replace Save Buffers with the new implementation.
In the a-bit-longer term it will also be used for resumable render.
Known limitations:
- Cancelling render without adaptive sampling or sample count pass replaces missing tiles with black upon cancel. This is because the stored buffer is all 0-ed, and zero alpha channel means fully opaque pixel in the render buffers.
It will be solved by storing a meta-information for per-tile number of samples (which is also required for resumable render).
- Denoising happens for both tile and final result. During rendering it is possible to see seams on tile borders.
It will be solved by introducing idea of tile overscan.
- Tiles are not highlighted.
This requires changes in the highlight code on Blender side. It will be worked on separately.
- Peak memory usage is not ideal. Need to somehow free up session memory before reading full-frame file. It will be worked on as a follow-up development.
The render result drawing should be done via GPUDisplay, and the pass memory in RenderResult is to be lazily allocated. There are spearate patches for that under review.
