de.grogra.ray2.tracing
Class PathTracer

java.lang.Object
  extended by de.grogra.ray2.tracing.ProcessorBase
      extended by de.grogra.ray2.tracing.RayProcessorBase
          extended by de.grogra.ray2.tracing.PathTracer
All Implemented Interfaces:
RayProcessor, java.lang.Cloneable
Direct Known Subclasses:
BiDirectionalProcessor, LineTracer

public class PathTracer
extends RayProcessorBase

This class implements a physically correct path tracer. The computation is done using the formulas for bidirectional path tracing in Eric Veach's PhD thesis "Robust Monte Carlo Methods for Light Transport Simulation". However note that the implemented path tracer is a standard path tracer which creates random paths starting at the eye and directly connects each created vertex with all lights in the scene. So in the terminology of bidirectional path tracing, only light subpaths consisting of a single light vertex are considered (or zero light vertices in case of a ray which hits a light surface).

Author:
Ole Kniemeyer

Nested Class Summary
 
Nested classes/interfaces inherited from class de.grogra.ray2.tracing.RayProcessorBase
RayProcessorBase.Locals
 
Field Summary
static java.lang.String BRIGHTNESS
           
 
Fields inherited from class de.grogra.ray2.tracing.RayProcessorBase
enteredSolids, RECURSION_DEPTH, renderer, scene, sumColor
 
Constructor Summary
PathTracer()
           
 
Method Summary
protected  void appendStatisticsImpl(java.lang.StringBuffer stats)
           
 void initialize(PixelwiseRenderer renderer, Scene scene)
          With this method the processor is initialized with the scene and other information of a PixelwiseRenderer.
protected  void initLocals()
           
protected  void mergeStatistics(ProcessorBase src)
           
 
Methods inherited from class de.grogra.ray2.tracing.RayProcessorBase
dup, getColorFromRay, getIOR, getLightProcessor, initializeBeforeTracing, record, record, setLightProcessor, setRecursionDepth, unrecord
 
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.tracing.RayProcessor
appendStatistics
 

Field Detail

BRIGHTNESS

public static final java.lang.String BRIGHTNESS
See Also:
Constant Field Values
Constructor Detail

PathTracer

public PathTracer()
Method Detail

appendStatisticsImpl

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

initialize

public void initialize(PixelwiseRenderer renderer,
                       Scene scene)
Description copied from interface: RayProcessor
With this method the processor is initialized with the scene and other information of a PixelwiseRenderer.

Specified by:
initialize in interface RayProcessor
Overrides:
initialize in class RayProcessorBase
Parameters:
renderer - the renderer which provides the needed information
scene - the scene which is rendered

initLocals

protected void initLocals()
Overrides:
initLocals in class RayProcessorBase

mergeStatistics

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