|
||||||||||
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.DefaultImageFunction
cz.cuni.jagrlib.testing.DefaultRenderer
public abstract class DefaultRenderer
Default renderer of CSG scenes.
Nested Class Summary | |
---|---|
protected static class |
DefaultRenderer.Reflections
Supported reflections. |
protected static class |
DefaultRenderer.Sampling
Sampling in direct illumination computation. |
Field Summary | |
---|---|
protected int |
actOrder
Actual sample order. |
protected int |
actTotal
Actual cardinality of sample set. |
protected RayGenerator |
camera
Accelerator: camera object. |
protected int |
dataMask
Mask used in MicroFacet.assertAttributes(int) . |
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. |
protected boolean |
isInit
Was the renderer initialized? |
protected int |
numShadowRays
Number of shadow rays. |
protected boolean |
occlusion
Is it aplied occlusion? |
protected DefaultRenderer.Reflections |
reflections
Actual used reflections. |
protected RandomJames |
rnd
Random number generator. |
protected DefaultRenderer.Sampling |
sampling
Actual way of computation of direct illumination. |
protected RTScene |
scene
Accelerator: actual Ray-tracing scene (everything but intersections). |
protected boolean |
useTextures
True if indirect illumination should be used. |
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, reg, 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 |
Constructor Summary | |
---|---|
DefaultRenderer()
|
Method Summary | |
---|---|
protected boolean |
assertScene()
Asserts the scene accelerator and
does first-time algorithm setup. |
protected void |
directIllumination(MicroFacet mf,
double[] out,
double[] color)
Compute accure direct illumination. |
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 boolean |
init()
Prepare scene for rendering. |
protected void |
sampleBSDF(MicroFacet mf,
LightSource light,
double u,
double v,
double[] out,
double[] Ld)
Sample BSDF with multiple importance sampling. |
protected void |
sampleLightSource(MicroFacet mf,
LightSource light,
double u,
double v,
double[] out,
double[] Ld)
Sample light source with multiple importance sampling. |
void |
setBounds(double Xmin,
double Xmax,
double Ymin,
double Ymax)
Sets bounds (scaling factors) for the image function (e.g. projection-plane mapping). |
void |
setTime(double time)
Sets the actual time value for the object (used in animations). |
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 ). |
protected void |
specular(int level,
MicroFacet mf,
double[] out,
double[] L)
Handle specular reflection which is specific so it's not handled sample BSDF like the other types of reflection (diffuse and glossy). |
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, setTemplate, setTemplateDynamic, stop |
Methods inherited from class cz.cuni.jagrlib.DefaultProperty |
---|
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, get, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, 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, get, set |
Field Detail |
---|
protected double xA
protected double xK
protected double yA
protected double yK
protected static final long HASH_LIGHT
protected static final long HASH_TEXTURE
protected DefaultRenderer.Sampling sampling
protected DefaultRenderer.Reflections reflections
protected RTScene scene
protected Intersectable inter
protected RayGenerator camera
protected int numShadowRays
protected int actOrder
protected int actTotal
protected boolean occlusion
protected boolean useTextures
True
if indirect illumination should be used.
protected boolean isInit
protected int dataMask
MicroFacet.assertAttributes(int)
.
protected final RandomJames rnd
Constructor Detail |
---|
public DefaultRenderer()
Method Detail |
---|
protected boolean assertScene()
scene
accelerator and
does first-time algorithm setup.
true
if failed.protected boolean init()
public double[] getTimeInterval(double[] pre)
getTimeInterval
in interface TimeDependent
getTimeInterval
in class DefaultImageFunction
pre
- Pre-allocated double[2]
array to hold the result (can be
null
).
result[0]
.. minimum time value, result[1]
.. maximum
time value.getTime()
,
setTime(double)
public double getTime()
getTime
in interface TimeDependent
getTime
in class DefaultImageFunction
setTime(double)
public void setTime(double time)
setTime
in interface TimeDependent
setTime
in class DefaultImageFunction
time
- New scene time (in seconds).getTime()
,
getTimeInterval(double[])
public void setBounds(double Xmin, double Xmax, double Ymin, double Ymax)
setBounds
in interface ImageFunction
setBounds
in class DefaultImageFunction
Xmin
- Minimum X coordinate.Xmax
- Maximum X coordinate.Ymin
- Minimum Y coordinate.Ymax
- Maximum Y coordinate.DefaultImageFunction.getBounds(double[])
public long getSample(double x, double y, int order, int total, double[] color)
getSample
in interface ImageFunction
getSample
in class DefaultImageFunction
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).
DefaultImageFunction.getSample(double,double,double[])
,
DefaultImageFunction.getBounds(double[])
protected long shade(int level, double importance, double[] p0, double[] p1, double[] color)
p0
into direction vector p1
). Recursion is stopped
by a hybrid method: importance
and level
are checked.
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).
#minImportance
,
#maxLevel
,
scene
,
inter
protected void directIllumination(MicroFacet mf, double[] out, double[] color)
mf
- The MicroFacet
(point on surface of some solid).out
- Outcoming direction.color
- Pre-allocated double[C] array to hold result - light intensity
coming from the source to the given point (C can be either 1
/for monochrome computing/, 3 /for RGB color system/ or greater /for more
complex spectral color sampling/).protected void sampleLightSource(MicroFacet mf, LightSource light, double u, double v, double[] out, double[] Ld)
mf
- The MicroFacet
(point on surface of some solid).light
- Sampled light source.u
- Uniform random number (for light sampling).v
- Uniform random number (for light sampling).out
- Outcoming direction of light.Ld
- Pre-allocated double[C] array to hold result - light intensity
coming from the source to the given point (C can be either 1
/for monochrome computing/, 3 /for RGB color system/ or greater /for more
complex spectral color sampling/).protected void sampleBSDF(MicroFacet mf, LightSource light, double u, double v, double[] out, double[] Ld)
mf
- The MicroFacet
(point on surface of some solid).light
- Sampled light source.u1
- Uniform random number (for light sampling).v1
- Uniform random number (for light sampling).u2
- Uniform random number (for BRDF sampling).v2
- Uniform random number (for BRDF sampling).out
- Outcoming direction.Ld
- Pre-allocated double[C] array to hold result - light intensity
coming from the source to the given point (C can be either 1
/for monochrome computing/, 3 /for RGB color system/ or greater /for more
complex spectral color sampling/).protected void specular(int level, MicroFacet mf, double[] out, double[] L)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |