Setting an appropriate value of -lw for rcontrib/rfluxmtx


I have a general question about setting the value of limit weight (-lw) for pure Monte Carlo runs (-aa 0).

Greg mentioned in response to an earlier question that the number of ambient divisions is rounded down to the nearest square. So, does this imply that by setting a value -lw 1/1000 for -ad 1000 I am off by a slight margin (and should be setting limit weight as -lw 1/961 instead to be more precise)?


Hi Sarith,

In fact, it’s worse than just round-off. Your number of initial samples specified by -ad will be further downgraded based on the reflectivity of the surface you hit, as well as a 0.8 fudge-factor put in there to make sure that all the rays get traced. Since the -aa 0 setting means indirect (ambient) samples are sent with their true contribution weight, these will be cut off after the first bounce even if -ab > 1 if your -lw is equal to 1/ad and Russian-roulette is not enabled. (Russian roulette termination is the default in rtrace and rcontrib but not rpict or rvu.)

This is why I generally recommend a -lw setting smaller than 1/ad, maybe 1/(2*ad). That way, you’re assured of at least one full generation of rays beyond the initial sampling when -ab > 1. It will still look like path tracing as long as you remember to set -lr < 0 for Russian roulette. Not every branch will be traced, but the result will be unbiased.


1 Like

Hi Greg,

Thank you for the prompt and detailed reply.