Janus - how can a progress of -x% come about? Just curious ...
The client uses interpolation between the progress updates it gets from Blender to predict the actual progress. It does this to be able to display progress smoothly in BOINC (it updates the estimate almost every second).
In other words, Blender says:
.
10%
.
40%
.
80%
.
100%
At the first 10% the client knows how long time it took to calculate the 10% and will then be able to estimate how long the next 10% are going to take. So it will do like:
.
10%
28%
40%
60%
80%
90%
100%
But if Blender reports the progress as split into more than one pass (which could very well be the case for an effect such as subsurface scattering) it will go from 0 to 100% and then do another run from 0 to 100%. At the point where Blender switches from 100 to 0 the client sees a negative progress with the time between 100 and 0 as the delta timing value. It will try to figure out how long before you reach -200% and use that to make it\'s next progress estimates...
Now after a while Blender reports the next progress update (which should then be slightly more than 0) and the progress estimates from the client then become sane again (positive).
The current code in the Blender status system is a bit of a mess, meaning that there\'s no consistent way to get the total number of passes (since a pass can include another pass etc). So basically I\'ll have to make the Blender patchset know about all the weird ways you can combine effects, fields, layers, compositing and scene inclusions in order to completely avoid this problem. Not an easy task, but not impossible either.
I\'ve chosen to simply add support for new effects etc. as we go along and people start to use them.
At the moment the Blender patchset supports correct progress reporting for fields and for motionblur but not for sss, layers, postprocessing effects and scene inclusions.
|