Module raytracer

Class DefaultLightProcessor

java.lang.Object
de.grogra.ray2.tracing.ProcessorBase
de.grogra.ray2.light.DefaultLightProcessor
All Implemented Interfaces:
LightProcessor, Cloneable

public class DefaultLightProcessor extends ProcessorBase implements LightProcessor
This class implements a standard LightProcessor. For lights which are not shadowless, it shoots a shadow ray in order to check if the light source is visible at a specific point. If this ray hits any object, the point is considered to be in the shadow of the light.
Author:
Michael Tauer, Ole Kniemeyer
  • Constructor Details

    • DefaultLightProcessor

      public DefaultLightProcessor()
  • Method Details

    • useGeometryTerm

      public void useGeometryTerm(boolean use)
    • useOneSamplePerLight

      public void useOneSamplePerLight(boolean one)
    • dup

      public LightProcessor dup(Scene scene)
      Description copied from interface: LightProcessor
      Returns a clone of this LightProcessor. All constant variables are copied shallowly, state variables are newly created and copied where necessary.
      Specified by:
      dup in interface LightProcessor
      Parameters:
      scene - duplicate of scene
      Returns:
      clone of this light processor
    • initialize

      public void initialize(Scene scene, int raytracerType, Random rnd)
      Description copied from interface: LightProcessor
      Initializes the light processor for use with the given scene.
      Specified by:
      initialize in interface LightProcessor
      Parameters:
      scene - the scene in which light rays are to be computed
      raytracerType - type of raytracer
      rnd - pseudorandom generator (Environment.STANDARD_RAY_TRACER or Environment.PATH_TRACER)
    • initLocals

      protected void initLocals()
      Overrides:
      initLocals in class ProcessorBase
    • getLightRays

      public void getLightRays(boolean frontFace, Intersection desc, RayList rays, ArrayList cache, Random rnd)
      Description copied from interface: LightProcessor
      Adds all light rays that directly illuminate the specified intersection point is to the list rays. frontFace indicates whether the front face (the side where the normal vector points to) or the back face of the surface at the intersection point is to be illuminated.

      The cache may be used freely by implementations of this method in order to store some caching information. Invokers of this method should provide the same cache for similar situations. E.g., a raytracer should provide an own cache for every node of the recursive raytracing tree.

      Specified by:
      getLightRays in interface LightProcessor
      Parameters:
      frontFace - illuminate front face or back face?
      desc - the intersection point
      rays - all determined rays are added to this list
      cache - the cache may be used freely by implementations
      rnd - pseudorandom generator
    • mergeStatistics

      protected void mergeStatistics(ProcessorBase src)
      Overrides:
      mergeStatistics in class ProcessorBase
    • appendStatisticsImpl

      protected void appendStatisticsImpl(StringBuffer stats)
      Specified by:
      appendStatisticsImpl in class ProcessorBase