checkpointing for Cycles
Checkpointing provides incremental saving of progress during render. It allows for rendering to be interrupted and even resumed later on a different machine. Renderman is an example of software that currently supports this. One highly useful application of this feature would be in cloud rendering.
For example:
Google Cloud Platform offers what they call "Preemptible Virtual Machines" at a substantial discount. These are virtual machines that may be provisioned at a fixed lower cost, but are appropriate only for fault-tolerant workloads. Checkpointing in Cycles would allow people to render on Google Cloud Platform using preemptibles while minimizing any lost render time caused by the preemption of provisioned machines.
For more information, see:
cloud.google.com/preemptible-vms/
renderman.pixar.com/resources/current/RenderMan/risRecovery.html
6 Comments
and the ball starts rolling? developer.blender.org/rBf8b9f4e9bbc10675de9bbc3088f2841381e23f78
Just as a follow-up, I believe a feature similar to this proposal has been committed to Blender's master branch.
How would this work on renders that use the Node Compositor? Would the compositor process just be postponed/disabled until the full frame completes rendering?
Also, what would the user interface for this feature look like in Blender? Would it simply be a pause/checkpoint button? Where would that button be located (UV/Image Editor? Render Properties?). Mock-up screenshots would help.
Good questions. I think the compositing pipeline would be deferred. Checkpointing seems appropriate mainly for Cycles only. As for the user interface, I have to say I'm really only interested in something like "--checkpoint" as a command line parameter. I'd like to be able to spin up 1000 preemptible virtual machines and start renders with checkpointing enabled regardless of what an artist has set in the .blend file.
To that end, I think these are definitely details that you should include in your proposal.
To expand this: save temporary EXR every X samples could be a start. The tile render goes in steps and saves a full-image temp Multilayer EXR. It would be useful to save renders in case of crash or powerfailure. Or even for just previewing. Then a further step would be an additional temp meta file with all rendering data, to be able to restart a render from the checkpoint state