org.sunflow.core

## Interface GIEngine

All Known Implementing Classes:
  AmbientOcclusionGIEngine, FakeGIEngine, InstantGI, IrradianceCacheGIEngine, PathTracingGIEngine

    public interface GIEngine

This represents a global illumination algorithm. It provides an interface to compute indirect diffuse bounces of light and make those results available to shaders.

### Method Summary

Methods
`Color` `getGlobalRadiance(ShadingState state)` This is an optional method for engines that contain a secondary illumination engine which can return an approximation of the global radiance in the scene (like a photon map).
`Color` `getIrradiance(ShadingState state, Color diffuseReflectance)` Return the incomming irradiance due to indirect diffuse illumination at the specified surface point.
`boolean` `init(Options options, Scene scene)` Initialize the engine.

### Method Detail

#### getGlobalRadiance

    Color getGlobalRadiance(ShadingState state)

This is an optional method for engines that contain a secondary illumination engine which can return an approximation of the global radiance in the scene (like a photon map). Engines can safely return `Color.BLACK` if they can't or don't wish to support this.

Parameters:
  `state` - shading state
Returns:
  color approximating global radiance

#### init

    boolean init(Options options,
               Scene scene)

Initialize the engine. This is called before rendering begins.

Returns:
  `true` if the init phase succeeded, `false` otherwise

#### getIrradiance

    Color getIrradiance(ShadingState state,
                      Color diffuseReflectance)

Return the incomming irradiance due to indirect diffuse illumination at the specified surface point.

Parameters:
  `state` - current render state describing the point to be computed
  `diffuseReflectance` - diffuse albedo of the point being shaded, this can be used for importance tracking
Returns:
  irradiance from indirect diffuse illumination at the specified point