Mitsuba Renderer  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mitsuba::Integrator Class Referenceabstract

Abstract integrator base-class; does not make any assumptions on how radiance is computed. More...

#include <mitsuba/render/integrator.h>

+ Inheritance diagram for mitsuba::Integrator:

Public Member Functions

virtual bool preprocess (const Scene *scene, RenderQueue *queue, const RenderJob *job, int sceneResID, int sensorResID, int samplerResID)
 Possibly perform a pre-process task. More...
 
virtual bool render (Scene *scene, RenderQueue *queue, const RenderJob *job, int sceneResID, int sensorResID, int samplerResID)=0
 Render the scene as seen by the default sensor. More...
 
virtual void cancel ()=0
 Cancel a running render job. More...
 
virtual void postprocess (const Scene *scene, RenderQueue *queue, const RenderJob *job, int sceneResID, int sensorResID, int samplerResID)
 Possibly perform a post-process task. More...
 
virtual void configureSampler (const Scene *scene, Sampler *sampler)
 Configure the sample generator for use with this integrator. More...
 
virtual const IntegratorgetSubIntegrator (int index) const
 Return the nested integrator (if any) More...
 
void serialize (Stream *stream, InstanceManager *manager) const
 Serialize this integrator to a binary data stream. More...
 
virtual const ClassgetClass () const
 Retrieve this object's class. More...
 
- Public Member Functions inherited from mitsuba::NetworkedObject
virtual void bindUsedResources (ParallelProcess *proc) const
 Bind any used resources to the process proc. More...
 
virtual void wakeup (ConfigurableObject *parent, std::map< std::string, SerializableObject * > &params)
 Retrieve any required resources. More...
 
- Public Member Functions inherited from mitsuba::ConfigurableObject
virtual void setParent (ConfigurableObject *parent)
 Notify the ConfigurableObject instance about its parent object. More...
 
virtual void addChild (const std::string &name, ConfigurableObject *child)
 Add a child (default implementation throws an error) More...
 
void addChild (ConfigurableObject *child)
 Add an unnamed child. More...
 
virtual void configure ()
 Configure the object (called once after construction and addition of all child ConfigurableObject instances)) More...
 
const std::string & getID () const
 Return the identifier associated with this instance (or "unnamed") More...
 
void setID (const std::string &name)
 Set the identifier associated with this instance. More...
 
const PropertiesgetProperties () const
 Return the properties object that was originally used to create this instance. More...
 
- Public Member Functions inherited from mitsuba::SerializableObject
 SerializableObject (Stream *stream, InstanceManager *manager)
 Unserialize a serializable object. More...
 
- Public Member Functions inherited from Object
 Object ()
 Construct a new object. More...
 
int getRefCount () const
 Return the current reference count. More...
 
void incRef () const
 Increase the reference count of the object by one. More...
 
void decRef (bool autoDeallocate=true) const
 Decrease the reference count of the object and possibly deallocate it. More...
 
virtual std::string toString () const
 Return a human-readable string representation of the object's contents. More...
 

Static Public Attributes

static Classm_theClass
 
- Static Public Attributes inherited from mitsuba::NetworkedObject
static Classm_theClass
 
- Static Public Attributes inherited from mitsuba::ConfigurableObject
static Classm_theClass
 
- Static Public Attributes inherited from mitsuba::SerializableObject
static Classm_theClass
 
- Static Public Attributes inherited from Object
static Classm_theClass
 Pointer to the object's class descriptor. More...
 

Protected Member Functions

 Integrator (const Properties &props)
 Create a integrator. More...
 
 Integrator (Stream *stream, InstanceManager *manager)
 Unserialize an integrator. More...
 
virtual ~Integrator ()
 Virtual destructor. More...
 
- Protected Member Functions inherited from mitsuba::NetworkedObject
virtual ~NetworkedObject ()
 Virtual destructor. More...
 
 NetworkedObject (const Properties &props)
 Constructor. More...
 
 NetworkedObject (Stream *stream, InstanceManager *manager)
 Unserialize a configurable object. More...
 
- Protected Member Functions inherited from mitsuba::ConfigurableObject
virtual ~ConfigurableObject ()
 Virtual destructor. More...
 
 ConfigurableObject (const Properties &props)
 Construct a configurable object. More...
 
 ConfigurableObject (Stream *stream, InstanceManager *manager)
 Unserialize a configurable object. More...
 
- Protected Member Functions inherited from mitsuba::SerializableObject
 SerializableObject ()
 Construct a serializable object. More...
 
virtual ~SerializableObject ()
 Virtual deconstructor. More...
 
- Protected Member Functions inherited from Object
virtual ~Object ()
 Virtual private deconstructor. (Will only be called by ref) More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Object
static void staticInitialization ()
 Initializes the built-in reference count debugger (if enabled) More...
 
static void staticShutdown ()
 Free the memory taken by staticInitialization() More...
 
- Protected Attributes inherited from mitsuba::ConfigurableObject
Properties m_properties
 

Detailed Description

Abstract integrator base-class; does not make any assumptions on how radiance is computed.

In Mitsuba, the different rendering techniques are collectively referred to as integrators, since they perform integration over a high-dimensional space. Each integrator represents a specific approach for solving the light transport equation—usually favored in certain scenarios, but at the same time affected by its own set of intrinsic limitations. Therefore, it is important to carefully select an integrator based on user-specified accuracy requirements and properties of the scene to be rendered.

This is the base class of all integrators; it does not make any assumptions on how radiance is computed, which allows for many different kinds of implementations ranging from software-based path tracing and Markov-Chain based techniques such as Metropolis Light Transport up to hardware-accelerated rasterization.

Constructor & Destructor Documentation

mitsuba::Integrator::Integrator ( const Properties props)
protected

Create a integrator.

mitsuba::Integrator::Integrator ( Stream stream,
InstanceManager manager 
)
protected

Unserialize an integrator.

virtual mitsuba::Integrator::~Integrator ( )
inlineprotectedvirtual

Virtual destructor.

Member Function Documentation

virtual void mitsuba::Integrator::cancel ( )
pure virtual

Cancel a running render job.

This function can be called asynchronously to cancel a running render job. In this case, render() will quit with a return value of false.

Implemented in mitsuba::SamplingIntegrator.

virtual void mitsuba::Integrator::configureSampler ( const Scene scene,
Sampler sampler 
)
virtual

Configure the sample generator for use with this integrator.

This function is called once after instantiation and can be used to inform the sampler implementation about specific sample requirements of this integrator.

virtual const Class* mitsuba::Integrator::getClass ( ) const
virtual

Retrieve this object's class.

Reimplemented from mitsuba::NetworkedObject.

Reimplemented in mitsuba::MonteCarloIntegrator, and mitsuba::SamplingIntegrator.

virtual const Integrator* mitsuba::Integrator::getSubIntegrator ( int  index) const
virtual

Return the nested integrator (if any)

When the integrator contains a nested integrator, this function can be used to query for it

virtual void mitsuba::Integrator::postprocess ( const Scene scene,
RenderQueue queue,
const RenderJob job,
int  sceneResID,
int  sensorResID,
int  samplerResID 
)
virtual

Possibly perform a post-process task.

This function is called automatically before the main rendering process; the default implementation does nothing.

The last three parameters are resource IDs of the associated scene, sensor and sample generator, which have been made available to all local and remote workers.i

virtual bool mitsuba::Integrator::preprocess ( const Scene scene,
RenderQueue queue,
const RenderJob job,
int  sceneResID,
int  sensorResID,
int  samplerResID 
)
virtual

Possibly perform a pre-process task.

This function is called automatically before the main rendering process; the default implementation does nothing.

The last three parameters are resource IDs of the associated scene, sensor and sample generator, which have been made available to all local and remote workers.i

virtual bool mitsuba::Integrator::render ( Scene scene,
RenderQueue queue,
const RenderJob job,
int  sceneResID,
int  sensorResID,
int  samplerResID 
)
pure virtual

Render the scene as seen by the default sensor.

Progress is tracked by sending status messages to a provided render queue. The parameter job is required to discern multiple render jobs occurring in parallel. The last three parameters are resource IDs of the associated scene, sensor and sample generator, which have been made available to all local and remote workers. Returns true upon successful completion.

Implemented in mitsuba::SamplingIntegrator.

void mitsuba::Integrator::serialize ( Stream stream,
InstanceManager manager 
) const
virtual

Serialize this integrator to a binary data stream.

Reimplemented from mitsuba::NetworkedObject.

Reimplemented in mitsuba::MonteCarloIntegrator, and mitsuba::SamplingIntegrator.

Member Data Documentation

Class* mitsuba::Integrator::m_theClass
static

The documentation for this class was generated from the following file: