Finding a good noise level

Use this forum for general user support and related questions.
Forum rules
Please upload a testscene that allows developers to reproduce the problem, and attach some images.
Post Reply
User avatar
aidalgol
Posts: 16
Joined: Sat Jul 20, 2019 10:51 pm

Finding a good noise level

Post by aidalgol »

I have a fairly simple scene with volumetric caustics that I've been rendering at a fixed number of samples, and I thought I would try using the "noise level" halt condition, but I have no idea how to pick a sensible target value. I started with the default value of 5, and the render kept going long after the result looked clean enough, so I bumped it up to 10, 50, and then 80, and it still sits at just under 100% pixel convergence for a very long time, and it still looks clean enough well before it reaches 96% pixel convergence.

Can anyone offer any advice on using this halt condition?
Attachments
lux-volumetric-caustics.blend
(576.74 KiB) Downloaded 143 times
DEBIHOOD
Posts: 48
Joined: Mon Jun 10, 2019 6:46 pm

Re: Finding a good noise level

Post by DEBIHOOD »

According to mine, it is possible to select values only manually, but this type of halt conditions is well suited for rendering animations, for example, when there is a lot of caustics in the frame, it will process it until the noise ends with the number you set, and when the caustics come out frame, rendering time will be reduced, since your computer no longer needs to process complex caustics.

This is a pretty useful function, for myself I present it as an "adaptive halt condition" :lol: :D
User avatar
Dade
Developer
Developer
Posts: 5672
Joined: Mon Dec 04, 2017 8:36 pm
Location: Italy

Re: Finding a good noise level

Post by Dade »

aidalgol wrote: Sun Aug 25, 2019 3:38 am I have a fairly simple scene with volumetric caustics that I've been rendering at a fixed number of samples, and I thought I would try using the "noise level" halt condition, but I have no idea how to pick a sensible target value. I started with the default value of 5, and the render kept going long after the result looked clean enough, so I bumped it up to 10, 50, and then 80, and it still sits at just under 100% pixel convergence for a very long time, and it still looks clean enough well before it reaches 96% pixel convergence.

Can anyone offer any advice on using this halt condition?
It is a value between 0 and 255 (like an 8bit RGB color, internally it is a value between 0.0 and 1.0). When the estimated error is under that threshold, the rendering stop. The perfect rendering would requires a threshold of 0 but it is very impractical and nearly impossible due to numeric precision issues.
A reasonable value is usually something between 3 and 10.

Side note: your scene will just take forever to render because of BiDir+MTL, dispersion, scattering, etc.

For testing, let set an halt value of 3 (and reduce the image resolution to 120x67 so the rendering will be a LOT faster), this is the result:

Code: Select all

[LuxCore][1.556] Convergence test first pass
[LuxCore][1.889] Convergence test: ToDo Pixels = 7065, Max. Error = 0.719257 [184.13/256]
[LuxCore][2.289] Convergence test: ToDo Pixels = 6921, Max. Error = 0.630687 [161.456/256]
[LuxCore][2.690] Convergence test: ToDo Pixels = 6222, Max. Error = 0.502748 [128.704/256]
[LuxCore][3.090] Convergence test: ToDo Pixels = 5363, Max. Error = 0.691067 [176.913/256]
[LuxCore][3.491] Convergence test: ToDo Pixels = 4671, Max. Error = 0.463234 [118.588/256]
[LuxCore][3.891] Convergence test: ToDo Pixels = 4123, Max. Error = 0.325083 [83.2211/256]
[LuxCore][4.291] Convergence test: ToDo Pixels = 3528, Max. Error = 0.530436 [135.792/256]
[LuxCore][4.692] Convergence test: ToDo Pixels = 3083, Max. Error = 0.272496 [69.759/256]
[LuxCore][5.092] Convergence test: ToDo Pixels = 2566, Max. Error = 0.47049 [120.446/256]
[LuxCore][5.426] Convergence test: ToDo Pixels = 1781, Max. Error = 0.221908 [56.8084/256]
[LuxCore][5.826] Convergence test: ToDo Pixels = 2064, Max. Error = 0.339942 [87.0251/256]
[LuxCore][6.226] Convergence test: ToDo Pixels = 1817, Max. Error = 0.256998 [65.7916/256]
[LuxCore][6.627] Convergence test: ToDo Pixels = 1630, Max. Error = 0.346177 [88.6213/256]
[LuxCore][7.027] Convergence test: ToDo Pixels = 1335, Max. Error = 0.146905 [37.6078/256]
[LuxCore][7.427] Convergence test: ToDo Pixels = 1299, Max. Error = 0.440082 [112.661/256]
[LuxCore][7.828] Convergence test: ToDo Pixels = 1158, Max. Error = 0.330175 [84.5249/256]
[LuxCore][8.228] Convergence test: ToDo Pixels = 1128, Max. Error = 0.310062 [79.376/256]
[LuxCore][8.628] Convergence test: ToDo Pixels = 1037, Max. Error = 0.489387 [125.283/256]
[LuxCore][9.029] Convergence test: ToDo Pixels = 935, Max. Error = 0.306051 [78.3491/256]
[LuxCore][9.429] Convergence test: ToDo Pixels = 815, Max. Error = 0.207195 [53.0419/256]
[LuxCore][9.829] Convergence test: ToDo Pixels = 810, Max. Error = 0.364701 [93.3635/256]
[LuxCore][10.230] Convergence test: ToDo Pixels = 782, Max. Error = 0.198329 [50.7723/256]
[LuxCore][10.647] Convergence test: ToDo Pixels = 709, Max. Error = 0.236365 [60.5095/256]
[LuxCore][11.047] Convergence test: ToDo Pixels = 649, Max. Error = 0.227019 [58.1169/256]
[LuxCore][11.447] Convergence test: ToDo Pixels = 626, Max. Error = 0.172299 [44.1086/256]
[LuxCore][11.848] Convergence test: ToDo Pixels = 636, Max. Error = 0.270472 [69.2408/256]
[LuxCore][12.248] Convergence test: ToDo Pixels = 580, Max. Error = 0.129468 [33.1437/256]
[LuxCore][12.648] Convergence test: ToDo Pixels = 498, Max. Error = 0.328676 [84.1411/256]
[...]
[...]
[...]
[LuxCore][104.477] Convergence test: ToDo Pixels = 4, Max. Error = 0.0215852 [5.5258/256]
[LuxCore][104.878] Convergence test: ToDo Pixels = 2, Max. Error = 0.0121213 [3.10304/256]
[LuxCore][105.278] Convergence test: ToDo Pixels = 7, Max. Error = 0.0260581 [6.67088/256]
[LuxCore][105.611] Convergence test: ToDo Pixels = 3, Max. Error = 0.0207402 [5.3095/256]
[LuxCore][106.012] Convergence test: ToDo Pixels = 11, Max. Error = 0.0298047 [7.62999/256]
[LuxCore][106.412] Convergence test: ToDo Pixels = 6, Max. Error = 0.0506375 [12.9632/256]
[LuxCore][106.813] Convergence test: ToDo Pixels = 10, Max. Error = 0.0903368 [23.1262/256]
[LuxCore][107.213] Convergence test: ToDo Pixels = 11, Max. Error = 0.0495684 [12.6895/256]
[LuxCore][107.613] Convergence test: ToDo Pixels = 9, Max. Error = 0.0471335 [12.0662/256]
[LuxCore][108.014] Convergence test: ToDo Pixels = 6, Max. Error = 0.0215342 [5.51275/256]
[LuxCore][108.414] Convergence test: ToDo Pixels = 2, Max. Error = 0.0190842 [4.88556/256]
[LuxCore][108.814] Convergence test: ToDo Pixels = 6, Max. Error = 0.0208503 [5.33768/256]
[LuxCore][109.215] Convergence test: ToDo Pixels = 4, Max. Error = 0.0225071 [5.76181/256]
[LuxCore][109.615] Convergence test: ToDo Pixels = 4, Max. Error = 0.0189489 [4.85093/256]
[LuxCore][110.015] Convergence test: ToDo Pixels = 4, Max. Error = 0.0631005 [16.1537/256]
[LuxCore][110.424] Convergence test: ToDo Pixels = 4, Max. Error = 0.017105 [4.37888/256]
[LuxCore][110.833] Convergence test: ToDo Pixels = 5, Max. Error = 0.0231657 [5.93041/256]
[LuxCore][111.233] Convergence test: ToDo Pixels = 8, Max. Error = 0.0205303 [5.25576/256]
[LuxCore][111.633] Convergence test: ToDo Pixels = 9, Max. Error = 0.0279445 [7.15379/256]
[LuxCore][112.034] Convergence test: ToDo Pixels = 5, Max. Error = 0.0234618 [6.00621/256]
[LuxCore][112.434] Convergence test: ToDo Pixels = 4, Max. Error = 0.0482104 [12.3419/256]
[LuxCore][112.834] Convergence test: ToDo Pixels = 9, Max. Error = 0.0241326 [6.17794/256]
[LuxCore][113.235] Convergence test: ToDo Pixels = 2, Max. Error = 0.0174685 [4.47195/256]
[LuxCore][113.635] Convergence test: ToDo Pixels = 5, Max. Error = 0.0315567 [8.07851/256]
[LuxCore][114.035] Convergence test: ToDo Pixels = 3, Max. Error = 0.019087 [4.88626/256]
[LuxCore][114.436] Convergence test: ToDo Pixels = 7, Max. Error = 0.0294418 [7.53711/256]
[LuxCore][114.836] Convergence test: ToDo Pixels = 5, Max. Error = 0.0216536 [5.54333/256]
[LuxCore][115.236] Convergence test: ToDo Pixels = 5, Max. Error = 0.0209303 [5.35816/256]
[LuxCore][115.637] Convergence test: ToDo Pixels = 1, Max. Error = 0.0282602 [7.23462/256]
[LuxCore][116.037] Convergence test: ToDo Pixels = 5, Max. Error = 0.0258254 [6.6113/256]
[LuxCore][116.438] Convergence test: ToDo Pixels = 10, Max. Error = 0.0308997 [7.91032/256]
[LuxCore][116.854] Convergence test: ToDo Pixels = 0, Max. Error = 0.010773 [2.7579/256]
[LuxCore][116.854] Convergence 100%, rendering done.
As you see, it is working fine, it stops when reach a 2.7579 error. It is just your scene to require 11,342 samples per pixel to reach that level of error.

As already written, this halt condition is usually intended for animations and should be used in combination with other halt conditions, for instance:

- set the halt error to 3;
- set halt samples per pixel to 2500;

So it will always stop at 2500 samples per pixel but if the animation frame requires less work and has small error, it will stop earlier.
Support LuxCoreRender project with salts and bounties
User avatar
aidalgol
Posts: 16
Joined: Sat Jul 20, 2019 10:51 pm

Re: Finding a good noise level

Post by aidalgol »

Thanks to both of you. This helps me a lot with understanding how to use this halt condition. :D
Racleborg
Posts: 621
Joined: Sat Apr 07, 2018 10:31 am
Location: UK

Re: Finding a good noise level

Post by Racleborg »

Thanks to both of you. This helps me a lot with understanding how to use this halt condition.
Same here. Thanks :)
Post Reply