|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.sunflow.core.light.ImageBasedLight
public class ImageBasedLight
Constructor Summary | |
---|---|
ImageBasedLight()
|
Method Summary | |
---|---|
Instance |
createInstance()
Create an instance which represents the geometry of this light source. |
PrimitiveList |
getBakingPrimitives()
Create a new PrimitiveList object suitable for baking lightmaps. |
int |
getNumPrimitives()
Returns the number of individual primtives in this aggregate object. |
int |
getNumSamples()
Get the maximum number of samples that can be taken from this light source. |
void |
getPhoton(double randX1,
double randY1,
double randX2,
double randY2,
Point3 p,
Vector3 dir,
Color power)
Gets a photon to emit from this light source by setting each of the arguments. |
float |
getPower()
Get the total power emitted by this light source. |
float |
getPrimitiveBound(int primID,
int i)
Retrieve the bounding box component of a particular primitive in object space. |
Color |
getRadiance(ShadingState state)
Gets the radiance for a specified rendering state. |
void |
getSamples(ShadingState state)
Samples the light source to compute direct illumination. |
BoundingBox |
getWorldBounds(Matrix4 o2w)
Compute a bounding box of this object in world space, using the specified object-to-world transformation matrix. |
void |
intersectPrimitive(Ray r,
int primID,
IntersectionState state)
Intersect the specified primitive in local space. |
void |
prepareShadingState(ShadingState state)
Prepare the specified ShadingState by setting all of its internal
parameters. |
void |
scatterPhoton(ShadingState state,
Color power)
Scatter a photon with the specied power. |
boolean |
update(ParameterList pl,
SunflowAPI api)
Update this object given a list of parameters. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public ImageBasedLight()
Method Detail |
---|
public boolean update(ParameterList pl, SunflowAPI api)
RenderObject
update
in interface RenderObject
pl
- list of parameters to read fromapi
- reference to the current scene
true
if the update is succesfull,
false
otherwisepublic void prepareShadingState(ShadingState state)
PrimitiveList
ShadingState
by setting all of its internal
parameters.
prepareShadingState
in interface PrimitiveList
state
- shading state to fill inpublic void intersectPrimitive(Ray r, int primID, IntersectionState state)
PrimitiveList
intersectPrimitive
in interface PrimitiveList
r
- ray in the object's local spaceprimID
- primitive index to intersectstate
- intersection stateRay.setMax(float)
,
IntersectionState.setIntersection(int, float, float)
public int getNumPrimitives()
PrimitiveList
getNumPrimitives
in interface PrimitiveList
public float getPrimitiveBound(int primID, int i)
PrimitiveList
getPrimitiveBound
in interface PrimitiveList
primID
- primitive indexi
- bounding box side index
public BoundingBox getWorldBounds(Matrix4 o2w)
PrimitiveList
Matrix4.transform(BoundingBox)
. If the matrix is
null
no transformation is needed, and object space is
equivalent to world space.
getWorldBounds
in interface PrimitiveList
o2w
- object to world transformation matrix
public PrimitiveList getBakingPrimitives()
PrimitiveList
PrimitiveList
object suitable for baking lightmaps.
This means a set of primitives laid out in the unit square UV space. This
method is optional, objects which do not support it should simply return
null
.
getBakingPrimitives
in interface PrimitiveList
public int getNumSamples()
LightSource
getNumSamples
in interface LightSource
public void getSamples(ShadingState state)
LightSource
LightSample
class and added to the
current ShadingState
. This method is responsible for the
shooting of shadow rays which allows for non-physical lights that don't
cast shadows. It is recommended that only a single shadow ray be shot if
ShadingState.getDiffuseDepth()
is greater than 0. This avoids an
exponential number of shadow rays from being traced.
getSamples
in interface LightSource
state
- current state, including point to be shadedLightSample
public void getPhoton(double randX1, double randY1, double randX2, double randY2, Point3 p, Vector3 dir, Color power)
LightSource
getPhoton
in interface LightSource
randX1
- sampling parameterrandY1
- sampling parameterrandX2
- sampling parameterrandY2
- sampling parameterp
- position to shoot the photon fromdir
- direction to shoot the photon inpower
- power of the photonpublic Color getRadiance(ShadingState state)
Shader
getRadiance
in interface Shader
state
- current render state
public void scatterPhoton(ShadingState state, Color power)
Shader
scatterPhoton
in interface Shader
state
- current statepower
- power of the incoming photon.public float getPower()
LightSource
getPower
in interface LightSource
public Instance createInstance()
LightSource
null
to
indicate that no geometry needs to be created.
createInstance
in interface LightSource
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |