Radiance query record data structure used by SamplingIntegrator. More...
#include <mitsuba/render/integrator.h>
Public Types | |
enum | ERadianceQuery { EEmittedRadiance = 0x0001, ESubsurfaceRadiance = 0x0002, EDirectSurfaceRadiance = 0x0004, EIndirectSurfaceRadiance = 0x0008, ECausticRadiance = 0x0010, EDirectMediumRadiance = 0x0020, EIndirectMediumRadiance = 0x0040, EDistance = 0x0080, EOpacity = 0x0100, EIntersection = 0x0200, EVolumeRadiance = EDirectMediumRadiance | EIndirectMediumRadiance, ERadianceNoEmission, ERadiance = ERadianceNoEmission | EEmittedRadiance, ESensorRay = ERadiance | EOpacity } |
List of suported query types. These can be combined by a binary OR. More... | |
enum | EExtraFlags { ECacheQuery = 0x01, EAdaptiveQuery = 0x02 } |
Additional flags that can be specified in the extra field. More... | |
Public Member Functions | |
RadianceQueryRecord () | |
Construct an invalid radiance query record. More... | |
RadianceQueryRecord (const Scene *scene, Sampler *sampler) | |
Construct a radiance query record for the given scene and sampler. More... | |
RadianceQueryRecord (const RadianceQueryRecord &rRec) | |
Copy constructor. More... | |
void | newQuery (int _type, const Medium *_medium) |
Begin a new query of the given type. More... | |
void | recursiveQuery (const RadianceQueryRecord &parent, int _type) |
Initialize the query record for a recursive query. More... | |
void | recursiveQuery (const RadianceQueryRecord &parent) |
Initialize the query record for a recursive query. More... | |
bool | rayIntersect (const RayDifferential &ray) |
Search for a ray intersection. More... | |
Point2 | nextSample2D () |
Retrieve a 2D sample. More... | |
Float | nextSample1D () |
Retrieve a 1D sample. More... | |
std::string | toString () const |
Return a string representation. More... | |
Public Attributes | |
int | type |
Query type (*) More... | |
const Scene * | scene |
Pointer to the associated scene. More... | |
Sampler * | sampler |
Sample generator. More... | |
const Medium * | medium |
Pointer to the current medium (*) More... | |
int | depth |
Current depth value (# of light bounces) (*) More... | |
Intersection | its |
Surface interaction data structure (*) More... | |
Float | alpha |
Opacity value of the associated pixel (*) More... | |
Float | dist |
int | extra |
Radiance query record data structure used by SamplingIntegrator.
Additional flags that can be specified in the extra field.
Enumerator | |
---|---|
ECacheQuery |
This is a query by an irradiance cache. |
EAdaptiveQuery |
This is a query by an adaptive integrator. |
List of suported query types. These can be combined by a binary OR.
Enumerator | |
---|---|
EEmittedRadiance |
Emitted radiance from a luminaire intersected by the ray. |
ESubsurfaceRadiance |
Emitted radiance from a subsurface integrator */. |
EDirectSurfaceRadiance |
Direct (surface) radiance */. |
EIndirectSurfaceRadiance |
Indirect (surface) radiance, where the last bounce did not go through a Dirac delta BSDF. |
ECausticRadiance |
Indirect (surface) radiance, where the last bounce went through a Dirac delta BSDF. |
EDirectMediumRadiance |
In-scattered radiance due to volumetric scattering (direct) |
EIndirectMediumRadiance |
In-scattered radiance due to volumetric scattering (indirect) |
EDistance |
Distance to the next surface intersection. |
EOpacity |
Store an opacity value, which is equal to 1 when a shape was intersected and 0 when the ray passes through empty space. When there is a participating medium, it can also take on fractional values. |
EIntersection |
A ray intersection may need to be performed. This can be set to zero if the caller has already provided the intersection. |
EVolumeRadiance | |
ERadianceNoEmission |
Radiance query without emitted radiance, ray intersection required. |
ERadiance |
Default radiance query, ray intersection required. |
ESensorRay |
Radiance + opacity. |
|
inline |
Construct an invalid radiance query record.
Construct a radiance query record for the given scene and sampler.
|
inline |
Copy constructor.
|
inline |
Begin a new query of the given type.
|
inline |
Retrieve a 1D sample.
|
inline |
Retrieve a 2D sample.
|
inline |
Search for a ray intersection.
This function does several things at once: if the intersection has already been provided, it returns.
Otherwise, it
transmittance
.EAlpha
is set in type
)EDistance
is set in type
)EIntersection
flag in type
true
if there is a valid intersection.
|
inline |
Initialize the query record for a recursive query.
|
inline |
Initialize the query record for a recursive query.
std::string mitsuba::RadianceQueryRecord::toString | ( | ) | const |
Return a string representation.
Float mitsuba::RadianceQueryRecord::alpha |
Opacity value of the associated pixel (*)
int mitsuba::RadianceQueryRecord::depth |
Current depth value (# of light bounces) (*)
Float mitsuba::RadianceQueryRecord::dist |
Ray distance to the first surface interaction (if requested by the query type EDistance) (*)
int mitsuba::RadianceQueryRecord::extra |
Internal flag, which can be used to pass additional information amonst recursive calls inside an integrator. The use is dependent on the particular integrator implementation. (*)
Intersection mitsuba::RadianceQueryRecord::its |
Surface interaction data structure (*)
const Medium* mitsuba::RadianceQueryRecord::medium |
Pointer to the current medium (*)
Sampler* mitsuba::RadianceQueryRecord::sampler |
Sample generator.
const Scene* mitsuba::RadianceQueryRecord::scene |
Pointer to the associated scene.
int mitsuba::RadianceQueryRecord::type |
Query type (*)