Package org.sunflow.core.photonmap

## Class GlobalPhotonMap

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

- All Implemented Interfaces:
    `GlobalPhotonMapInterface`, `PhotonStore`

      public final class GlobalPhotonMap
      extends java.lang.Object
      implements GlobalPhotonMapInterface

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `GlobalPhotonMap()` |

  - ### 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?
    `Color` | `getRadiance​(Point3 p, Vector3 n)` | Lookup the global diffuse radiance at the specified surface point.
    `void` | `init()` | Initialize the map after all photons have been stored.
    `int` | `numEmit()` | Number of photons to emit from this surface.
    `void` | `precomputeRadiance()` |
    `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

    - #### GlobalPhotonMap

          public GlobalPhotonMap()

  - ### 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`

    - #### precomputeRadiance

          public void precomputeRadiance()

    - #### getRadiance

          public Color getRadiance​(Point3 p,
                                   Vector3 n)

      Description copied from interface: `GlobalPhotonMapInterface`
      Lookup the global diffuse radiance at the specified surface point.
      Specified by:
        `getRadiance` in interface `GlobalPhotonMapInterface`
      Parameters:
        `p` - surface position
        `n` - surface normal
      Returns:
        an approximation of global diffuse radiance at this point

    - #### 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