cz.cuni.jagrlib.piece
Class RayTracing

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.DefaultImageFunction
              extended by cz.cuni.jagrlib.piece.RayCasting
                  extended by cz.cuni.jagrlib.piece.RayTracing
All Implemented Interfaces:
Breakable, ImageFunction, Property, TimeDependent, Template

public class RayTracing
extends RayCasting

Ray tracing of CSG scenes.

Since:
0.13
See Also:
RayTracing.java

Field Summary
protected  int actOrder
          Actual sample order.
protected  int actTotal
          Actual cardinality of sample set.
protected  boolean doReflections
          Use reflected rays (recursion).
protected  boolean doRefractions
          Use refracted rays - in case of transparent material (recursion).
protected static long HASH_REFLECT
          Hash-multiplier for reflected rays.
protected static long HASH_REFRACT
          Hash-multiplier for refracted rays.
static java.lang.String MAX_RECURSION
           
protected  int maxLevel
          Recursion-termination parameter - maximal recursion depth.
static java.lang.String MIN_IMPORTANCE
           
protected  double minImportance
          Recursion-termination parameter - minimal importance value which causes ray reflection and/or refraction.
static java.lang.String REFLECTIONS
           
static java.lang.String REFRACTIONS
           
static RegPiece reg
          Static registration instance for this class.
 
Fields inherited from class cz.cuni.jagrlib.piece.RayCasting
camera, CATEGORY, dataMask, doShading, doShadows, doTextures, HASH_LIGHT, HASH_TEXTURE, inter, scene, SHADING, SHADOWS, TEMPLATE_NAME, TEXTURES, xA, xK, yA, yK
 
Fields inherited from class cz.cuni.jagrlib.DefaultImageFunction
background, time, xMax, xMin, yMax, yMin
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.ImageFunction
BACKGROUND_COLOR
 
Fields inherited from interface cz.cuni.jagrlib.iface.Property
LOGGING, STATISTICS, TEXT_DESCRIPTION
 
Fields inherited from interface cz.cuni.jagrlib.Template
ALL_PLUGS, C_1D, C_2D, C_3D, C_ALPHA, C_BINARY, C_BREP, C_CAMERA, C_CIRCLE, C_CLIP, C_COMPRESSION, C_CURVE, C_DATA, C_DRAW, C_EDITOR, C_ELLIPSE, C_FILL, C_FILTER, C_FLOAT, C_FUNCTION, C_IMAGE, C_INTEGER, C_IO, C_LIGHT, C_LINE, C_METRIC, C_POLYGON, C_PROJECTION, C_RADIOSITY, C_RASTER, C_RENDER, C_SAMPLE, C_SCENE, C_SET, C_SOLID, C_TEXT, C_TRANSFORM, C_VECTOR, C_VIEWER, C_WORKER, CAT_EMPTY, EMPTY, IFACE, JAGRLIB, JAGRLIB2, MANIPULATOR_COMBO, MANIPULATOR_CUSTOM, MANIPULATOR_DEFAULT, MANIPULATOR_MULTILINE, PL_ALPHAMASK, PL_BITMASK, PL_CAUSTIC, PL_CODEC, PL_COLORMAP, PL_COMPARE, PL_DATA, PL_DIRECT, PL_EDITOR, PL_FILTER, PL_FUNCTION, PL_IMAGE, PL_IMPORT, PL_INPUT, PL_INTERSECTION, PL_LIGHTSOURCE, PL_ORDER, PL_OUTPUT, PL_PALETTE, PL_PHOTON, PL_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_SHADOW, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_VOLUME, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
RayTracing()
           
 
Method Summary
protected  boolean assertScene()
          Asserts the RayCasting.scene accelerator and does first-time algorithm setup.
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 long getSample(double x, double y, int order, int total, double[] color)
          Computes one image sample.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
protected  long shade(int level, double importance, double[] p0, double[] p1, double[] color)
          Recursive shading function - computes color contribution of the given ray (shot from the origin p0 into direction vector p1).
 
Methods inherited from class cz.cuni.jagrlib.piece.RayCasting
getTime, getTimeInterval, hashLights, setBounds, setTime
 
Methods inherited from class cz.cuni.jagrlib.DefaultImageFunction
getBounds, getSample
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, init, isCompatible, isCompatible, isConnected, logError, logWarning, myInterface, newInputPlug, newOptOutputPlug, newOutputPlug, newPlug, noTemplates, propBegin, propBounds, propDefault, propEnd, propEnum, propManipulator, propManipulator, setProgressListener, setRegStrings, setTemplateDynamic, stop
 
Methods inherited from class cz.cuni.jagrlib.DefaultProperty
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, stringProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit
 

Field Detail

HASH_REFRACT

protected static final long HASH_REFRACT
Hash-multiplier for refracted rays.

See Also:
Constant Field Values

HASH_REFLECT

protected static final long HASH_REFLECT
Hash-multiplier for reflected rays.

See Also:
Constant Field Values

actOrder

protected int actOrder
Actual sample order.


actTotal

protected int actTotal
Actual cardinality of sample set.


doReflections

protected boolean doReflections
Use reflected rays (recursion).


doRefractions

protected boolean doRefractions
Use refracted rays - in case of transparent material (recursion).


maxLevel

protected int maxLevel
Recursion-termination parameter - maximal recursion depth.

See Also:
minImportance

minImportance

protected double minImportance
Recursion-termination parameter - minimal importance value which causes ray reflection and/or refraction.

See Also:
maxLevel

REFLECTIONS

public static final java.lang.String REFLECTIONS
See Also:
Constant Field Values

REFRACTIONS

public static final java.lang.String REFRACTIONS
See Also:
Constant Field Values

MAX_RECURSION

public static final java.lang.String MAX_RECURSION
See Also:
Constant Field Values

MIN_IMPORTANCE

public static final java.lang.String MIN_IMPORTANCE
See Also:
Constant Field Values

reg

public static final RegPiece reg
Static registration instance for this class. Automatically initialized in class-loading time.

Constructor Detail

RayTracing

public RayTracing()
Method Detail

assertScene

protected boolean assertScene()
Asserts the RayCasting.scene accelerator and does first-time algorithm setup.

Overrides:
assertScene in class RayCasting
Returns:
true if failed.

shade

protected long shade(int level,
                     double importance,
                     double[] p0,
                     double[] p1,
                     double[] color)
Recursive shading function - computes color contribution of the given ray (shot from the origin p0 into direction vector p1). Recursion is stopped by a hybrid method: importance and level are checked.

Parameters:
level - Actual recursion depth.
importance - Importance of the actual ray.
p0 - Ray origin.
p1 - Direction vector of the ray.
color - Pre-allocated array to hold result color vector (double[1] for monochrome images, double[3] for RGB images, larger arrays can be used for more complex spectral sampling).
Returns:
Hash-value (ray sub-signature) used for adaptive subsampling.
See Also:
minImportance, maxLevel, RayCasting.scene, RayCasting.inter

getSample

public long getSample(double x,
                      double y,
                      int order,
                      int total,
                      double[] color)
Computes one image sample. Passes parameters for hidden sampling.

Specified by:
getSample in interface ImageFunction
Overrides:
getSample in class RayCasting
Parameters:
x - X coordinate of the sample.
y - Y coordinate of the sample.
order - Order of this sample inside the actual pixel.
total - Total number of samples in the actual pixel.
color - Pre-allocated array to hold result color vector (double[1] for monochrome images, double[3] for RGB images, larger arrays can be used for more complex spectral sampling).
Returns:
Hash-value (sample signature) used for adaptive subsampling.
See Also:
DefaultImageFunction.getSample(double,double,double[]), DefaultImageFunction.getBounds(double[])

set

public void set(java.lang.String key,
                java.lang.Object value)
Sets the given property.

Specified by:
set in interface Property
Overrides:
set in class RayCasting
Parameters:
key - Key string.
value - The new value.
See Also:
Property.commit()

get

public java.lang.Object get(java.lang.String key)
Gets the given property.

Specified by:
get in interface Property
Overrides:
get in class RayCasting
Parameters:
key - Key string.
Returns:
The actual value or null.

setTemplate

public static int setTemplate(Template t,
                              int ord)
General-purpose registration routine. Sets all plugs, strings, etc. to the given Template.