|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcz.cuni.jagrlib.DefaultProperty
cz.cuni.jagrlib.Piece
cz.cuni.jagrlib.testing.LambertianModel
cz.cuni.jagrlib.piece.PhongModel
public class PhongModel
Phong shading model (with constant or Schlick K() term).
Field Summary | |
---|---|
protected static java.lang.String |
CATEGORY
Object category. |
double |
cosTotal
Limit cos-value for total reflection. |
int |
h
Specular reflection exponent. |
double |
ka
Ambient-light coefficient. |
double |
kd
Diffuse reflection coefficient. |
double |
ks
Specular reflection coefficient. |
double |
kt
Transmission (refraction) coefficient. |
double |
n
Relative index of refraction. |
double[] |
origColor
Original color of the solid surface. |
static RegPiece |
reg
Static registration instance for this class. |
double |
sch
Schlick blending coefficient ( 0.0 .. non-Schlick, 1.0 .. |
protected static java.lang.String |
TEMPLATE_NAME
Object template identifier. |
Fields inherited from class cz.cuni.jagrlib.testing.LambertianModel |
---|
color, REFLECTIONS |
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 |
Constructor Summary | |
---|---|
PhongModel()
Default constructor. |
Method Summary | |
---|---|
protected double[] |
color(double[] in,
double[] out,
double[] normal,
int mask,
double[] result)
Common computation for color BRDF sample (BRDF is treated as band-color). |
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). |
double[] |
colorBSSRDF(boolean worldCoords,
MicroFacet mf,
double[] in,
double[] out,
int mask,
double[] result)
Returns the requested BRDF sample (BRDF is treated as band-color). |
java.lang.Object |
get(java.lang.String key)
Gets the given property. |
double[] |
getOrigColor(double[] color)
Retrieves the original color (defining surface color). |
double[] |
lightSum(MicroFacet mf,
int order,
int total,
LightSource[] lights,
double[] out,
double[] result)
Accumulates light contributions from set of light sources through the given MicroFacet (point on surface of some solid) to the viewing direction. |
protected double |
mono(double[] in,
double[] out,
double[] normal,
int mask)
Common computation for monochrome BRDF sample (BRDF is treated as monochrome). |
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 |
monoBSSRDF(boolean worldCoords,
MicroFacet mf,
double[] in,
double[] out,
int mask)
Returns the requested BRDF sample (BRDF is treated as monochrome). |
double |
pdf(boolean worldCoords,
MicroFacet mf,
double[] in,
double[] out)
Return 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 BRDF 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 |
---|
localToWorld, 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 |
---|
public double[] origColor
public double ka
public double kd
public double ks
public int h
public double kt
public double n
public double cosTotal
public double sch
0.0
.. non-Schlick, 1.0
.. Schlick).
protected static final java.lang.String TEMPLATE_NAME
protected static final java.lang.String CATEGORY
public static final RegPiece reg
Constructor Detail |
---|
public PhongModel()
Method Detail |
---|
protected double mono(double[] in, double[] out, double[] normal, int mask)
in
- Input ray direction (double[3]
or double[4]
).out
- Output (viewing) ray direction (double[3]
or
double[4]
).d
- BRDF parameters.mask
- Which light components are to be computed?
f(in->out)
.protected double[] color(double[] in, double[] out, double[] normal, int mask, double[] result)
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.d
- BRDF parameters.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
.
public double monoBSSRDF(boolean worldCoords, double[] in, double[] out, double[] normal, double[] tangent, int mask)
monoBSSRDF
in interface BSSRDF
monoBSSRDF
in class LambertianModel
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?
#monoBSSRDF(MicroFacet,double[],double[],int)
,
#colorBSSRDF(double[],double[],double[],int,double[])
public double monoBSSRDF(boolean worldCoords, MicroFacet mf, double[] in, double[] out, int mask)
MicroFacet
(point on surface of some solid).
monoBSSRDF
in interface BSSRDF
monoBSSRDF
in class LambertianModel
mf
- The MicroFacet
(point on surface of some solid).in
- Input ray direction (double[3]
or double[4]
).out
- Output (viewing) ray direction (double[3]
or
double[4]
).mask
- Which light components are to be computed?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.
#monoBRDF(double[],double[],double[],Property,int)
,
#colorBRDF(MicroFacet,double[],double[],int,double[])
,
MicroFacet#material
public double[] colorBSSRDF(boolean worldCoords, double[] in, double[] out, double[] normal, double[] tangent, int mask, double[] result)
colorBSSRDF
in interface BSSRDF
colorBSSRDF
in class LambertianModel
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
.
#monoBSSRDF(double[],double[],double[],int)
,
#colorBSSRDF(MicroFacet,double[],double[],int,double[])
public double[] colorBSSRDF(boolean worldCoords, MicroFacet mf, double[] in, double[] out, int mask, double[] result)
MicroFacet
(point on surface of some solid).
colorBSSRDF
in interface BSSRDF
colorBSSRDF
in class LambertianModel
mf
- The MicroFacet
(point on surface of some solid).in
- Input ray direction (double[3]
or double[4]
).out
- Output (viewing) ray direction (double[3]
or
double[4]
).mask
- Which light components are to be computed?result
- Pre-allocated double[C]
array to hold BRDF coefficients
f(in->mf->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
.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.
#monoBRDF(MicroFacet,double[],double[],int)
,
#colorBRDF(double[],double[],double[],Property,int,double[])
,
MicroFacet#material
public double[] lightSum(MicroFacet mf, int order, int total, LightSource[] lights, double[] out, double[] result)
MicroFacet
(point on surface of some solid) to the viewing direction.
mf
- The MicroFacet
(point on surface of some solid).order
- Order of this sample inside the actual pixel.total
- Total number of samples in the actual pixel.lights
- Set of light sources that can light the point.out
- Output (viewing) ray direction (double[3]
or
double[4]
).result
- Pre-allocated double[C]
array to hold BRDF coefficients
f(in->mf->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
, otherwise the
initial value will be preseved.
#colorBRDF(MicroFacet,double[],double[],int,double[])
,
MicroFacet#material
public double[] getOrigColor(double[] color)
getOrigColor
in interface BSSRDF
getOrigColor
in class LambertianModel
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
.data
- Data object with BRDF state information (optional).
public void setColor(double[] color)
setColor
in interface BSSRDF
setColor
in class LambertianModel
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/).data
- Data object with BRDF state information.public double scatter(MicroFacet mf, double[] in, double u, double v, int mask, double[] out, double[] brdf)
scatter
in interface BSSRDF
scatter
in class LambertianModel
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/).
public double pdf(boolean worldCoords, MicroFacet mf, double[] in, double[] out)
pdf
in interface BSSRDF
pdf
in class LambertianModel
in
- Input direction.out
- Output direction.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.mf
- The MicroFacet
(point on surface of some solid).public int type()
type
in interface BSSRDF
type
in class LambertianModel
public void set(java.lang.String key, java.lang.Object value)
set
in interface Property
set
in class LambertianModel
key
- Key string.value
- The new value.Property.commit()
public java.lang.Object get(java.lang.String key)
get
in interface Property
get
in class LambertianModel
key
- Key string.
null
.public static int setTemplate(Template t, int ord)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |