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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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