cz.cuni.jagrlib.testing
Class SpecularReflection

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.testing.LambertianModel
              extended by cz.cuni.jagrlib.testing.SpecularReflection
All Implemented Interfaces:
Breakable, BSSRDF, Property, Template

public class SpecularReflection
extends LambertianModel

Represents perfect specular reflection.

See Also:
SpecularReflection.java

Field Summary
 Fresnel fresnel
          Fresnel term.
static java.lang.String FRESNEL
           
static RegPiece reg
          Static registration instance for this class.
 
Fields inherited from class cz.cuni.jagrlib.testing.LambertianModel
CATEGORY, color, REFLECTIONS, TEMPLATE_NAME
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.BSSRDF
COMP_ALL, COMP_DIFFUSE, COMP_GLOSSY, COMP_SPEC_REFLECTION, COMP_SPEC_REFRACTION, COMP_SPECULAR, MATERIAL_COLOR, MATERIAL_H, MATERIAL_KA, MATERIAL_KD, MATERIAL_KS, MATERIAL_KT, MATERIAL_N
 
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
SpecularReflection()
          Default constructor.
 
Method Summary
 double[] colorBSSRDF(boolean worldCoords, double[] in, double[] out, double[] normal, double[] tangent, int mask, double[] result)
          Returns the requested BSSRDF sample (BSSRDF is treated as band-color).
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 double monoBSSRDF(boolean worldCoords, double[] in, double[] out, double[] normal, double[] tangent, int mask)
          Returns the requested BRSSDF sample (BSSRDF is treated as monochrome).
 double pdf(boolean worldCoords, MicroFacet mf, double[] in, double[] out)
          Returns the probability density function.
 double scatter(MicroFacet mf, double[] in, double u, double v, int mask, double[] out, double[] brdf)
          Scatter ray according to the light model.
 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.
 int type()
          Returns the type of BRDF.
 
Methods inherited from class cz.cuni.jagrlib.testing.LambertianModel
colorBSSRDF, getOrigColor, localToWorld, monoBSSRDF, setColor, worldToLocal
 
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

fresnel

public Fresnel fresnel
Fresnel term.


FRESNEL

public static final java.lang.String FRESNEL
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

SpecularReflection

public SpecularReflection()
Default constructor.

Method Detail

monoBSSRDF

public double monoBSSRDF(boolean worldCoords,
                         double[] in,
                         double[] out,
                         double[] normal,
                         double[] tangent,
                         int mask)
Returns the requested BRSSDF sample (BSSRDF is treated as monochrome).

Specified by:
monoBSSRDF in interface BSSRDF
Overrides:
monoBSSRDF in class LambertianModel
Parameters:
worldCoords - Should be set to true if vectors in and out are in world coordinates and to false if vectors in and out are in local coordinates.
in - Input ray direction (double[3] or double[4]).
out - Output (viewing) ray direction (double[3] or double[4]).
normal - Normal vector of a surface.
tangent - Tangent vector of a surface.
mask - Which light components are to be computed?
Returns:
BSSRDF coefficient f(in->out).
See Also:
#monoBSSRDF(MicroFacet,double[],double[],int), #colorBSSRDF(double[],double[],double[],int,double[])

colorBSSRDF

public double[] colorBSSRDF(boolean worldCoords,
                            double[] in,
                            double[] out,
                            double[] normal,
                            double[] tangent,
                            int mask,
                            double[] result)
Returns the requested BSSRDF sample (BSSRDF is treated as band-color).

Specified by:
colorBSSRDF in interface BSSRDF
Overrides:
colorBSSRDF in class LambertianModel
Parameters:
worldCoords - Should be set to true if vectors in and out are in world coordinates and to false if vectors in and out are in local coordinates.
in - Input ray direction (double[3] or double[4]).
out - Output (viewing) ray direction (double[3] or double[4]).
normal - Normal vector of a surface.
tangent - Tangent vector of a surface.
mask - Which light components are to be computed?
result - Pre-allocated double[C] array to hold BRDF coefficients f(in->out) (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/). Can be null.
Returns:
Output BSSRDF spectral coefficients.
See Also:
#monoBSSRDF(double[],double[],double[],int), #colorBSSRDF(MicroFacet,double[],double[],int,double[])

scatter

public double scatter(MicroFacet mf,
                      double[] in,
                      double u,
                      double v,
                      int mask,
                      double[] out,
                      double[] brdf)
Scatter ray according to the light model.

Specified by:
scatter in interface BSSRDF
Overrides:
scatter in class LambertianModel
Parameters:
mf - The MicroFacet (point on surface of some solid).
in - Input direction (should look from the hit point)..
u - Random uniform number.
v - Random uniform number.
mask - Which light components are to be computed?
out - Output direction in world coordinates.
brdf - Color definition - double[C] array (C can be either 1 /for monochrome computing/, 3 /for RGB color system/ or greater /for more complex spectral color sampling/).
Returns:
Probability density function.

pdf

public double pdf(boolean worldCoords,
                  MicroFacet mf,
                  double[] in,
                  double[] out)
Returns the probability density function.

Specified by:
pdf in interface BSSRDF
Overrides:
pdf in class LambertianModel
Parameters:
worldCoords - Should be set to true if vectors in and out are in world coordinates and to false if vectors in and out are in local coordinates.
in - Input direction.
out - Output direction.
mf - The MicroFacet (point on surface of some solid).

type

public int type()
Returns the type of BRDF.

Specified by:
type in interface BSSRDF
Overrides:
type in class LambertianModel

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 LambertianModel
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 LambertianModel
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.