Package org.sunflow.core.photonmap

# Class GridPhotonMap

java.lang.Object
org.sunflow.core.photonmap.GridPhotonMap

All Implemented Interfaces:
  `GlobalPhotonMapInterface`, `PhotonStore`

public class GridPhotonMap extends Object implements GlobalPhotonMapInterface

## Constructor Summary

Constructors
Constructor
Description
`GridPhotonMap()`

## Method Summary

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(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 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`
Parameters:
  `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