Package 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

Modifier and Type
Method
Description
`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 Details

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