10

« **on:** 2014-12-05, 15:10:38 »
The word "bias," as it applied to 3D rendering, has more or less lost its meaning. The original definition is basically about statistics. Here are some analogies:

Imagine that you're rolling dice. Thousands of them. They're all six-sided and perfectly weighted. Given enough rolls, you will come to the correct average (3.5). However, imagine that you re-roll all ones. The likelihood of getting a one is 1/6th. If you re-roll it, the likelihood of getting another one is also 1/6th, which means the likelihood of rolling an actual one is just 1/36th. The average now becomes ~3.917 instead of 3.5. Your die rolling has become biased because you're selectively re-rolling. This is more or less what happens when you use adaptive sampling (like the adaptive DMC sampler in V-Ray).

Imagine that you're rolling dice again. You've got thousands of die rolls to make and write down in a book, but it's taking you much too long. Let's say you've got 10 000 die rolls to make. Instead of actually rolling 10 000 dice, you roll every 5th for a total of 2000 die rolls. For the rolls you didn't make, you just interpolate between the surrounding rolls. You start by rolling a five and write that down on a line, then you skip four rows ahead and then roll another die. It lands on a three. For the four in-between rows you now interpolated them based on the five and the three: the second line would be 4.6, the third would be 4.2, etcetera. Obviously, you can't actually *roll* a 4.2 so you could round these numbers off to the nearest integer (whole number). Rounded off, the in-between rows would be 5, 4, 4, 3. When the data is all entered, you have all 10 000 rows but you only made 2000 rolls. This is effectively what methods like irradiance caching (and HD Caching in Corona) do. By interpolating between existing data points you generate something that might *look* correct, but won't be. This is biased because there's no way of being certain how large the error is. If irradiance caching misses small details, it's because the engine didn't know that there were supposed to be details there in the first place.

When people say "unbiased engine" what they usually mean is an engine that uses brute force path tracing with plausible lighting and shading models, capable of generating advanced lighting phenomena (such as complex caustics). Strictly speaking, none of this is related to bias. It is entirely possible to make a render engine that fulfils all those requirements while still having bias, and vice-versa.

If someone says that Corona is "slightly biased," they likely refer to the fact that Corona largely behaves in a very predictable way and lacks the usual problems associated with biased rendering methods (irradiance cache flickering and detail loss, for example). It doesn't require you to mess around much with quality settings. There are no adaptive noise thresholds to set. It behaves more like Octane or Maxwell, while still having the speed of a "more biased" engine like V-Ray.