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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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