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

Veach-style Lens subpath perturbation strategy. More...

#include <mitsuba/bidir/mut_lens.h>

+ Inheritance diagram for mitsuba::LensPerturbation:

Public Member Functions

 LensPerturbation (const Scene *scene, Sampler *sampler, MemoryPool &pool, Float minJump, Float coveredArea)
 Construct a new lens perturbation strategy. More...
 
virtual const ClassgetClass () const
 Retrieve this object's class. More...
 
Implementation of the Mutator interface
EMutationType getType () const
 What kind of mutations does this mutator perform? More...
 
Float suitability (const Path &path) const
 Determine the general "suitability" of this mutator for a given kind of path. More...
 
bool sampleMutation (Path &source, Path &proposal, MutationRecord &muRec, const MutationRecord &sourceMuRec)
 Given a path, this function produces a new proposal according to the internally implemented mutation strategy. More...
 
Float Q (const Path &source, const Path &proposal, const MutationRecord &muRec) const
 For a pair of paths, this function computes the inverse transition probability (matching the Q term in [Veach 97]) More...
 
void accept (const MutationRecord &muRec)
 Record an accepted mutation. 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::MutatorBase
static Classm_theClass
 
- Static Public Attributes inherited from mitsuba::Mutator
static Classm_theClass
 
- Static Public Attributes inherited from Object
static Classm_theClass
 Pointer to the object's class descriptor. More...
 

Protected Member Functions

virtual ~LensPerturbation ()
 Virtual destructor. More...
 
- Protected Member Functions inherited from mitsuba::MutatorBase
 MutatorBase ()
 Protected constructor. More...
 
virtual ~MutatorBase ()
 Virtual destructor. More...
 
Float perturbMediumDistance (Sampler *sampler, const PathVertex *vertex)
 Perturb a distance within a medium. More...
 
Float pdfMediumPerturbation (const PathVertex *oldVertex, const PathEdge *oldEdge, const PathEdge *newEdge) const
 Density function of perturbMediumDistance. More...
 
- Protected Member Functions inherited from mitsuba::Mutator
virtual ~Mutator ()
 Virtual destructor. More...
 
- Protected Member Functions inherited from Object
virtual ~Object ()
 Virtual private deconstructor. (Will only be called by ref) More...
 

Protected Attributes

ref< const Scenem_scene
 
ref< Samplerm_sampler
 
MemoryPoolm_pool
 
Vector2 m_filmRes
 
Float m_r1
 
Float m_r2
 
Float m_logRatio
 
Float m_imagePlaneArea
 
- Protected Attributes inherited from mitsuba::MutatorBase
Float m_mediumDensityMultiplier
 

Additional Inherited Members

- Public Types inherited from mitsuba::Mutator
enum  EMutationType {
  EBidirectionalMutation = 0, ELensPerturbation, ELensSubpathMutation, EIndependentMutation,
  ECausticPerturbation, EMultiChainPerturbation, EManifoldPerturbation, EMutationTypeCount
}
 Specifies the type of mutation implemented by the mutator. More...
 
- 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...
 

Detailed Description

Veach-style Lens subpath perturbation strategy.

This class implements a simple lens perturbation strategy as described in Eric Veach's PhD thesis.

Author
Wenzel Jakob

Constructor & Destructor Documentation

mitsuba::LensPerturbation::LensPerturbation ( const Scene scene,
Sampler sampler,
MemoryPool pool,
Float  minJump,
Float  coveredArea 
)

Construct a new lens perturbation strategy.

Parameters
sceneA pointer to the underlying scene
samplerA sample generator
poolA memory pool used to allocate new path vertices and edges
minJumpMinimum jump distance in fractional pixel coordinates
coveredAreaApproximate fractional image plane area that is reachable using the lens perturbation
virtual mitsuba::LensPerturbation::~LensPerturbation ( )
protectedvirtual

Virtual destructor.

Member Function Documentation

void mitsuba::LensPerturbation::accept ( const MutationRecord muRec)
virtual

Record an accepted mutation.

This function exists to allow mutators to track their acceptance rate and other statistics.

Implements mitsuba::Mutator.

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

Retrieve this object's class.

Reimplemented from mitsuba::MutatorBase.

EMutationType mitsuba::LensPerturbation::getType ( ) const
virtual

What kind of mutations does this mutator perform?

Implements mitsuba::Mutator.

Float mitsuba::LensPerturbation::Q ( const Path source,
const Path proposal,
const MutationRecord muRec 
) const
virtual

For a pair of paths, this function computes the inverse transition probability (matching the Q term in [Veach 97])

Parameters
sourceA path data structure containing the original path
proposalA path data structure containing the proposed mutated path
muRecData record that describes the mutation strategy, which transformed source to proposal.

Implements mitsuba::Mutator.

bool mitsuba::LensPerturbation::sampleMutation ( Path source,
Path proposal,
MutationRecord muRec,
const MutationRecord sourceMuRec 
)
virtual

Given a path, this function produces a new proposal according to the internally implemented mutation strategy.

Parameters
sourceThe sampling strategy implemented by the mutator will condition on this path.
proposalPath data structure to be filled with the proposed mutated path
muRecData record that describes the sampled mutation strategy
sourceMuRecData record that describes the last successful mutation strategy (for the source path)
Returns
true upon success. When the sampling step is unsuccessful (this could happen due to various reasons), the function returns false.

Implements mitsuba::Mutator.

Float mitsuba::LensPerturbation::suitability ( const Path path) const
virtual

Determine the general "suitability" of this mutator for a given kind of path.

Implements mitsuba::Mutator.

Member Data Documentation

Vector2 mitsuba::LensPerturbation::m_filmRes
protected
Float mitsuba::LensPerturbation::m_imagePlaneArea
protected
Float mitsuba::LensPerturbation::m_logRatio
protected
MemoryPool& mitsuba::LensPerturbation::m_pool
protected
Float mitsuba::LensPerturbation::m_r1
protected
Float mitsuba::LensPerturbation::m_r2
protected
ref<Sampler> mitsuba::LensPerturbation::m_sampler
protected
ref<const Scene> mitsuba::LensPerturbation::m_scene
protected
Class* mitsuba::LensPerturbation::m_theClass
static

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