[Bf-cycles] Measuring render work
Jonas Eschenburg
indyjo at gmx.de
Sun Feb 9 17:44:03 CET 2014
Am 08.02.14 22:54, schrieb Brecht Van Lommel:
> > Does Cycles keep track of how many samples/bounces/rays it actually had
> > to calculate during a render? And if so, is there a way to exactly limit
> > the amount of work a render takes?
>
> It doesn't keep track of this, but if I understand it right then it
> wouldn't help much. Basically there is no good calculation that you
> can do to estimate the render time before actually rendering the
> scene, I don't think any path tracer can do this. Even if you know the
> settings for bounces etc., you can't know how many times it will
> actually bounce, which pixels will be covered by geometry or which
> will be empty. Even if you did know, the time it takes to trace a ray
> or execute a shader is unpredictable and depends on the scene or
> shader setup in a way that is difficult to analyze. Just one tiny
> setting in a shader can make a big difference.
>
So I understand that even if Cycles did count the number of rays and
bounces, render times depend on a lot of other factors like geometric
and shader complexity.
I think that's okay, for me. For a start, it would suffice to have a
simple cost metric. I will investigate into Cycles source code for that
(even registered on developer.blender.org!).
I just need a way for a rendering server to tell the client "I stopped
working after N rays, your scene is much too complex for what you paid
for". That is much better than saying "I stopped because it took too
long", which is obviously hardware-dependant. I can then go on with
limiting other cost factors, such as shader complexity.
>
> I think that the most reliable thing you can do is estimate the render
> time by rendering a low resolution image with 1 sample, and then from
> that estimating the full render time by taking into account the number
> of (AA) samples and the full resolution. If you can't do that then I
> guess you'd have to do some simple calculation like this, maybe taking
> into account the .blend file size to compensate for simple/complex
> scenes, but it's still easy for the estimate to be off by a factor of
> 10 or 100.
>
Good idea! Would be a good ways for clients to estimate the amount of
work they can put into one task. Basically, they want to stuff as much
work into a task as possible.
>
> For limiting the amount of time a render, we don't really have any
> builtin support for that at the moment. You could do a progressive
> render (where it render 1 sample for the entire image each step) and
> then cancel it when the time runs out?
>
Bailing out after some time limit is easy and I do it already. Bailing
out after some specific number of bounces/intersection tests/whatever is
what I would like to achieve.
Thanks!
Jonas
More information about the Bf-cycles
mailing list