org.sunflow.core

## Class Scene

- java.lang.Object
- - org.sunflow.core.Scene

    public class Scene
    extends java.lang.Object

Represents a entire scene, defined as a collection of instances viewed by a camera.

### Constructor Summary

Constructors
Constructor and Description
`Scene()` Creates an empty scene.

### Method Summary

Methods
`void` `accumulateStats(IntersectionState state)`
`void` `accumulateStats(ShadingCache cache)`
`boolean` `calculatePhotons(PhotonStore map, java.lang.String type, int seed, Options options)` Create a photon map as prescribed by the given `PhotonStore`.
`BoundingBox` `getBounds()` Get scene world space bounding box.
`ShadingState` `getRadiance(IntersectionState istate, float rx, float ry, double lensU, double lensV, double time, int instance, int dim, ShadingCache cache)` Get the radiance seen through a particular pixel
`int` `getThreadPriority()` Get the priority level to assign to multi-threaded operations.
`int` `getThreads()` Get number of allowed threads for multi-threaded operations.
`void` `render(Options options, ImageSampler sampler, Display display)` Render the scene using the specified options, image sampler and display.
`void` `setBakingInstance(Instance instance)` The provided instance will be considered for lightmap baking.
`void` `setCamera(Camera camera)` Sets the current camera (no support for multiple cameras yet).
`void` `setInstanceLists(Instance[] instances, Instance[] infinite)` Update the instance lists for this scene.
`void` `setLightList(LightSource[] lights)` Update the light list for this scene.
`void` `setShaderOverride(Shader shader, boolean photonOverride)` Enables shader overiding (set null to disable).

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Scene

    public Scene()

Creates an empty scene.

### Method Detail

#### getThreads

    public int getThreads()

Get number of allowed threads for multi-threaded operations.

Returns:
  number of threads that can be started

#### getThreadPriority

    public int getThreadPriority()

Get the priority level to assign to multi-threaded operations.

Returns:
  thread priority

#### setCamera

    public void setCamera(Camera camera)

Sets the current camera (no support for multiple cameras yet).

Parameters:
  `camera` - camera to be used as the viewpoint for the scene

#### setInstanceLists

    public void setInstanceLists(Instance[] instances,
                        Instance[] infinite)

Update the instance lists for this scene.

Parameters:
  `instances` - regular instances
  `infinite` - infinite instances (no bounds)

#### setLightList

    public void setLightList(LightSource[] lights)

Update the light list for this scene.

Parameters:
  `lights` - array of light source objects

#### setShaderOverride

    public void setShaderOverride(Shader shader,
                         boolean photonOverride)

Enables shader overiding (set null to disable). The specified shader will be used to shade all surfaces

Parameters:
  `shader` - shader to run over all surfaces, or `null` to disable overriding
  `photonOverride` - `true` to override photon scattering with this shader or `false` to run the regular shaders

#### setBakingInstance

    public void setBakingInstance(Instance instance)

The provided instance will be considered for lightmap baking. If the specified instance is `null`, lightmap baking will be disabled and normal rendering will occur.

Parameters:
  `instance` - instance to bake

#### getRadiance

    public ShadingState getRadiance(IntersectionState istate,
                           float rx,
                           float ry,
                           double lensU,
                           double lensV,
                           double time,
                           int instance,
                           int dim,
                           ShadingCache cache)

Get the radiance seen through a particular pixel

Parameters:
  `istate` - intersection state for ray tracing
  `rx` - pixel x coordinate
  `ry` - pixel y coordinate
  `lensU` - DOF sampling variable
  `lensV` - DOF sampling variable
  `time` - motion blur sampling variable
  `instance` - QMC instance seed
Returns:
  a shading state for the intersected primitive, or `null` if nothing is seen through the specifieFd point

#### getBounds

    public BoundingBox getBounds()

Get scene world space bounding box.

Returns:
  scene bounding box

#### accumulateStats

    public void accumulateStats(IntersectionState state)

#### accumulateStats

    public void accumulateStats(ShadingCache cache)

#### render

    public void render(Options options,
              ImageSampler sampler,
              Display display)

Render the scene using the specified options, image sampler and display.

Parameters:
  `options` - rendering options object
  `sampler` - image sampler
  `display` - display to send the final image to, a default display will be created if `null`

#### calculatePhotons

    public boolean calculatePhotons(PhotonStore map,
                           java.lang.String type,
                           int seed,
                           Options options)

Create a photon map as prescribed by the given `PhotonStore`.

Parameters:
  `map` - object that will recieve shot photons
  `type` - type of photons being shot
  `seed` - QMC seed parameter
Returns:
  `true` upon success