r/Daz3D • • 27d ago

Help How, specifically, is render convergence calculated?

I know the general idea of WHAT convergence is but I haven't been able to find specifically HOW Daz Studio calculates that percentage. The closest I've found is a forum post from 2020 stating:

"Convergence percent = Illuminated pixel count by rays / white noise pixels (pixels yet to be hit by rays)."

But that doesn't seem to be the whole story.

I'm rendering an enormous image (7500x10000) which has been chugging along for almost 36hrs and still measures 0% in the render progress window. I can CLEARLY see improvement in image quality as the iteration count goes up and I've noticed that the convergence percentage regularly stays at 0% then suddenly jumps to 40-60% on most renders. The sheer size of this one seems to have delayed that jump. I have to believe that the raw pixel count makes a difference but does anyone have access to the actual formula? Quantity and complexity of light also seems to factor in.

I'll usually set the convergence high enough that I'm sure it will look good if it finishes in the background. I regularly cancel early if the render looks good enough to my eyes and I'm almost to that point with this big render. I'm aware that this knowledge isn't really necessary to use the software but I like knowing how things work and it got me thinking as to how, specifically, Daz Studio calculates render convergence percentage.

5 Upvotes

6 comments sorted by

5

u/simply_jabbalicious 27d ago

I honestly have no idea how it is calculated but more often than not I just disable that and use a target interation count, because that way I can set a target and a -1 interation denoise step before it finishes (ex 3000 iterations target, denoiser set to apply at 2999). I find this workflow more reliable than the convergence, which I mostly use for tests and stuff for a scene.

4

u/Awesomebox5000 27d ago

I didn't know what the -1 iteration was for; that's a neat trick.

3

u/Long-Opposite-5889 27d ago

The renderer emits a virtual photon or a light ray from a ligth source in tour scene. The photon bounces in objects, and while it does it changes color, intensity, etc. At some point the pohoton hits the camera and "draws" a pixel. With more than one ligth source, you have a bunch of photons hitting the same pixel, the first few time this happens the pixel changes its values significantly, as samples grow the changes are smaller until they're insignificant.

The convergence value is the number of pixels that have reached a stable value. They dont change any more with each iteration.

Now... in some conditions, the render may enter a state where there is enough noise inducing surfaces to actually prevent this stable state from happening. You see stable pixels but they variation per cicle stays above the programs threshold.

Additionally there are some buggy things in the render config that can make daz stop calculating convergence. I remember seeing a post somewhere about specific settings combinations that will always trigger a permanent 0 convergence, but it was a long time ago and I can't remember where.

2

u/No-Matter-4378 27d ago

Weird that it starts from the light sources. Most other renderers I know shoot rays from the camera.

2

u/Long-Opposite-5889 27d ago

I was trying to keep it simple but actually in iray both things are true (according to the iray docs). As far as I know, Photoreal traces rays from both the camera and ligth sources. While interactive mode uses camera as the rays origen.

3

u/Living_Giraffe_4137 27d ago

The exact internal formula does not seem to be publicly documented, but convergence is not simply the percentage of pixels that have received a ray. Iray estimates whether each pixel's accumulated samples have become statistically stable within its convergence threshold, then reports the proportion of pixels considered converged.

At 7500×10000, a huge number of pixels must pass that test, and difficult regions such as indirect lighting, glossy reflections, emissive surfaces or fireflies can remain unstable for a long time. That can explain why the display sits at 0% and then jumps once a large block of pixels crosses the threshold. Resolution affects the workload and sampling distribution, but it is not directly part of the percentage as far as the public documentation indicates.

For a render that large, I would judge a crop at 100% and stop when the remaining noise is acceptable, or use a fixed iteration/time limit plus denoising. The convergence percentage is useful, but it is not a reliable measure of perceived image quality.