Blender Git Loki
Git Commits -> Revision caee36f
Revision caee36f by Sergey Sharybin (cycles-x) September 7, 2021, 09:06 (GMT) |
Cycles X: Bring back tiles support 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. Limitations: - Changing display pass during rendering does not change displayed pass of the finished tiles. - Memory peak is still higher than with the Save Buffers option. Those limitations are temporary and will be worked on next. Differential Revision: https://developer.blender.org/D12309 |
Commit Details:
Full Hash: caee36fcc12704dad1ef820023474272a3b1ffca
Parent Commit: 8d6a8c5
Lines Changed: +878, -199
16 Modified Paths:
/intern/cycles/blender/addon/properties.py (+12, -0) (Diff)
/intern/cycles/blender/addon/ui.py (+20, -0) (Diff)
/intern/cycles/blender/blender_session.cpp (+9, -14) (Diff)
/intern/cycles/blender/blender_sync.cpp (+8, -0) (Diff)
/intern/cycles/integrator/path_trace.cpp (+209, -40) (Diff)
/intern/cycles/integrator/path_trace.h (+41, -14) (Diff)
/intern/cycles/integrator/render_scheduler.cpp (+72, -21) (Diff)
/intern/cycles/integrator/render_scheduler.h (+36, -7) (Diff)
/intern/cycles/render/film.cpp (+7, -1) (Diff)
/intern/cycles/render/film.h (+4, -2) (Diff)
/intern/cycles/render/session.cpp (+69, -72) (Diff)
/intern/cycles/render/session.h (+13, -1) (Diff)
/intern/cycles/render/tile.cpp (+267, -20) (Diff)
/intern/cycles/render/tile.h (+99, -7) (Diff)
/intern/cycles/util/util_system.cpp (+9, -0) (Diff)
/intern/cycles/util/util_system.h (+3, -0) (Diff)
/intern/cycles/blender/addon/ui.py (+20, -0) (Diff)
/intern/cycles/blender/blender_session.cpp (+9, -14) (Diff)
/intern/cycles/blender/blender_sync.cpp (+8, -0) (Diff)
/intern/cycles/integrator/path_trace.cpp (+209, -40) (Diff)
/intern/cycles/integrator/path_trace.h (+41, -14) (Diff)
/intern/cycles/integrator/render_scheduler.cpp (+72, -21) (Diff)
/intern/cycles/integrator/render_scheduler.h (+36, -7) (Diff)
/intern/cycles/render/film.cpp (+7, -1) (Diff)
/intern/cycles/render/film.h (+4, -2) (Diff)
/intern/cycles/render/session.cpp (+69, -72) (Diff)
/intern/cycles/render/session.h (+13, -1) (Diff)
/intern/cycles/render/tile.cpp (+267, -20) (Diff)
/intern/cycles/render/tile.h (+99, -7) (Diff)
/intern/cycles/util/util_system.cpp (+9, -0) (Diff)
/intern/cycles/util/util_system.h (+3, -0) (Diff)