org.sunflow.core.photonmap
Class GridPhotonMap

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

public class GridPhotonMap
extends java.lang.Object
implements GlobalPhotonMapInterface


Constructor Summary
GridPhotonMap()
           
 
Method Summary
 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(boolean includeDirect, boolean includeCaustics)
           
 void prepare(Options options, BoundingBox sceneBounds)
          Initialize this object for the specified scene size.
 int 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

GridPhotonMap

public GridPhotonMap()
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

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