org.sunflow.core.photonmap

## Class CausticPhotonMap

- java.lang.Object
- - org.sunflow.core.photonmap.CausticPhotonMap

All Implemented Interfaces:
  CausticPhotonMapInterface, PhotonStore

    public final class CausticPhotonMap
    extends java.lang.Object
    implements CausticPhotonMapInterface

### Constructor Summary

Constructors
Constructor and Description
`CausticPhotonMap()`

### Method Summary

Methods
`boolean` `allowDiffuseBounced()` Allow photons reflected diffusely?
`boolean` `allowReflectionBounced()` Allow specularly reflected photons?
`boolean` `allowRefractionBounced()` Allow refracted photons?
`void` `getSamples(ShadingState state)` Retrieve caustic photons at the specified shading location and add them as diffuse light samples.
`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.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### CausticPhotonMap

    public CausticPhotonMap()

### Method Detail

#### prepare

    public void prepare(Options options,
               BoundingBox sceneBounds)

Description copied from interface: `PhotonStore`
Initialize this object for the specified scene size.

Specified by:
  `prepare` in interface `PhotonStore`
  `sceneBounds` - scene bounding box

#### store

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

Description copied from interface: `PhotonStore`
Store the specified photon.

Specified by:
  `store` in interface `PhotonStore`
Parameters:
  `state` - shading state
  `dir` - photon direction
  `power` - photon power
  `diffuse` - diffuse color at the hit point

#### init

    public void init()

Description copied from interface: `PhotonStore`
Initialize the map after all photons have been stored. This can be used to balance a kd-tree based photon map for example.

Specified by:
  `init` in interface `PhotonStore`

#### getSamples

    public void getSamples(ShadingState state)

Description copied from interface: `CausticPhotonMapInterface`
Retrieve caustic photons at the specified shading location and add them as diffuse light samples.

Specified by:
  `getSamples` in interface `CausticPhotonMapInterface`

#### allowDiffuseBounced

    public boolean allowDiffuseBounced()

Description copied from interface: `PhotonStore`
Allow photons reflected diffusely?

Specified by:
  `allowDiffuseBounced` in interface `PhotonStore`
Returns:
  `true` if diffuse bounces should be traced

#### allowReflectionBounced

    public boolean allowReflectionBounced()

Description copied from interface: `PhotonStore`
Allow specularly reflected photons?

Specified by:
  `allowReflectionBounced` in interface `PhotonStore`
Returns:
  `true` if specular reflection bounces should be traced

#### allowRefractionBounced

    public boolean allowRefractionBounced()

Description copied from interface: `PhotonStore`
Allow refracted photons?

Specified by:
  `allowRefractionBounced` in interface `PhotonStore`
Returns:
  `true` if refracted bounces should be traced

#### numEmit

    public int numEmit()

Description copied from interface: `PhotonStore`
Number of photons to emit from this surface.

Specified by:
  `numEmit` in interface `PhotonStore`
Returns:
  number of photons