Mitsuba Renderer  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mitsuba Namespace Reference

Namespaces

 detail
 
 math
 
 stats
 
 warp
 Implements common warping techniques that map from the unit square to other domains, such as spheres, hemispheres, etc.
 

Classes

struct  TAABB
 Generic multi-dimensional bounding box data structure. More...
 
struct  AABB
 Axis-aligned bounding box data structure in three dimensions. More...
 
class  Appender
 This class defines an abstract destination for logging-relevant information. More...
 
class  StreamAppender
 Appender implementation, which writes to an arbitrary C++ output stream More...
 
class  UnbufferedAppender
 Appender implementation, which writes directly to an UNIX-style unbuffered file descriptor. More...
 
class  BlockedArray
 Blocked generic 2D array data type. More...
 
class  LinearArray
 Linear (i.e. non-blocked) generic 2D array data type. More...
 
class  Bitmap
 General-purpose bitmap class with read and write support for several common file formats. More...
 
class  FormatConverter
 Bitmap format conversion helper class. More...
 
class  BrentSolver
 Brent's method nonlinear zero finder. More...
 
struct  BSphere
 Bounding sphere data structure in three dimensions. More...
 
class  ChiSquare
 Chi-square goodness-of-fit test on the sphere. More...
 
class  ConfigurableObject
 Generic serializable object, which supports construction from a Properties instance. More...
 
class  ConsoleStream
 Stream-style interface to the default stdin/stdout console streams. More...
 
class  Formatter
 Abstract interface for converting log information into a human-readable format. More...
 
class  DefaultFormatter
 The default formatter used to turn log messages into a human-readable form. More...
 
struct  Frame
 Stores a three-dimensional orthonormal coordinate frame. More...
 
class  FileResolver
 File resolution helper. More...
 
class  FileStream
 Simple Stream implementation for accessing files. More...
 
struct  SimpleKDNode
 Simple kd-tree node for use with PointKDTree. More...
 
struct  LeftBalancedKDNode
 Left-balanced kd-tree node for use with PointKDTree. More...
 
class  PointKDTree
 Generic multi-dimensional kd-tree data structure for point data. More...
 
class  Mutex
 Thin wrapper around the recursive boost thread lock. More...
 
class  WaitFlag
 Wait flag synchronization primitive. Can be used to wait for a certain event to occur. More...
 
class  ConditionVariable
 Condition variable synchronization primitive. Can be used to wait for a condition to become true in a safe way. More...
 
class  LockGuard
 Simple RAII-style locking of a Mutex. On construction it locks the mutex and unlocks it on destruction. Based on boost::lock_guard, assumes the Mutex will outlive the lock. More...
 
class  UniqueLock
 In addition to providing RAII-style locking, UniqueLock also allows for deferred locking until lock() is called explicitly. unlock() is only called by the destructor if the object has locked the mutex. Based on boost::unique_lock, assumes the Mutex will outlive the lock. More...
 
class  Logger
 Responsible for processing log messages. More...
 
struct  LRUCache
 Generic LRU cache implementation. More...
 
struct  Matrix
 Generic fixed-size dense matrix class using a row-major storage format. More...
 
struct  Matrix2x2
 Basic 2x2 matrix data type. More...
 
struct  Matrix3x3
 Basic 3x3 matrix data type. More...
 
struct  Matrix4x4
 Basic 4x4 matrix data type. More...
 
class  BasicMemoryPool
 Basic memory pool for efficient allocation and deallocation of objects of the same type. More...
 
class  MemoryMappedFile
 Basic cross-platform abstraction for memory mapped files. More...
 
class  MemoryStream
 Simple memory buffer-based stream with automatic memory management. More...
 
class  NetworkedObject
 Abstract interface for objects that reference shared network resources. More...
 
struct  Normal
 Three-dimensional normal data structure. More...
 
class  LockFreeList
 Lock-free linked list data structure. More...
 
class  StaticOctree
 Generic single-reference static octree. More...
 
class  DynamicOctree
 Generic multiple-reference octree with support for parallel dynamic updates. More...
 
class  Plugin
 Abstract plugin class – represents loadable configurable objects and utilities. More...
 
class  PluginManager
 The plugin manager is responsible for resolving and loading external plugins. More...
 
struct  DiscreteDistribution
 Discrete probability distribution. More...
 
struct  TPoint1
 Parameterizable one-dimensional point data structure. More...
 
struct  TPoint2
 Parameterizable two-dimensional point data structure. More...
 
struct  TPoint3
 Parameterizable three-dimensional point data structure. More...
 
struct  TPoint4
 Parameterizable four-dimensional point data structure. More...
 
class  Properties
 Associative parameter map for constructing subclasses of ConfigurableObject. More...
 
class  GaussLobattoIntegrator
 Computes the integral of a one-dimensional function using adaptive Gauss-Lobatto quadrature. More...
 
class  NDIntegrator
 Adaptively computes the integral of a multidimensional function using either a Gauss-Kronod (1D) or a Genz-Malik (>1D) cubature rule. More...
 
struct  TQuaternion
 Parameterizable quaternion data structure. More...
 
class  Random
 Random number generator based on SIMD-oriented Fast Mersenne Twister More...
 
struct  TRay
 Simple n-dimensional ray data structure with minimum / maximum extent information. More...
 
struct  RayDifferential
 Ray differential – enhances the basic ray class with information about the rays of adjacent pixels on the view plane More...
 
struct  RayPacket4
 SIMD quad-packed ray for coherent ray tracing. More...
 
struct  RayInterval4
 
struct  Intersection4
 
class  ReconstructionFilter
 Generic interface to separable image reconstruction filters. More...
 
struct  Resampler
 Utility class for efficiently resampling discrete datasets to different resolutions. More...
 
class  WorkUnit
 Abstract work unit – represents a small amount of information that encodes part of a larger processing task. More...
 
class  WorkResult
 Abstract work result – represents the result of a processed WorkUnit instance. More...
 
class  WorkProcessor
 Abstract work processor – takes work units and turns them into WorkResult instances. More...
 
class  ParallelProcess
 Abstract parallelizable task. More...
 
class  Scheduler
 Centralized task scheduler implementation. More...
 
class  Worker
 Base class of all worker implementations. More...
 
class  LocalWorker
 Acquires work from the scheduler and executes it locally. More...
 
class  DummyWorkUnit
 Dummy work unit without contents. More...
 
class  RemoteWorker
 Acquires work from the scheduler and forwards it to a processing node reachable through a Stream. More...
 
class  RemoteWorkerReader
 Communication helper thread required by RemoteWorker. More...
 
class  RemoteProcess
 Parallel process facade used to insert work units from a remote scheduler into the local one. More...
 
class  StreamBackend
 Network processing communication backend. More...
 
class  SerializableObject
 Base class of all reference-counted objects with serialization support. More...
 
class  InstanceManager
 Coordinates the serialization and unserialization of object graphs. More...
 
class  HilbertCurve2D
 2D version of the Hilbert space-filling curve More...
 
struct  SHRotation
 Stores the diagonal blocks of a spherical harmonic rotation matrix. More...
 
struct  SHVector
 Stores a truncated real spherical harmonics representation of an L2-integrable function. More...
 
class  SHSampler
 Implementation of 'Importance Sampling Spherical Harmonics' by W. Jarsz, N. Carr and H. W. Jensen (EUROGRAPHICS 2009) More...
 
class  SimpleCache
 Generic thread-local storage for caching evaluations of expensive function calls. More...
 
class  ContinuousSpectrum
 Abstract continous spectral power distribution data type, which supports evaluation at arbitrary wavelengths. More...
 
class  BlackBodySpectrum
 Spectral power distribution based on Planck's black body law. More...
 
class  RayleighSpectrum
 Spectral distribution for rendering participating media with Rayleigh scattering. More...
 
class  ProductSpectrum
 This spectral power distribution is defined as the product of two other continuous spectra. More...
 
class  InterpolatedSpectrum
 Linearly interpolated spectral power distribution. More...
 
struct  TSpectrum
 Abstract spectral power distribution data type. More...
 
struct  Color3
 RGB color data type. More...
 
struct  Spectrum
 Discrete spectral power distribution based on a number of wavelength bins over the 360-830 nm range. More...
 
class  SSHStream
 Stream implementation based on an encrypted SSH tunnel. More...
 
class  SocketStream
 Portable Stream implementation, which encapsulates a socket for IPv4/IPv6 network communications. More...
 
struct  CacheLineCounter
 Counter data structure, which is suitable for ccNUMA/SMP machines. More...
 
class  StatsCounter
 General-purpose statistics counter. More...
 
class  ProgressReporter
 General-purpose progress reporter. More...
 
class  Statistics
 Collects various rendering statistics and presents them in a human-readable form. More...
 
class  EOFException
 This exception is thrown after an incomplete IO read/write operation. More...
 
class  Stream
 Abstract seekable stream class. More...
 
class  Thread
 Cross-platform thread implementation. More...
 
class  Timer
 Platform independent milli/micro/nanosecond timerThis class implements a simple cross-platform timer with nanosecond resolution. It operates similarly to a good stop watch: it can be started and stopped and records both the time since the last start() invocation, and the total time collected in separate intervals. More...
 
class  ThreadLocal
 ! More...
 
class  PrimitiveThreadLocal
 Thin wrapper around posix thread local storage. Stores heap-allocated data other than Object instances. More...
 
class  AnimationTrack
 Parameterizable animation track. More...
 
class  AbstractAnimationTrack
 Base class of animation tracks. More...
 
class  AnimatedTransform
 Animated transformation with an underlying keyframe representation. More...
 
struct  Transform
 Encapsulates a 4x4 linear transformation and its inverse. More...
 
struct  Triangle
 Simple triangle class including a collection of routines for analysis and transformation. More...
 
struct  TVector1
 Parameterizable one-dimensional vector data structure. More...
 
struct  TVector2
 Parameterizable two-dimensional vector data structure. More...
 
struct  TVector3
 Parameterizable three-dimensional vector data structure. More...
 
struct  TVector4
 Parameterizable four-dimensional vector data structure. More...
 
struct  VonMisesFisherDistr
 Von Mises-Fisher distribution on the 2-sphere. More...
 
class  ZStream
 Transparent compression/decompression stream based on zlib. More...
 
struct  BSDFSamplingRecord
 This data structured contains all information that is required to sample or query a BSDF. More...
 
class  BSDF
 Abstract BSDF base-class. More...
 
struct  PositionSamplingRecord
 Generic sampling record for positions. More...
 
struct  DirectionSamplingRecord
 Generic sampling record for directions. More...
 
struct  DirectSamplingRecord
 Record for solid-angle based area sampling techniques. More...
 
class  AbstractEmitter
 Abstract radiance/importance emitter interface. More...
 
class  Emitter
 Abstract radiance emitter interface. More...
 
class  Film
 Abstract film base class - used to store samples generated by Integrator implementations. More...
 
class  GatherPhotonProcess
 Process for parallel photon map construction. More...
 
class  OrderedChunkAllocator
 Special "ordered" memory allocator. More...
 
class  BlockedVector
 Basic vector implementation, which stores all data in a list of fixed-sized blocks. More...
 
class  ClassificationStorage
 Compact storage for primitive classifcation. More...
 
class  KDTreeBase
 Base class of all kd-trees. More...
 
class  GenericKDTree
 Optimized KD-tree acceleration data structure for n-dimensional (n<=4) shapes and various queries on them. More...
 
class  ImageBlock
 Storage for an image sub-block (a.k.a render bucket) More...
 
class  BlockedImageProcess
 
class  Integrator
 Abstract integrator base-class; does not make any assumptions on how radiance is computed. More...
 
struct  RadianceQueryRecord
 Radiance query record data structure used by SamplingIntegrator. More...
 
class  SamplingIntegrator
 Abstract base class, which describes integrators capable of computing samples of the scene's radiance function. More...
 
class  MonteCarloIntegrator
 
class  HemisphereSampler
 Utility data structure for hemispherical sampling and translational/rotational gradient computation. More...
 
class  IrradianceCache
 Irradiance cache data structure based on "A Ray Tracing Solution for Diffuse Interreflection" by Greg J. Ward, Francis M. Rubinstein and Robert D. Clear (Computer Graphics, Volume 22, Number 4, August 1988) More...
 
struct  MediumSamplingRecord
 Data record for sampling a point on the in-scattering integral of the RTE. More...
 
class  Medium
 Abstract participating medium. More...
 
class  TMIPMap
 MIP map class with support for elliptically weighted averages. More...
 
class  Noise
 Contains a few useful noise functions. More...
 
class  ParticleProcess
 Abstract parallel particle tracing process. More...
 
class  ParticleTracer
 Abstract particle tracer implementation. More...
 
struct  PhaseFunctionSamplingRecord
 Data structure, which contains information required to sample or query a phase function. More...
 
class  PhaseFunction
 Abstract phase function. More...
 
struct  PhotonData
 Internal data record used by Photon. More...
 
struct  Photon
 Memory-efficient photon representation for use with PointKDTree. More...
 
class  PhotonMap
 Implementation of the photon map data structure. More...
 
class  RangeWorkUnit
 A work unit specifying a range of some quantity to be processed. More...
 
class  RectangularWorkUnit
 Work unit that specifies a rectangular region in an image. More...
 
class  RenderJob
 Coordinates the process of rendering a single image. More...
 
class  BlockedRenderProcess
 Parallel process for rendering with sampling-based integrators. More...
 
class  RenderListener
 Abstract render listener - can be used to react to progress messages (e.g. in a GUI) More...
 
class  RenderQueue
 Render queue - used to keep track of a number of scenes that are simultaneously being rendered. More...
 
class  SurfaceAreaHeuristic2
 Implements the 2D surface area heuristic for use by the GenericKDTree construction algorithm. More...
 
class  SAHKDTree2D
 Specializes GenericKDTree to a two-dimensional tree to be used for flatland ray tracing. More...
 
class  SurfaceAreaHeuristic3
 Implements the 3D surface area heuristic for use by the GenericKDTree construction algorithm. More...
 
class  SAHKDTree3D
 Specializes GenericKDTree to a three-dimensional tree to be used for ray tracing. More...
 
class  SurfaceAreaHeuristic4
 Implements the four-dimensional surface area heuristic for use by the GenericKDTree construction algorithm. More...
 
class  SAHKDTree4D
 
class  Sampler
 Base class of all sample generators. More...
 
class  Scene
 Principal scene data structure. More...
 
class  VersionException
 This exception is thrown when attempting to load an outdated file. More...
 
class  SceneHandler
 XML parser for Mitsuba scene files. To be used with the SAX interface of Xerces-C++. More...
 
class  Sensor
 Abstract sensor interface. More...
 
class  ProjectiveCamera
 Projective camera interface. More...
 
class  PerspectiveCamera
 Perspective camera interface. More...
 
class  HWResource
 Abstract hardware resource. More...
 
class  Shader
 Shader base class for use with a VPL-style renderer. More...
 
struct  Intersection
 Container for all information related to a surface intersection. More...
 
class  Shape
 Abstract base class of all shapes. More...
 
class  ShapeKDTree
 SAH KD-tree acceleration data structure for fast ray-triangle intersections. More...
 
class  BlockListener
 Block listener callback for use with the Spiral class. More...
 
class  Spiral
 Generates a spiral of blocks to be rendered. More...
 
class  Subsurface
 Abstract subsurface scattering models. More...
 
class  TestCase
 Base class of all testcases. More...
 
class  Texture
 Base class of all textures. Computes values for an arbitrary surface point. Texture2D is a specialization to UV-based textures. More...
 
class  Texture2D
 Base class of all 2D textures. More...
 
struct  TriAccel
 Pre-computed triangle representation based on Ingo Wald's TriAccel layout. More...
 
struct  TangentSpace
 Simple tangent space storage for surfaces. More...
 
class  TriMesh
 Abstract triangle mesh base class. More...
 
class  Utility
 Abstract utility class – can be used to implement loadable utility plugins that perform various actions. They can be started using the 'mtsutil' launcher. More...
 
class  VolumeDataSource
 Generalized source of volumetric information. More...
 
struct  VPL
 
class  ConstantSpectrumTexture
 Constant spectrum-valued texture. More...
 
class  ConstantFloatTexture
 Constant float-valued texture. More...
 
class  SpectrumAdditionTexture
 Componentwise addition of two textures. More...
 
class  SpectrumSubtractionTexture
 Componentwise subtraction of two textures. More...
 
class  SpectrumProductTexture
 Componentwise product of two textures. More...
 
struct  DeviceEvent
 The device event structure encapsulates event information such as mouse movement or key presses. More...
 
class  DeviceEventListener
 Abstract device event callback. More...
 
class  Device
 An abstract drawing device. More...
 
class  Font
 Utility class used to render text inside OpenGL programs using pre-rasterized TrueType fonts stored as textures. More...
 
class  GLGeometry
 OpenGL-based GPUGeometry implementation. More...
 
class  GLProgram
 OpenGL shader class – responsible from compiling and linking GLSL fragments. More...
 
class  GLRenderer
 OpenGL implementation of the Renderer interface. More...
 
class  GLSync
 OpenGL-based GPUSync implementation. More...
 
class  GLTexture
 OpenGL-based GPUTexture implementation. More...
 
class  GLXDevice
 X Windows OpenGL-capable (GLX) device. More...
 
class  GLXRenderer
 GLX (XFree86) renderer. More...
 
class  GPUGeometry
 Abstract geometry storage on a graphics card. More...
 
class  GPUProgram
 Abstract shader program (for fragment/vertex shading) More...
 
class  GPUSync
 Abstract GPU synchronization object implementing a memory fence operation. More...
 
class  GPUTexture
 A data structure for 1/2/3D and cube texture mapping. Also has optional render-to-texture functionality. More...
 
class  NSGLDevice
 A MacOS X (NSGL) device. More...
 
class  NSGLRenderer
 A MacOS X (NSGL) OpenGL Renderer. More...
 
class  NSGLSession
 A MacOS X (NSGL) windowing environment session. More...
 
class  RendererCapabilities
 Helper class, which documents the capabilities of a renderer implementation. More...
 
class  Renderer
 Abstract renderer implementation. More...
 
class  Session
 Abstract windowing environment session. More...
 
class  ShadowMapGenerator
 Utility class for creating different kinds of shadow maps (cube, directional, and paraboloid shadow maps) using hardware rasterization. More...
 
class  Viewer
 Template for simple GLUT-style viewer applications. More...
 
class  VPLShaderManager
 This class is responsible for the on-demand creation of GPU shaders to render shapes that are illuminated by virtual point light sources. More...
 
class  WGLDevice
 Windows (WGL) device implementation. More...
 
class  WGLRenderer
 Windows (WGL) renderer implementation. More...
 
class  WGLSession
 Windows (WGL) windowing environment session. More...
 
class  X11Device
 X Window System (X11R6) device / software surface. More...
 
class  X11Session
 X Window System (X11R6) session. More...
 
struct  EndpointRecord
 Data record associated with path endpoints (aka supernodes) in the path-space framework. More...
 
struct  PathEdge
 Bidirectional path edge data structure. More...
 
struct  TwoTailedGeoDistr
 Clamped two-tailed geometric distribution. More...
 
class  SpecularManifold
 Utility class for perturbing paths located on a specular manifold. More...
 
class  MemoryPool
 
class  BidirectionalMutator
 Bidirectional mutation strategy. More...
 
class  CausticPerturbation
 Veach-style Caustic subpath perturbation strategy. More...
 
class  LensPerturbation
 Veach-style Lens subpath perturbation strategy. More...
 
class  ManifoldPerturbation
 Specular manifold perturbation strategy. More...
 
class  MultiChainPerturbation
 Veach-style multi-chain perturbation strategy. More...
 
class  Mutator
 Generic interface to path-space mutators. More...
 
struct  MutationRecord
 Stores supplemental information about an executed mutation strategy. More...
 
class  MutatorBase
 Medium-aware mutator base class. More...
 
struct  Path
 Bidirectional path data structure. More...
 
class  PathSampler
 Implements a sampling strategy that is able to produce paths using bidirectional path tracing or unidirectional volumetric path tracing. More...
 
struct  PathSeed
 Stores information required to re-create a seed path (e.g. for MLT) More...
 
class  SeedWorkUnit
 
struct  SplatList
 List storage for the image-space contributions ("splats") of a path sample generated using PathSampler. More...
 
class  ReplayableSampler
 Specialized sampler implementation used to seed MLT-style algorithm. More...
 
class  BidirectionalUtils
 A collection of powerful support functions that can be used to construct bidirectional rendering algorithms. More...
 
struct  RestoreMeasureHelper
 Restores the measure of a path vertex after going out of scope. More...
 
struct  PathVertex
 Bidirectional path vertex data structure. More...
 

Typedefs

typedef Spectrum RotationalGradient [3]
 
typedef Spectrum TranslationalGradient [3]
 
typedef TAABB< Point4AABB4
 
typedef const ShapeConstShapePtr
 

Enumerations

enum  ELogLevel {
  ETrace = 0, EDebug = 100, EInfo = 200, EWarn = 300,
  EError = 400
}
 Available Log message types. More...
 
enum  EStatsType {
  ENumberValue = 0, EByteCount, EPercentage, EMinimumValue,
  EMaximumValue, EAverage
}
 Determines the multiples (e.g. 1000, 1024) and units of a StatsCounter. More...
 
enum  ETransportMode { ERadiance = 0, EImportance = 1, ETransportModes = 2 }
 Specifies the transport mode when sampling or evaluating a scattering function. More...
 
enum  EMeasure {
  EInvalidMeasure = 0, ESolidAngle = 1, ELength = 2, EArea = 3,
  EDiscrete = 4
}
 A list of measures that are associated with various sampling methods in Mitsuba. More...
 
enum  EMIPFilterType { ENearest = 0, EBilinear = 1, ETrilinear = 2, EEWA = 3 }
 Specifies the desired antialiasing filter. More...
 
enum  EVPLType { EPointEmitterVPL = 0, EDirectionalEmitterVPL, ESurfaceVPL }
 

Functions

template<typename T >
bool atomicCompareAndExchangePtr (T **v, T *newValue, T *oldValue)
 Atomically attempt to exchange a pointer with another value. More...
 
bool atomicCompareAndExchange (volatile int32_t *v, int32_t newValue, int32_t oldValue)
 Atomically attempt to exchange a 32-bit integer with another value. More...
 
bool atomicCompareAndExchange (volatile int64_t *v, int64_t newValue, int64_t oldValue)
 Atomically attempt to exchange a 64-bit integer with another value. More...
 
float atomicAdd (volatile float *dst, float delta)
 Atomically add delta to the floating point destination dst. More...
 
double atomicAdd (volatile double *dst, double delta)
 Atomically add delta to the floating point destination dst. More...
 
int32_t atomicAdd (volatile int32_t *dst, int32_t delta)
 Atomically add delta to the 32-bit integer destination dst. More...
 
int64_t atomicAdd (volatile int64_t *dst, int64_t delta)
 Atomically add delta to the 64-bit integer destination dst. More...
 
int64_t atomicMaximum (volatile int64_t *dst, int64_t value)
 Atomically set dst to the maximum of itself and value. More...
 
int32_t atomicMaximum (volatile int32_t *dst, int32_t value)
 
template<typename T , int M1, int N1, int M2, int N2>
Matrix< M1, N2, T > operator* (const Matrix< M1, N1, T > &mat1, const Matrix< M2, N2, T > &mat2)
 Matrix multiplication (creates a temporary) More...
 
template<typename T , int M, int N>
Matrix< M, N, T > operator* (T f, const Matrix< M, N, T > &m)
 
bool eig3 (Matrix3x3 &m, Float lambda[3])
 Fast 3x3 eigenvalue decomposition. More...
 
void eig3_noniter (Matrix3x3 &m, Float lambda[3])
 Fast non-iterative 3x3 eigenvalue decomposition. More...
 
Normal normalize (const Normal &n)
 
template<typename T >
TPoint1< T > operator* (T f, const TPoint1< T > &v)
 
template<typename T >
distance (const TPoint1< T > &p1, const TPoint1< T > &p2)
 
template<typename T >
distanceSquared (const TPoint1< T > &p1, const TPoint1< T > &p2)
 
template<typename T >
TPoint2< T > operator* (T f, const TPoint2< T > &v)
 
template<typename T >
distance (const TPoint2< T > &p1, const TPoint2< T > &p2)
 
template<typename T >
distanceSquared (const TPoint2< T > &p1, const TPoint2< T > &p2)
 
template<typename T >
TPoint3< T > operator* (T f, const TPoint3< T > &v)
 
template<typename T >
distance (const TPoint3< T > &p1, const TPoint3< T > &p2)
 
template<typename T >
distanceSquared (const TPoint3< T > &p1, const TPoint3< T > &p2)
 
template<typename T >
TPoint4< T > operator* (T f, const TPoint4< T > &v)
 
template<typename T >
distance (const TPoint4< T > &p1, const TPoint4< T > &p2)
 
template<typename T >
distanceSquared (const TPoint4< T > &p1, const TPoint4< T > &p2)
 
template<typename T >
TQuaternion< T > operator* (T f, const TQuaternion< T > &v)
 
template<typename T >
dot (const TQuaternion< T > &q1, const TQuaternion< T > &q2)
 
template<typename T >
TQuaternion< T > normalize (const TQuaternion< T > &q)
 
template<typename T >
TQuaternion< T > slerp (const TQuaternion< T > &q1, const TQuaternion< T > &_q2, Float t)
 
std::ostream & operator<< (std::ostream &os, const ReconstructionFilter::EBoundaryCondition &value)
 
Float dot (const SHVector &v1, const SHVector &v2)
 
template<typename T >
TVector1< T > operator* (T f, const TVector1< T > &v)
 
template<typename T >
dot (const TVector1< T > &v1, const TVector1< T > &v2)
 
template<typename T >
absDot (const TVector1< T > &v1, const TVector1< T > &v2)
 
template<typename T >
TVector1< T > normalize (const TVector1< T > &v)
 
template<typename T >
TVector1< T > normalizeStrict (const TVector1< T > &v, const char *errMsg)
 
template<typename T >
TVector2< T > operator* (T f, const TVector2< T > &v)
 
template<typename T >
dot (const TVector2< T > &v1, const TVector2< T > &v2)
 
template<typename T >
absDot (const TVector2< T > &v1, const TVector2< T > &v2)
 
template<typename T >
det (const TVector2< T > &v1, const TVector2< T > &v2)
 
template<typename T >
TVector2< T > normalize (const TVector2< T > &v)
 
template<typename T >
TVector2< T > normalizeStrict (const TVector2< T > &v, const char *errMsg)
 
template<typename T >
TVector3< T > operator* (T f, const TVector3< T > &v)
 
template<typename T >
dot (const TVector3< T > &v1, const TVector3< T > &v2)
 
template<typename T >
absDot (const TVector3< T > &v1, const TVector3< T > &v2)
 
template<typename T >
TVector3< T > cross (const TVector3< T > &v1, const TVector3< T > &v2)
 
template<typename T >
TVector3< T > normalize (const TVector3< T > &v)
 
template<typename T >
TVector3< T > normalizeStrict (const TVector3< T > &v, const char *errMsg)
 
template<typename T >
TVector4< T > operator* (T f, const TVector4< T > &v)
 
template<typename T >
dot (const TVector4< T > &v1, const TVector4< T > &v2)
 
template<typename T >
absDot (const TVector4< T > &v1, const TVector4< T > &v2)
 
template<typename T >
TVector4< T > normalize (const TVector4< T > &v)
 
template<typename T >
TVector4< T > normalizeStrict (const TVector4< T > &v, const char *errMsg)
 
void pushSceneCleanupHandler (void(*cleanup)())
 Push a cleanup handler to be executed after loading the scene is done. More...
 
FINLINE __m128 rayIntersectPacket (const TriAccel &tri, const RayPacket4 &packet, __m128 mint, __m128 maxt, __m128 inactive, Intersection4 &its)
 
size_t generateVPLs (const Scene *scene, Random *random, size_t offset, size_t count, int maxDepth, bool prune, std::deque< VPL > &vpls)
 
std::ostream & operator<< (std::ostream &os, const Mutator::EMutationType &type)
 
Basic tools for non-adaptive quadrature
float legendreP (int l, float x)
 Evaluate the l-th Legendre polynomial using recurrence (single precision) More...
 
double legendreP (int l, double x)
 Evaluate the l-th Legendre polynomial using recurrence (double precision) More...
 
float legendreP (int l, int m, float x)
 Evaluate an associated Legendre polynomial using recurrence (single precision) More...
 
double legendreP (int l, int m, double x)
 Evaluate an associated Legendre polynomial using recurrence (double precision) More...
 
std::pair< float, float > legendrePD (int l, float x)
 Evaluate the l-th Legendre polynomial and its derivative using recurrence (single precision) More...
 
std::pair< double, double > legendrePD (int l, double x)
 Evaluate the l-th Legendre polynomial and its derivative using recurrence (double precision) More...
 
void gaussLegendre (int n, Float *nodes, Float *weights)
 Computes the nodes and weights of a Gauss-Legendre quadrature (aka "Gaussian quadrature") rule with the given number of evaluations. More...
 
void gaussLobatto (int n, Float *nodes, Float *weights)
 Computes the nodes and weights of a Gauss-Lobatto quadrature rule with the given number of evaluations. More...
 
Functions for evaluating and sampling Catmull-Rom splines
Float evalCubicInterp1D (Float x, const Float *values, size_t size, Float min, Float max, bool extrapolate=false)
 Evaluate a cubic spline interpolant of a uniformly sampled 1D function. More...
 
Float evalCubicInterp1DN (Float x, const Float *nodes, const Float *values, size_t size, bool extrapolate=false)
 Evaluate a cubic spline interpolant of a nonuniformly sampled 1D function. More...
 
Float integrateCubicInterp1D (size_t idx, const Float *values, size_t size, Float min, Float max)
 Computes the definite integral over a segment of a uniformly sampled 1D Catmull-Rom spline interpolant. More...
 
Float integrateCubicInterp1DN (size_t idx, const Float *nodes, const Float *values, size_t size)
 Computes the definite integral over a segment of a nonuniformly sampled 1D Catmull-Rom spline interpolant. More...
 
Float sampleCubicInterp1D (size_t idx, const Float *values, size_t size, Float min, Float max, Float sample, Float *fval=NULL)
 Importance sample a segment of a uniformly sampled 1D Catmull-Rom spline interpolant. More...
 
Float sampleCubicInterp1DN (size_t idx, const Float *nodes, const Float *values, size_t size, Float sample, Float *fval=NULL)
 Importance sample a segment of a nonuniformly sampled 1D Catmull-Rom spline interpolant. More...
 
Float evalCubicInterp2D (const Point2 &p, const Float *values, const Size2 &size, const Point2 &min, const Point2 &max, bool extrapolate=false)
 Evaluate a cubic spline interpolant of a uniformly sampled 2D function. More...
 
Float evalCubicInterp2DN (const Point2 &p, const Float **nodes, const Float *values, const Size2 &size, bool extrapolate=false)
 Evaluate a cubic spline interpolant of a nonuniformly sampled 2D function. More...
 
Float evalCubicInterp3D (const Point3 &p, const Float *values, const Size3 &size, const Point3 &min, const Point3 &max, bool extrapolate=false)
 Evaluate a cubic spline interpolant of a uniformly sampled 3D function. More...
 
Float evalCubicInterp3DN (const Point3 &p, const Float **nodes, const Float *values, const Size3 &size, bool extrapolate=false)
 Evaluate a cubic spline interpolant of a nonuniformly sampled 3D function. More...
 

Elementary Quasi-Monte Carlo number sequences

const int primeTable [primeTableSize]
 Table of the first 1024 prime numbers. More...
 
float radicalInverse2Single (uint32_t n, uint32_t scramble=0U)
 Van der Corput radical inverse in base 2 with single precision. More...
 
double radicalInverse2Double (uint64_t n, uint64_t scramble=0ULL)
 Van der Corput radical inverse in base 2 with double precision. More...
 
float sobol2Single (uint32_t n, uint32_t scramble=0U)
 Sobol' radical inverse in base 2 with single precision. More...
 
double sobol2Double (uint64_t n, uint64_t scramble=0ULL)
 Sobol' radical inverse in base 2 with double precision. More...
 
Point2f sample02Single (uint32_t n, uint32_t scramble[2])
 Generate an element from a (0, 2) sequence, single precision. More...
 
Point2d sample02Double (uint64_t n, uint64_t scramble[2])
 Generate an element from a (0, 2) sequence, double precision version. More...
 
Point2 sample02 (size_t n)
 Generate an element from a (0, 2) sequence (without scrambling) More...
 
uint64_t 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 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 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 sampleTEAFloat (uint32_t v0, uint32_t v1, int rounds=4)
 Alias to sampleTEASingle or sampleTEADouble based on compilation flags. More...
 
Float radicalInverse (int base, uint64_t index)
 Calculate the radical inverse function. More...
 
Float scrambledRadicalInverse (int base, uint64_t index, uint16_t *perm)
 Calculate a scrambled radical inverse function. More...
 
Float 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 radicalInverseFast (uint16_t baseIndex, uint64_t index)
 Calculate a radical inverse function (fast version) More...
 
Float scrambledRadicalInverseFast (uint16_t baseIndex, uint64_t index, uint16_t *perm)
 Calculate a scrambled radical inverse function (fast version) More...
 

Detailed Description

Uncomment this to enable scheduling debug messages

Typedef Documentation

typedef const Shape* mitsuba::ConstShapePtr
typedef Spectrum mitsuba::RotationalGradient[3]
typedef Spectrum mitsuba::TranslationalGradient[3]

Enumeration Type Documentation

Available Log message types.

Enumerator
ETrace 

Trace message, for extremely verbose debugging.

EDebug 

Debug message, usually turned off.

EInfo 

More relevant debug / information message.

EWarn 

Warning message.

EError 

Error message, causes an exception to be thrown.

Specifies the desired antialiasing filter.

Enumerator
ENearest 

No filtering, nearest neighbor lookups.

EBilinear 

No filtering, only bilinear interpolation.

ETrilinear 

Basic trilinear filtering.

EEWA 

Elliptically weighted average.

Determines the multiples (e.g. 1000, 1024) and units of a StatsCounter.

Enumerator
ENumberValue 

Simple unitless number, e.g. # of rays.

EByteCount 

Number of read/written/transferred bytes.

EPercentage 

Percentage with respect to a base counter.

EMinimumValue 

Minimum observed value of some quantity.

EMaximumValue 

Maximum observed value of some quantity.

EAverage 

Average value with respect to a base counter.

Enumerator
EPointEmitterVPL 
EDirectionalEmitterVPL 
ESurfaceVPL 

Function Documentation

template<typename T >
T mitsuba::absDot ( const TVector1< T > &  v1,
const TVector1< T > &  v2 
)
inline
template<typename T >
T mitsuba::absDot ( const TVector2< T > &  v1,
const TVector2< T > &  v2 
)
inline
template<typename T >
T mitsuba::absDot ( const TVector3< T > &  v1,
const TVector3< T > &  v2 
)
inline
template<typename T >
T mitsuba::absDot ( const TVector4< T > &  v1,
const TVector4< T > &  v2 
)
inline
template<typename T >
TVector3<T> mitsuba::cross ( const TVector3< T > &  v1,
const TVector3< T > &  v2 
)
inline
template<typename T >
T mitsuba::det ( const TVector2< T > &  v1,
const TVector2< T > &  v2 
)
inline
template<typename T >
T mitsuba::distance ( const TPoint1< T > &  p1,
const TPoint1< T > &  p2 
)
inline
template<typename T >
T mitsuba::distance ( const TPoint2< T > &  p1,
const TPoint2< T > &  p2 
)
inline
template<typename T >
T mitsuba::distance ( const TPoint3< T > &  p1,
const TPoint3< T > &  p2 
)
inline
template<typename T >
T mitsuba::distance ( const TPoint4< T > &  p1,
const TPoint4< T > &  p2 
)
inline
template<typename T >
T mitsuba::distanceSquared ( const TPoint1< T > &  p1,
const TPoint1< T > &  p2 
)
inline
template<typename T >
T mitsuba::distanceSquared ( const TPoint2< T > &  p1,
const TPoint2< T > &  p2 
)
inline
template<typename T >
T mitsuba::distanceSquared ( const TPoint3< T > &  p1,
const TPoint3< T > &  p2 
)
inline
template<typename T >
T mitsuba::distanceSquared ( const TPoint4< T > &  p1,
const TPoint4< T > &  p2 
)
inline
template<typename T >
T mitsuba::dot ( const TVector1< T > &  v1,
const TVector1< T > &  v2 
)
inline
template<typename T >
T mitsuba::dot ( const TQuaternion< T > &  q1,
const TQuaternion< T > &  q2 
)
inline
template<typename T >
T mitsuba::dot ( const TVector2< T > &  v1,
const TVector2< T > &  v2 
)
inline
Float mitsuba::dot ( const SHVector &  v1,
const SHVector &  v2 
)
inline
template<typename T >
T mitsuba::dot ( const TVector3< T > &  v1,
const TVector3< T > &  v2 
)
inline
template<typename T >
T mitsuba::dot ( const TVector4< T > &  v1,
const TVector4< T > &  v2 
)
inline
bool mitsuba::eig3 ( Matrix3x3 &  m,
Float  lambda[3] 
)

Fast 3x3 eigenvalue decomposition.

Parameters
mMatrix in question – will be replaced with the eigenvectors
lambdaParameter used to returns the eigenvalues
Returns
true upon success.
void mitsuba::eig3_noniter ( Matrix3x3 &  m,
Float  lambda[3] 
)

Fast non-iterative 3x3 eigenvalue decomposition.

Parameters
mMatrix in question – will be replaced with the eigenvectors
lambdaParameter used to returns the eigenvalues
void mitsuba::gaussLegendre ( int  n,
Float nodes,
Float weights 
)

Computes the nodes and weights of a Gauss-Legendre quadrature (aka "Gaussian quadrature") rule with the given number of evaluations.

Integration is over the interval \([-1, 1]\). Gauss-Legendre quadrature maximizes the order of exactly integrable polynomials achieves this up to degree \(2n-1\) (where \(n\) is the number of function evaluations).

This method is numerically well-behaved until about \(n=200\) and then becomes progressively less accurate. It is generally not a good idea to go much higher—in any case, a composite or adaptive integration scheme will be superior for large \(n\).

Parameters
nDesired number of evalution points
nodesLength-n array used to store the nodes of the quadrature rule
nodesLength-n array used to store the weights of the quadrature rule
void mitsuba::gaussLobatto ( int  n,
Float nodes,
Float weights 
)

Computes the nodes and weights of a Gauss-Lobatto quadrature rule with the given number of evaluations.

Integration is over the interval \([-1, 1]\). Gauss-Lobatto quadrature is preferable to Gauss-Legendre quadrature whenever the endpoints of the integration domain should explicitly be included. It maximizes the order of exactly integrable polynomials subject to this constraint and achieves this up to degree \(2n-3\) (where \(n\) is the number of function evaluations).

This method is numerically well-behaved until about \(n=200\) and then becomes progressively less accurate. It is generally not a good idea to go much higher—in any case, a composite or adaptive integration scheme will be superior for large \(n\).

Parameters
nDesired number of evalution points
nodesLength-n array used to store the nodes of the quadrature rule
nodesLength-n array used to store the weights of the quadrature rule
size_t mitsuba::generateVPLs ( const Scene *  scene,
Random *  random,
size_t  offset,
size_t  count,
int  maxDepth,
bool  prune,
std::deque< VPL > &  vpls 
)

Generate a series of point light sources by sampling from the Halton sequence (as is done in Instant Radiosity). The parameter offset allows setting the initial QMC sample index (should be set to 0 if no offset is desired), and the last index is returned after the function finishes. This can be used to generate an arbitrary number of VPLs incrementally. Note that the value supplied with the parameter count is only a suggestion to the implementation. Generally, it will produce a few more VPLs than the requsted amount. After VPL generation is done, their power must be scaled by the inverse of the returned index. The implementation here also needs an pseudorandom number generator, which is used to prune VPLs in an unbiased manner.

float mitsuba::legendreP ( int  l,
float  x 
)

Evaluate the l-th Legendre polynomial using recurrence (single precision)

double mitsuba::legendreP ( int  l,
double  x 
)

Evaluate the l-th Legendre polynomial using recurrence (double precision)

float mitsuba::legendreP ( int  l,
int  m,
float  x 
)

Evaluate an associated Legendre polynomial using recurrence (single precision)

double mitsuba::legendreP ( int  l,
int  m,
double  x 
)

Evaluate an associated Legendre polynomial using recurrence (double precision)

std::pair<float, float> mitsuba::legendrePD ( int  l,
float  x 
)

Evaluate the l-th Legendre polynomial and its derivative using recurrence (single precision)

std::pair<double, double> mitsuba::legendrePD ( int  l,
double  x 
)

Evaluate the l-th Legendre polynomial and its derivative using recurrence (double precision)

Normal mitsuba::normalize ( const Normal &  n)
inline
template<typename T >
TVector1<T> mitsuba::normalize ( const TVector1< T > &  v)
inline
template<typename T >
TQuaternion<T> mitsuba::normalize ( const TQuaternion< T > &  q)
inline
template<typename T >
TVector2<T> mitsuba::normalize ( const TVector2< T > &  v)
inline
template<typename T >
TVector3<T> mitsuba::normalize ( const TVector3< T > &  v)
inline
template<typename T >
TVector4<T> mitsuba::normalize ( const TVector4< T > &  v)
inline
template<typename T >
TVector1<T> mitsuba::normalizeStrict ( const TVector1< T > &  v,
const char *  errMsg 
)
inline
template<typename T >
TVector2<T> mitsuba::normalizeStrict ( const TVector2< T > &  v,
const char *  errMsg 
)
inline
template<typename T >
TVector3<T> mitsuba::normalizeStrict ( const TVector3< T > &  v,
const char *  errMsg 
)
inline
template<typename T >
TVector4<T> mitsuba::normalizeStrict ( const TVector4< T > &  v,
const char *  errMsg 
)
inline
template<typename T >
TVector1<T> mitsuba::operator* ( f,
const TVector1< T > &  v 
)
inline
template<typename T >
TPoint1<T> mitsuba::operator* ( f,
const TPoint1< T > &  v 
)
inline
template<typename T >
TQuaternion<T> mitsuba::operator* ( f,
const TQuaternion< T > &  v 
)
inline
template<typename T >
TPoint2<T> mitsuba::operator* ( f,
const TPoint2< T > &  v 
)
inline
template<typename T >
TVector2<T> mitsuba::operator* ( f,
const TVector2< T > &  v 
)
inline
template<typename T >
TPoint3<T> mitsuba::operator* ( f,
const TPoint3< T > &  v 
)
inline
template<typename T >
TVector3<T> mitsuba::operator* ( f,
const TVector3< T > &  v 
)
inline
template<typename T , int M1, int N1, int M2, int N2>
Matrix<M1, N2, T> mitsuba::operator* ( const Matrix< M1, N1, T > &  mat1,
const Matrix< M2, N2, T > &  mat2 
)
inline

Matrix multiplication (creates a temporary)

template<typename T , int M, int N>
Matrix<M, N, T> mitsuba::operator* ( f,
const Matrix< M, N, T > &  m 
)
inline
template<typename T >
TPoint4<T> mitsuba::operator* ( f,
const TPoint4< T > &  v 
)
inline
template<typename T >
TVector4<T> mitsuba::operator* ( f,
const TVector4< T > &  v 
)
inline
std::ostream& mitsuba::operator<< ( std::ostream &  os,
const Mutator::EMutationType &  type 
)
std::ostream& mitsuba::operator<< ( std::ostream &  os,
const ReconstructionFilter::EBoundaryCondition &  value 
)
void mitsuba::pushSceneCleanupHandler ( void(*)()  cleanup)

Push a cleanup handler to be executed after loading the scene is done.

FINLINE __m128 mitsuba::rayIntersectPacket ( const TriAccel &  tri,
const RayPacket4 &  packet,
__m128  mint,
__m128  maxt,
__m128  inactive,
Intersection4 &  its 
)
template<typename T >
TQuaternion<T> mitsuba::slerp ( const TQuaternion< T > &  q1,
const TQuaternion< T > &  _q2,
Float  t 
)
inline