org.sunflow.core

## Interface PhotonStore

All Known Subinterfaces:
  CausticPhotonMapInterface, GlobalPhotonMapInterface

All Known Implementing Classes:
  CausticPhotonMap, GlobalPhotonMap, GridPhotonMap

    public interface PhotonStore

Describes an object which can store photons.

### Method Summary

Methods
`boolean` `allowDiffuseBounced()` Allow photons reflected diffusely?
`boolean` `allowReflectionBounced()` Allow specularly reflected photons?
`boolean` `allowRefractionBounced()` Allow refracted photons?
`void` `init()` Initialize the map after all photons have been stored.
`int` `numEmit()` Number of photons to emit from this surface.
`void` `prepare(Options options, BoundingBox sceneBounds)` Initialize this object for the specified scene size.
`void` `store(ShadingState state, Vector3 dir, Color power, Color diffuse)` Store the specified photon.

### Method Detail

#### numEmit

    int numEmit()

Number of photons to emit from this surface.

Returns:
  number of photons

#### prepare

    void prepare(Options options,
               BoundingBox sceneBounds)

Initialize this object for the specified scene size.

Parameters:
  `sceneBounds` - scene bounding box

#### store

    void store(ShadingState state,
             Vector3 dir,
             Color power,
             Color diffuse)

Store the specified photon.

Parameters:
  `state` - shading state
  `dir` - photon direction
  `power` - photon power
  `diffuse` - diffuse color at the hit point

#### init

    void init()

Initialize the map after all photons have been stored. This can be used to balance a kd-tree based photon map for example.

#### allowDiffuseBounced

    boolean allowDiffuseBounced()

Allow photons reflected diffusely?

Returns:
  `true` if diffuse bounces should be traced

#### allowReflectionBounced

    boolean allowReflectionBounced()

Allow specularly reflected photons?

Returns:
  `true` if specular reflection bounces should be traced

#### allowRefractionBounced

    boolean allowRefractionBounced()

Allow refracted photons?

Returns:
  `true` if refracted bounces should be traced