Blender Git Commit Log

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)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021