Classes | |
struct | mitsuba::AABB |
Axis-aligned bounding box data structure in three dimensions. More... | |
class | mitsuba::Appender |
This class defines an abstract destination for logging-relevant information. More... | |
class | mitsuba::StreamAppender |
Appender implementation, which writes to an arbitrary C++ output stream More... | |
class | mitsuba::Bitmap |
General-purpose bitmap class with read and write support for several common file formats. More... | |
struct | mitsuba::BSphere |
Bounding sphere data structure in three dimensions. More... | |
class | mitsuba::ConfigurableObject |
Generic serializable object, which supports construction from a Properties instance. More... | |
class | mitsuba::ConsoleStream |
Stream-style interface to the default stdin/stdout console streams. More... | |
class | mitsuba::Formatter |
Abstract interface for converting log information into a human-readable format. More... | |
class | mitsuba::DefaultFormatter |
The default formatter used to turn log messages into a human-readable form. More... | |
struct | mitsuba::Frame |
Stores a three-dimensional orthonormal coordinate frame. More... | |
class | mitsuba::FileResolver |
File resolution helper. More... | |
class | mitsuba::FileStream |
Simple Stream implementation for accessing files. More... | |
class | mitsuba::Logger |
Responsible for processing log messages. More... | |
struct | mitsuba::Matrix4x4 |
Basic 4x4 matrix data type. More... | |
class | mitsuba::MemoryStream |
Simple memory buffer-based stream with automatic memory management. More... | |
struct | mitsuba::Normal |
Three-dimensional normal data structure. More... | |
class | Object |
Parent of all Mitsuba classes. More... | |
class | mitsuba::PluginManager |
The plugin manager is responsible for resolving and loading external plugins. More... | |
class | mitsuba::Properties |
Associative parameter map for constructing subclasses of ConfigurableObject. More... | |
class | mitsuba::GaussLobattoIntegrator |
Computes the integral of a one-dimensional function using adaptive Gauss-Lobatto quadrature. More... | |
class | mitsuba::Random |
Random number generator based on SIMD-oriented Fast Mersenne Twister More... | |
struct | mitsuba::TRay< _PointType, _VectorType > |
Simple n-dimensional ray data structure with minimum / maximum extent information. More... | |
class | mitsuba::ReconstructionFilter |
Generic interface to separable image reconstruction filters. More... | |
class | mitsuba::WorkUnit |
Abstract work unit – represents a small amount of information that encodes part of a larger processing task. More... | |
class | mitsuba::WorkResult |
Abstract work result – represents the result of a processed WorkUnit instance. More... | |
class | mitsuba::WorkProcessor |
Abstract work processor – takes work units and turns them into WorkResult instances. More... | |
class | mitsuba::ParallelProcess |
Abstract parallelizable task. More... | |
class | mitsuba::Scheduler |
Centralized task scheduler implementation. More... | |
class | mitsuba::Worker |
Base class of all worker implementations. More... | |
class | mitsuba::LocalWorker |
Acquires work from the scheduler and executes it locally. More... | |
class | mitsuba::RemoteWorker |
Acquires work from the scheduler and forwards it to a processing node reachable through a Stream. More... | |
class | mitsuba::SerializableObject |
Base class of all reference-counted objects with serialization support. More... | |
class | mitsuba::InstanceManager |
Coordinates the serialization and unserialization of object graphs. More... | |
struct | mitsuba::SHRotation |
Stores the diagonal blocks of a spherical harmonic rotation matrix. More... | |
struct | mitsuba::SHVector |
Stores a truncated real spherical harmonics representation of an L2-integrable function. More... | |
class | mitsuba::SHSampler |
Implementation of 'Importance Sampling Spherical Harmonics' by W. Jarsz, N. Carr and H. W. Jensen (EUROGRAPHICS 2009) More... | |
class | mitsuba::ContinuousSpectrum |
Abstract continous spectral power distribution data type, which supports evaluation at arbitrary wavelengths. More... | |
class | mitsuba::InterpolatedSpectrum |
Linearly interpolated spectral power distribution. More... | |
struct | mitsuba::Color3 |
RGB color data type. More... | |
struct | mitsuba::Spectrum |
Discrete spectral power distribution based on a number of wavelength bins over the 360-830 nm range. More... | |
class | mitsuba::SSHStream |
Stream implementation based on an encrypted SSH tunnel. More... | |
class | mitsuba::SocketStream |
Portable Stream implementation, which encapsulates a socket for IPv4/IPv6 network communications. More... | |
class | mitsuba::Statistics |
Collects various rendering statistics and presents them in a human-readable form. More... | |
class | mitsuba::Stream |
Abstract seekable stream class. More... | |
class | mitsuba::Thread |
Cross-platform thread implementation. More... | |
struct | mitsuba::Transform |
Encapsulates a 4x4 linear transformation and its inverse. More... | |
struct | mitsuba::BSDFSamplingRecord |
This data structured contains all information that is required to sample or query a BSDF. More... | |
class | mitsuba::BSDF |
Abstract BSDF base-class. More... | |
class | mitsuba::Noise |
Contains a few useful noise functions. More... | |
class | mitsuba::RenderJob |
Coordinates the process of rendering a single image. More... | |
class | mitsuba::Sampler |
Base class of all sample generators. More... | |
class | mitsuba::Scene |
Principal scene data structure. More... | |
class | mitsuba::SceneHandler |
XML parser for Mitsuba scene files. To be used with the SAX interface of Xerces-C++. More... | |
struct | mitsuba::Intersection |
Container for all information related to a surface intersection. More... | |
class | mitsuba::Shape |
Abstract base class of all shapes. More... | |
struct | mitsuba::TangentSpace |
Simple tangent space storage for surfaces. More... | |
class | mitsuba::TriMesh |
Abstract triangle mesh base class. More... | |
Typedefs | |
typedef TVector2< Float > | Vector2 |
typedef TVector2< int > | Vector2i |
typedef TVector3< Float > | Vector |
typedef TVector3< Float > | Vector3 |
typedef TVector3< int > | Vector3i |
typedef TVector4< Float > | Vector4 |
typedef TPoint2< Float > | Point2 |
typedef TPoint2< int > | Point2i |
typedef TPoint3< Float > | Point |
typedef TPoint3< Float > | Point3 |
typedef TPoint3< int > | Point3i |
typedef TQuaternion< Float > | Quaternion |
typedef TRay< Point, Vector > | Ray |
Elementary Quasi-Monte Carlo number sequences | |
const int | mitsuba::primeTable [primeTableSize] |
Table of the first 1024 prime numbers. More... | |
float | mitsuba::radicalInverse2Single (uint32_t n, uint32_t scramble=0U) |
Van der Corput radical inverse in base 2 with single precision. More... | |
double | mitsuba::radicalInverse2Double (uint64_t n, uint64_t scramble=0ULL) |
Van der Corput radical inverse in base 2 with double precision. More... | |
float | mitsuba::sobol2Single (uint32_t n, uint32_t scramble=0U) |
Sobol' radical inverse in base 2 with single precision. More... | |
double | mitsuba::sobol2Double (uint64_t n, uint64_t scramble=0ULL) |
Sobol' radical inverse in base 2 with double precision. More... | |
Point2f | mitsuba::sample02Single (uint32_t n, uint32_t scramble[2]) |
Generate an element from a (0, 2) sequence, single precision. More... | |
Point2d | mitsuba::sample02Double (uint64_t n, uint64_t scramble[2]) |
Generate an element from a (0, 2) sequence, double precision version. More... | |
Point2 | mitsuba::sample02 (size_t n) |
Generate an element from a (0, 2) sequence (without scrambling) More... | |
uint64_t | mitsuba::sampleTEA (uint32_t v0, uint32_t v1, int rounds=4) |
Generate fast and reasonably good pseudorandom numbers using the Tiny Encryption Algorithm (TEA) by David Wheeler and Roger Needham. More... | |
float | mitsuba::sampleTEASingle (uint32_t v0, uint32_t v1, int rounds=4) |
Generate fast and reasonably good pseudorandom numbers using the Tiny Encryption Algorithm (TEA) by David Wheeler and Roger Needham. More... | |
double | mitsuba::sampleTEADouble (uint32_t v0, uint32_t v1, int rounds=4) |
Generate fast and reasonably good pseudorandom numbers using the Tiny Encryption Algorithm (TEA) by David Wheeler and Roger Needham. More... | |
Float | mitsuba::sampleTEAFloat (uint32_t v0, uint32_t v1, int rounds=4) |
Alias to sampleTEASingle or sampleTEADouble based on compilation flags. More... | |
Float | mitsuba::radicalInverse (int base, uint64_t index) |
Calculate the radical inverse function. More... | |
Float | mitsuba::scrambledRadicalInverse (int base, uint64_t index, uint16_t *perm) |
Calculate a scrambled radical inverse function. More... | |
Float | mitsuba::radicalInverseIncremental (int base, Float x) |
Incrementally calculate the next Van Der Corput sequence value starting from a current entry x (wrt. a fixed base) More... | |
Float | mitsuba::radicalInverseFast (uint16_t baseIndex, uint64_t index) |
Calculate a radical inverse function (fast version) More... | |
Float | mitsuba::scrambledRadicalInverseFast (uint16_t baseIndex, uint64_t index, uint16_t *perm) |
Calculate a scrambled radical inverse function (fast version) More... | |
Warping and sampling-related utility functions | |
MTS_EXPORT_CORE void | coordinateSystem (const Vector &a, Vector &b, Vector &c) |
Complete the set {a} to an orthonormal base. More... | |
Fresnel reflectance computation and related things | |
MTS_EXPORT_CORE Float | fresnelDielectric (Float cosThetaI, Float cosThetaT, Float eta) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics. More... | |
MTS_EXPORT_CORE Float | fresnelDielectricExt (Float cosThetaI, Float &cosThetaT, Float eta) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics (extended version) More... | |
MTS_EXPORT_CORE Float | fresnelConductorApprox (Float cosThetaI, Float eta, Float k) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (approximate scalar version) More... | |
MTS_EXPORT_CORE Spectrum | fresnelConductorApprox (Float cosThetaI, const Spectrum &eta, const Spectrum &k) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (approximate vectorized version) More... | |
MTS_EXPORT_CORE Float | fresnelConductorExact (Float cosThetaI, Float eta, Float k) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (accurate scalar version) More... | |
MTS_EXPORT_CORE Spectrum | fresnelConductorExact (Float cosThetaI, const Spectrum &eta, const Spectrum &k) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (accurate vectorized version) More... | |
MTS_EXPORT_CORE Float | fresnelDiffuseReflectance (Float eta, bool fast=false) |
Calculates the diffuse unpolarized Fresnel reflectance of a dielectric material (sometimes referred to as "Fdr"). More... | |
MTS_EXPORT_CORE Vector | reflect (const Vector &wi, const Normal &n) |
Specularly reflect direction wi with respect to the given surface normal. More... | |
MTS_EXPORT_CORE Vector | refract (const Vector &wi, const Normal &n, Float eta, Float &cosThetaT, Float &F) |
Specularly refract the direction wi into a planar dielectric with the given surface normal and index of refraction. More... | |
MTS_EXPORT_CORE Vector | refract (const Vector &wi, const Normal &n, Float eta, Float cosThetaT) |
Specularly refract the direction wi into a planar dielectric with the given surface normal and index of refraction. More... | |
Float | fresnelDielectricExt (Float cosThetaI, Float eta) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics (extended version) More... | |
MTS_EXPORT_CORE Vector | refract (const Vector &wi, const Normal &n, Float eta) |
Specularly refract the direction wi into a planar dielectric with the given surface normal and index of refraction. More... | |
This module references all classes that have Python bindings
typedef TQuaternion<Float> Quaternion |
MTS_EXPORT_CORE void coordinateSystem | ( | const Vector & | a, |
Vector & | b, | ||
Vector & | c | ||
) |
Complete the set {a} to an orthonormal base.
s, t = coordinateSystem(n)
MTS_EXPORT_CORE Float fresnelConductorApprox | ( | Float | cosThetaI, |
Float | eta, | ||
Float | k | ||
) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (approximate scalar version)
The implementation of this function relies on a simplified expression that becomes increasingly accurate as k grows.
The name of this function is a slight misnomer, since it supports the general case of a complex-valued relative index of refraction (rather than being restricted to conductors)
cosThetaI | Cosine of the angle between the normal and the incident ray |
eta | Relative refractive index (real component) |
k | Relative refractive index (imaginary component) |
MTS_EXPORT_CORE Spectrum fresnelConductorApprox | ( | Float | cosThetaI, |
const Spectrum & | eta, | ||
const Spectrum & | k | ||
) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (approximate vectorized version)
The implementation of this function relies on a simplified expression that becomes increasingly accurate as k grows.
The name of this function is a slight misnomer, since it supports the general case of a complex-valued relative index of refraction (rather than being restricted to conductors)
cosThetaI | Cosine of the angle between the normal and the incident ray |
eta | Relative refractive index (real component) |
k | Relative refractive index (imaginary component) |
MTS_EXPORT_CORE Float fresnelConductorExact | ( | Float | cosThetaI, |
Float | eta, | ||
Float | k | ||
) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (accurate scalar version)
The implementation of this function computes the exact unpolarized Fresnel reflectance for a complex index of refraction change.
The name of this function is a slight misnomer, since it supports the general case of a complex-valued relative index of refraction (rather than being restricted to conductors)
cosThetaI | Cosine of the angle between the normal and the incident ray |
eta | Relative refractive index (real component) |
k | Relative refractive index (imaginary component) |
MTS_EXPORT_CORE Spectrum fresnelConductorExact | ( | Float | cosThetaI, |
const Spectrum & | eta, | ||
const Spectrum & | k | ||
) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (accurate vectorized version)
The implementation of this function computes the exact unpolarized Fresnel reflectance for a complex index of refraction change.
The name of this function is a slight misnomer, since it supports the general case of a complex-valued relative index of refraction (rather than being restricted to conductors)
cosThetaI | Cosine of the angle between the normal and the incident ray |
eta | Relative refractive index (real component) |
k | Relative refractive index (imaginary component) |
MTS_EXPORT_CORE Float fresnelDielectric | ( | Float | cosThetaI, |
Float | cosThetaT, | ||
Float | eta | ||
) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics.
This is a basic implementation that just returns the value of
\[ R(\cos\theta_i,\cos\theta_t,\eta)=\frac{1}{2} \left[ \left(\frac{\eta\cos\theta_i-\cos\theta_t}{\eta\cos\theta_i+\cos\theta_t}\right)^2+ \left(\frac{\cos\theta_i-\eta\cos\theta_t}{\cos\theta_i+\eta\cos\theta_t}\right)^2 \right] \]
The transmitted direction must be provided. There is no logic pertaining to total internal reflection or negative direction cosines.
cosThetaI | Absolute cosine of the angle between the normal and the incident ray |
cosThetaT | Absolute cosine of the angle between the normal and the transmitted ray |
eta | Relative refractive index to the transmitted direction |
MTS_EXPORT_CORE Float fresnelDielectricExt | ( | Float | cosThetaI, |
Float & | cosThetaT, | ||
Float | eta | ||
) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics (extended version)
In comparison to fresnelDielectric(), this function internally computes the transmitted direction and returns it using the cosThetaT
argument. When encountering total internal reflection, it sets cosThetaT=0
and returns the value 1.
When cosThetaI < 0
, the function computes the Fresnel reflectance from the internal boundary, which is equivalent to calling the function with arguments fresnelDielectric(abs(cosThetaI), cosThetaT, 1/eta)
.
cosThetaI | Cosine of the angle between the normal and the incident ray (may be negative) |
cosThetaT | Argument used to return the cosine of the angle between the normal and the transmitted ray, will have the opposite sign of cosThetaI |
eta | Relative refractive index |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics (extended version)
This is just a convenience wrapper function around the other fresnelDielectricExt
function, which does not return the transmitted direction cosine in case it is not needed by the application.
cosThetaI | Cosine of the angle between the normal and the incident ray |
eta | Relative refractive index |
MTS_EXPORT_CORE Float fresnelDiffuseReflectance | ( | Float | eta, |
bool | fast = false |
||
) |
Calculates the diffuse unpolarized Fresnel reflectance of a dielectric material (sometimes referred to as "Fdr").
This value quantifies what fraction of diffuse incident illumination will, on average, be reflected at a dielectric material boundary
eta | Relative refraction coefficient |
fast | Compute an approximate value? If set to true , the implementation will use a polynomial approximation with a max relative error of ~0.5% on the interval 0.5 < eta < 2. When fast=false , the code will use Gauss-Lobatto quadrature to compute the diffuse reflectance more accurately, and for a wider range of refraction coefficients, but at a cost in terms of performance. |
Float mitsuba::radicalInverse | ( | int | base, |
uint64_t | index | ||
) |
Calculate the radical inverse function.
This function is used as a building block to construct Halton and Hammersley sequences. Roughly, it computes a b-ary representation of the input value index
, mirrors it along the decimal point, and returns the resulting fractional value.
|
inline |
Van der Corput radical inverse in base 2 with double precision.
Van der Corput radical inverse in base 2 with single precision.
Float mitsuba::radicalInverseFast | ( | uint16_t | baseIndex, |
uint64_t | index | ||
) |
Calculate a radical inverse function (fast version)
This function works similarly to radicalInverse, but is potentially much faster. Internally, it relies on optimized implementations of the radical inverse functions for the first 1024 prime number bases. For that reason, only works for such bases.
baseIndex | Prime number index starting at 0 (i.e. 3 would cause 7 to be used as the basis) |
index | Sequence index |
Incrementally calculate the next Van Der Corput sequence value starting from a current entry x
(wrt. a fixed base)
Repeated evaluation eventually causes a loss of accuracy
MTS_EXPORT_CORE Vector reflect | ( | const Vector & | wi, |
const Normal & | n | ||
) |
Specularly reflect direction wi
with respect to the given surface normal.
wi | Incident direction |
n | Surface normal |
MTS_EXPORT_CORE Vector refract | ( | const Vector & | wi, |
const Normal & | n, | ||
Float | eta, | ||
Float & | cosThetaT, | ||
Float & | F | ||
) |
Specularly refract the direction wi
into a planar dielectric with the given surface normal and index of refraction.
This variant internally computes the transmitted direction cosine by calling fresnelDielectricExt. As a side result, the cosine and Fresnel reflectance are computed and returned via the reference arguments cosThetaT
and F
.
wi | Incident direction |
n | Surface normal |
eta | Relative index of refraction at the interface |
cosThetaT | Parameter used to return the signed cosine of the angle between the transmitted direction and the surface normal |
F | Parameter used to return the Fresnel reflectance |
MTS_EXPORT_CORE Vector refract | ( | const Vector & | wi, |
const Normal & | n, | ||
Float | eta, | ||
Float | cosThetaT | ||
) |
Specularly refract the direction wi
into a planar dielectric with the given surface normal and index of refraction.
This variant assumes that the transmitted direction cosine has has already been computed, allowing it to save some time.
wi | Incident direction |
n | Surface normal |
eta | Relative index of refraction at the interface |
cosThetaT | Signed cosine of the angle between the transmitted direction and the surface normal obtained from a prior call to fresnelDielectricExt() |
MTS_EXPORT_CORE Vector refract | ( | const Vector & | wi, |
const Normal & | n, | ||
Float | eta | ||
) |
Specularly refract the direction wi
into a planar dielectric with the given surface normal and index of refraction.
This function is a simple convenience function that only returns the refracted direction while not computing the Frensel reflectance.
wi | Incident direction |
n | Surface normal |
eta | Relative index of refraction at the interface |
|
inline |
Generate an element from a (0, 2) sequence (without scrambling)
|
inline |
Generate an element from a (0, 2) sequence, double precision version.
Generate an element from a (0, 2) sequence, single precision.
Generate fast and reasonably good pseudorandom numbers using the Tiny Encryption Algorithm (TEA) by David Wheeler and Roger Needham.
For details, refer to "GPU Random Numbers via the Tiny Encryption Algorithm" by Fahad Zafar, Marc Olano, and Aaron Curtis.
v0 | First input value to be encrypted (could be the sample index) |
v1 | Second input value to be encrypted (e.g. the requested random number dimension) |
rounds | How many rounds should be executed? The default for random number generation is 4. |
Generate fast and reasonably good pseudorandom numbers using the Tiny Encryption Algorithm (TEA) by David Wheeler and Roger Needham.
This function uses sampleTEA to return single precision floating point numbers on the interval [0, 1)
v0 | First input value to be encrypted (could be the sample index) |
v1 | Second input value to be encrypted (e.g. the requested random number dimension) |
rounds | How many rounds should be executed? The default for random number generation is 4. |
[0, 1)
Alias to sampleTEASingle or sampleTEADouble based on compilation flags.
Generate fast and reasonably good pseudorandom numbers using the Tiny Encryption Algorithm (TEA) by David Wheeler and Roger Needham.
This function uses sampleTEA to return single precision floating point numbers on the interval [0, 1)
v0 | First input value to be encrypted (could be the sample index) |
v1 | Second input value to be encrypted (e.g. the requested random number dimension) |
rounds | How many rounds should be executed? The default for random number generation is 4. |
[0, 1)
Float mitsuba::scrambledRadicalInverse | ( | int | base, |
uint64_t | index, | ||
uint16_t * | perm | ||
) |
Calculate a scrambled radical inverse function.
This function is used as a building block to construct permuted Halton and Hammersley sequence variants. It works like the normal radical inverse function radicalInverse(), except that every digit is run through an extra scrambling permutation specified as array of size base
.
Float mitsuba::scrambledRadicalInverseFast | ( | uint16_t | baseIndex, |
uint64_t | index, | ||
uint16_t * | perm | ||
) |
Calculate a scrambled radical inverse function (fast version)
This function is used as a building block to construct permuted Halton and Hammersley sequence variants. It works like the fast radical inverse function radicalInverseFast(), except that every digit is run through an extra scrambling permutation.
|
inline |
Sobol' radical inverse in base 2 with double precision.
Sobol' radical inverse in base 2 with single precision.
const int mitsuba::primeTable[primeTableSize] |
Table of the first 1024 prime numbers.