org.sunflow.core
Interface PhotonStore

All Known Subinterfaces:
CausticPhotonMapInterface, GlobalPhotonMapInterface
All Known Implementing Classes:
CausticPhotonMap, GlobalPhotonMap, GridPhotonMap

public interface PhotonStore

Describes an object which can store photons.


Method Summary
 boolean allowDiffuseBounced()
          Allow photons reflected diffusely?
 boolean allowReflectionBounced()
          Allow specularly reflected photons?
 boolean allowRefractionBounced()
          Allow refracted photons?
 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.
 

Method Detail

numEmit

int numEmit()
Number of photons to emit from this surface.

Returns:
number of photons

prepare

void prepare(Options options,
             BoundingBox sceneBounds)
Initialize this object for the specified scene size.

Parameters:
sceneBounds - scene bounding box

store

void store(ShadingState state,
           Vector3 dir,
           Color power,
           Color diffuse)
Store the specified photon.

Parameters:
state - shading state
dir - photon direction
power - photon power
diffuse - diffuse color at the hit point

init

void init()
Initialize the map after all photons have been stored. This can be used to balance a kd-tree based photon map for example.


allowDiffuseBounced

boolean allowDiffuseBounced()
Allow photons reflected diffusely?

Returns:
true if diffuse bounces should be traced

allowReflectionBounced

boolean allowReflectionBounced()
Allow specularly reflected photons?

Returns:
true if specular reflection bounces should be traced

allowRefractionBounced

boolean allowRefractionBounced()
Allow refracted photons?

Returns:
true if refracted bounces should be traced