Package 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 | Description
    --- | ---
    `CausticPhotonMap()` |

  - ### Method Summary

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