de.grogra.ray2.light
Class DefaultLightProcessor

java.lang.Object
  extended by de.grogra.ray2.tracing.ProcessorBase
      extended by de.grogra.ray2.light.DefaultLightProcessor
All Implemented Interfaces:
LightProcessor, java.lang.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 Summary
DefaultLightProcessor()
           
 
Method Summary
protected  void appendStatisticsImpl(java.lang.StringBuffer stats)
           
 LightProcessor dup(Scene scene)
          Returns a clone of this LightProcessor.
 void getLightRays(boolean frontFace, Intersection desc, RayList rays, java.util.ArrayList cache, java.util.Random rnd)
          Adds all light rays that directly illuminate the specified intersection point is to the list rays.
 void initialize(Scene scene, int raytracerType, java.util.Random rnd)
          Initializes the light processor for use with the given scene.
protected  void initLocals()
           
protected  void mergeStatistics(ProcessorBase src)
           
 void useGeometryTerm(boolean use)
           
 void useOneSamplePerLight(boolean one)
           
 
Methods inherited from class de.grogra.ray2.tracing.ProcessorBase
appendStatistics, clone
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.grogra.ray2.light.LightProcessor
appendStatistics
 

Constructor Detail

DefaultLightProcessor

public DefaultLightProcessor()
Method Detail

appendStatisticsImpl

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

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

getLightRays

public void getLightRays(boolean frontFace,
                         Intersection desc,
                         RayList rays,
                         java.util.ArrayList cache,
                         java.util.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

initialize

public void initialize(Scene scene,
                       int raytracerType,
                       java.util.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

mergeStatistics

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

useGeometryTerm

public void useGeometryTerm(boolean use)

useOneSamplePerLight

public void useOneSamplePerLight(boolean one)