cz.cuni.jagrlib.piece
Class RayCasting

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
All Implemented Interfaces:
Breakable, ImageFunction, Property, TimeDependent, Template
Direct Known Subclasses:
RayTracing

public class RayCasting
extends DefaultImageFunction

Ray casting of CSG scenes.

Since:
0.12
See Also:
RayCasting.java

Field Summary
protected  RayGenerator camera
          Accelerator: camera object.
protected static java.lang.String CATEGORY
          Object category.
protected  int dataMask
          Mask used in MicroFacet.assertAttributes(int).
protected  boolean doShading
          Compute shading (using the defined BSSRDF).
protected  boolean doShadows
          Compute shadows (if false all light sources will be considered visible).
protected  boolean doTextures
          Take textures into account.
protected static long HASH_LIGHT
          Hash-multiplier for number of light sources.
protected static long HASH_TEXTURE
          Hash-multiplier for textures.
protected  Intersectable inter
          Accelerator: object used for intersections.
static RegPiece reg
          Static registration instance for this class.
protected  RTScene scene
          Accelerator: actual Ray-tracing scene (everything but intersections).
static java.lang.String SHADING
           
static java.lang.String SHADOWS
           
protected static java.lang.String TEMPLATE_NAME
          Object template identifier.
static java.lang.String TEXTURES
           
protected  double xA
          Projection-plane linear transform - horizontal additive term.
protected  double xK
          Projection-plane linear transform - horizontal multiplicator.
protected  double yA
          Projection-plane linear transform - vertical additive term.
protected  double yK
          Projection-plane linear transform - vertical multiplicator.
 
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
RayCasting()
           
 
Method Summary
protected  boolean assertScene()
          Asserts the 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.
 double getTime()
          Returns the actual time value for the object (used in animations).
 double[] getTimeInterval(double[] pre)
          Retrieve the valid bounds for time variable.
protected  long hashLights(LightSource[] lights)
           
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
 void setBounds(double Xmin, double Xmax, double Ymin, double Ymax)
          Sets bounds (scaling factors) for the image function (e.g. projection-plane mapping).
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 void setTime(double time)
          Sets the actual time value for the object (used in animations).
 
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

xA

protected double xA
Projection-plane linear transform - horizontal additive term.


xK

protected double xK
Projection-plane linear transform - horizontal multiplicator.


yA

protected double yA
Projection-plane linear transform - vertical additive term.


yK

protected double yK
Projection-plane linear transform - vertical multiplicator.


scene

protected RTScene scene
Accelerator: actual Ray-tracing scene (everything but intersections).


inter

protected Intersectable inter
Accelerator: object used for intersections.


camera

protected RayGenerator camera
Accelerator: camera object.


HASH_LIGHT

protected static final long HASH_LIGHT
Hash-multiplier for number of light sources.

See Also:
Constant Field Values

HASH_TEXTURE

protected static final long HASH_TEXTURE
Hash-multiplier for textures.

See Also:
Constant Field Values

doShading

protected boolean doShading
Compute shading (using the defined BSSRDF).


doShadows

protected boolean doShadows
Compute shadows (if false all light sources will be considered visible).


doTextures

protected boolean doTextures
Take textures into account.


dataMask

protected int dataMask
Mask used in MicroFacet.assertAttributes(int).


SHADING

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

SHADOWS

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

TEXTURES

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

TEMPLATE_NAME

protected static final java.lang.String TEMPLATE_NAME
Object template identifier.

See Also:
Constant Field Values

CATEGORY

protected static final java.lang.String CATEGORY
Object category.

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

RayCasting

public RayCasting()
Method Detail

hashLights

protected long hashLights(LightSource[] lights)

assertScene

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

Returns:
true if failed.

getTimeInterval

public double[] getTimeInterval(double[] pre)
Retrieve the valid bounds for time variable.

Specified by:
getTimeInterval in interface TimeDependent
Overrides:
getTimeInterval in class DefaultImageFunction
Parameters:
pre - Pre-allocated double[2] array to hold the result (can be null).
Returns:
result[0] .. minimum time value, result[1] .. maximum time value.
See Also:
getTime(), setTime(double)

getTime

public double getTime()
Returns the actual time value for the object (used in animations).

Specified by:
getTime in interface TimeDependent
Overrides:
getTime in class DefaultImageFunction
Returns:
Actual time (in seconds).
See Also:
setTime(double)

setTime

public void setTime(double time)
Sets the actual time value for the object (used in animations).

Specified by:
setTime in interface TimeDependent
Overrides:
setTime in class DefaultImageFunction
Parameters:
time - New scene time (in seconds).
See Also:
getTime(), getTimeInterval(double[])

setBounds

public void setBounds(double Xmin,
                      double Xmax,
                      double Ymin,
                      double Ymax)
Sets bounds (scaling factors) for the image function (e.g. projection-plane mapping).

Specified by:
setBounds in interface ImageFunction
Overrides:
setBounds in class DefaultImageFunction
Parameters:
Xmin - Minimum X coordinate.
Xmax - Maximum X coordinate.
Ymin - Minimum Y coordinate.
Ymax - Maximum Y coordinate.
See Also:
DefaultImageFunction.getBounds(double[])

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 DefaultImageFunction
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 DefaultProperty
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 DefaultProperty
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.