Radiosity with conventional lighting

### 4.1.2 Radiosity with conventional lighting

The pictures here introduce combined conventional/radiosity lighting. Later on you can also find examples for pure radiosity illumination.

The following settings are default, the result will be the same with an empty radiosity block:

      global_settings {
        radiosity {
          pretrace_start 0.08
          pretrace_end   0.04
          count 35

          nearest_count 5
          error_bound 1.8
          recursion_limit 3

          low_error_factor 0.5
          gray_threshold 0.0
          minimum_reuse 0.015
          brightness 1

          adc_bailout 0.01/2
        }
      }

The following pictures are rendered with default settings and are made to introduce the sample scene.

All objects except the sky have an ambient finish of 0.

The `ambient 1` finish of the blue sky makes it functioning as some kind of diffuse light source. This leads to a bluish touch of the whole scene in the radiosity version.

no radiosity | radiosity (default settings) | difference w/o radiosity

You can see that radiosity much affects the shadowed parts when applied combined with conventional lighting.

Changing `brightness` changes the intensity of radiosity effects. `brightness 0` would be the same as without radiosity. `brightness 1` should work correctly in most cases, if effects are too strong you can reduce this. Larger values lead to quite strange results in most cases.

brightness 0.5 | brightness 1.0 | brightness 2.0

Changing the `recursion_limit` value leads to the following results, second line are difference to default (`recursion_limit 3`):

recursion_limit 1 | recursion_limit 2 | recursion_limit 5
recursion_limit 1 (difference) | recursion_limit 2 (difference) | recursion_limit 5 (difference)

You can see that higher values than the default of 3 do not lead to much better results in such a quite simple scene. In most cases values of 1 or 2 are sufficient.

The `error_bound` value mainly affects the structures of the shadows. Values larger than the default of 1.8 do not have much effects, they make the shadows even flatter. Extremely low values can lead to very good results, but the rendering time can become very long. For the following samples `recursion_limit 1` is used.

error_bound 0.01 | error_bound 0.5 | error_bound 1.0
error_bound 0.01 (difference) | error_bound 0.5 (difference) | error_bound 1.0 (difference)

Somewhat related to `error_bound` is `low_error_factor`. It reduces error_bound during the last pretrace step. Changing this can be useful to eliminate artefacts.

low_error_factor 0.01 | low_error_factor 0.5 | low_error_factor 1.0
low_error_factor 0.01 (difference) |  | low_error_factor 1.0 (difference)

The next samples use `recursion_limit 1` and `error_bound 0.2`. These 3 pictures illustrate the effect of `count`. It is a general quality and accuracy parameter leading to higher quality and slower rendering at higher values.

count 2 | count 35 (default) | count 300

Another parameter that affects quality is `nearest_count`. You can use values from 1 to 20, default is 5:

nearest_count 1 | nearest_count 5 | nearest_count 10

Again higher values lead to less artefacts and smoother appearance but slower rendering.

`minimum_reuse` influences whether previous radiosity samples are reused during calculation. It also affects quality and smoothness.

minimum_reuse 0.2 | minimum_reuse 0.015 | minimum_reuse 0.005
minimum_reuse 0.2 (difference) |  | minimum_reuse 0.005 (difference)

Another important value is `pretrace_end`. It specifies how many pretrace steps are calculated and thereby strongly influences the speed. Usually lower values lead to better quality, but it's important to keep this in good relation to `error_bound`.

pretrace_end 0.2 | pretrace_end 0.04 | pretrace_end 0.002

Strongly related to `pretrace_end` is `always_sample`. Normally even in the final trace additional radiosity samples are taken. You can avoid this by adding `always_sample off`. That's especially useful if you load previously calculated radiosity data with `load_file`.

always_sample on | always_sample off | always_sample off (difference)

The effect of `max_sample` is similar to `brightness`. It does not reduce the radiosity effect in general but weakens samples with brightness above the specified value.

max_sample 0.5 | max_sample 0.8 | default

You can strongly affect things with the objects' finishes. In fact that is the most important thing about radiosity. Normal objects should have ambient finish 0 which is not default in POV-Ray and therefore needs to be specified. Objects with ambient > 0 actually emit light.

Default finish values used until now are `diffuse 0.65 ambient 0`.

diffuse 0.65 ambient 0.2 | diffuse 0.4 ambient 0 | diffuse 1.0 ambient 0

Finally you can vary the sky in outdoor radiosity scenes. In all these examples it is implemented with a sphere object. `finish { ambient 1 diffuse 0 }` was used until now. The following pictures show some variations:

ambient 0 diffuse 1 | ambient 0 diffuse 0 (no sky) | yellow-blue gradient