Class GridPhotonMap

java.lang.Object
org.sunflow.core.photonmap.GridPhotonMap
All Implemented Interfaces:
GlobalPhotonMapInterface, PhotonStore

public class GridPhotonMap extends Object implements GlobalPhotonMapInterface
  • Constructor Details

    • GridPhotonMap

      public GridPhotonMap()
  • Method Details

    • 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
    • size

      public int size()
    • 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(boolean includeDirect, boolean includeCaustics)
    • 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