cz.cuni.jagrlib.testing
Class CookTorranceModel

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.CookTorranceModel
All Implemented Interfaces:
Breakable, BSSRDF, Property, Template

public class CookTorranceModel
extends LambertianModel

Cook-Torrance shading model.

See Also:
CookTorranceModel.java

Field Summary
static java.lang.String COLOR_D
           
static java.lang.String COLOR_S
           
 double[] colorD
          Actual color of the solid surface.
 double[] colorS
          Actual color of the solid surface.
 MicrofacetDistribution distribution
          Microfacet distribution of some material (represents one lobe).
static java.lang.String DISTRIBUTION
           
 Fresnel fresnel
          Fresnel term.
static java.lang.String FRESNEL
           
static RegPiece reg
          Static registration instance for this class.
protected  RandomJames rnd
           
 
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
CookTorranceModel()
          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).
protected  double G(double[] in, double[] out, double[] half)
          Computes geometric term, which models self-shadowing effects.
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 double[] getOrigColor(double[] color)
          Retrieves the original color (defining surface color).
 double monoBSSRDF(boolean worldCoords, double[] in, double[] out, double[] normal, double[] tangent, int mask)
          Returns the requested BSSRDF 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.
 void setColor(double[] color)
          Sets the actual color (for the given BSSRDF data).
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, localToWorld, monoBSSRDF, 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

colorD

public double[] colorD
Actual color of the solid surface.


colorS

public double[] colorS
Actual color of the solid surface.


fresnel

public Fresnel fresnel
Fresnel term.


distribution

public MicrofacetDistribution distribution
Microfacet distribution of some material (represents one lobe).


rnd

protected RandomJames rnd

COLOR_D

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

COLOR_S

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

FRESNEL

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

DISTRIBUTION

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

CookTorranceModel

public CookTorranceModel()
Default constructor.

Method Detail

monoBSSRDF

public double monoBSSRDF(boolean worldCoords,
                         double[] in,
                         double[] out,
                         double[] normal,
                         double[] tangent,
                         int mask)
Returns the requested BSSRDF 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[])

getOrigColor

public double[] getOrigColor(double[] color)
Retrieves the original color (defining surface color).

Specified by:
getOrigColor in interface BSSRDF
Overrides:
getOrigColor in class LambertianModel
Parameters:
color - Pre-allocated double[C] array to hold the color (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:
Array containing copy of original color (can be altered).

setColor

public void setColor(double[] color)
Sets the actual color (for the given BSSRDF data). This color will be used in subsequent BSSRDF calculations. The color array won't be altered.

Specified by:
setColor in interface BSSRDF
Overrides:
setColor in class LambertianModel
Parameters:
color - 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/).

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:
in - Input direction.
normal - Normal at the point of intersection.
out - Output direction.

type

public int type()
Returns the type of BRDF.

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

G

protected double G(double[] in,
                   double[] out,
                   double[] half)
Computes geometric term, which models self-shadowing effects.

Parameters:
in - Input direction in local coordinates.
out - Output direction in local coordinates.
half - Half vector.

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.