Specular manifold perturbation strategy. More...
#include <mitsuba/bidir/mut_manifold.h>
Inheritance diagram for mitsuba::ManifoldPerturbation:Public Member Functions | |
| ManifoldPerturbation (const Scene *scene, Sampler *sampler, MemoryPool &pool, Float probFactor, bool enableOffsetManifolds, bool enableSpecularMedia, Float avgAngleChangeSurface=0, Float avgAngleChangeMedium=0) | |
| Construct a new specular manifold perturbation strategy. More... | |
| virtual const Class * | getClass () 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 Class * | m_theClass |
Static Public Attributes inherited from mitsuba::MutatorBase | |
| static Class * | m_theClass |
Static Public Attributes inherited from mitsuba::Mutator | |
| static Class * | m_theClass |
Static Public Attributes inherited from Object | |
| static Class * | m_theClass |
| Pointer to the object's class descriptor. More... | |
Protected Member Functions | |
| virtual | ~ManifoldPerturbation () |
| Virtual destructor. More... | |
| bool | sampleMutationRecord (const Path &source, int &a, int &b, int &c, int &step) |
| Helper function for choosing mutation strategies. More... | |
| Float | nonspecularProbSurface (Float alpha) const |
| Float | nonspecularProbMedium (Float g) const |
| Float | nonspecularProb (const PathVertex *vertex) const |
| Float | specularProb (const PathVertex *vertex) const |
| int | getSpecularChainEnd (const Path &path, int pos, int step) |
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 Scene > | m_scene |
| ref< Sampler > | m_sampler |
| ref< SpecularManifold > | m_manifold |
| MemoryPool & | m_pool |
| Float | m_probFactor |
| Float | m_probFactor2 |
| bool | m_enableOffsetManifolds |
| bool | m_enableSpecularMedia |
Protected Attributes inherited from mitsuba::MutatorBase | |
| Float | m_mediumDensityMultiplier |
Static Protected Attributes | |
| static Float | m_thetaDiffSurface |
| static Float | m_thetaDiffMedium |
| static int | m_thetaDiffSurfaceSamples |
| static int | m_thetaDiffMediumSamples |
| static Mutex * | m_thetaDiffMutex |
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... | |
Specular manifold perturbation strategy.
| mitsuba::ManifoldPerturbation::ManifoldPerturbation | ( | const Scene * | scene, |
| Sampler * | sampler, | ||
| MemoryPool & | pool, | ||
| Float | probFactor, | ||
| bool | enableOffsetManifolds, | ||
| bool | enableSpecularMedia, | ||
| Float | avgAngleChangeSurface = 0, |
||
| Float | avgAngleChangeMedium = 0 |
||
| ) |
Construct a new specular manifold perturbation strategy.
| scene | A pointer to the underlying scene |
| sampler | A sample generator |
| pool | A memory pool used to allocate new path vertices and edges |
|
protectedvirtual |
Virtual destructor.
|
virtual |
Record an accepted mutation.
This function exists to allow mutators to track their acceptance rate and other statistics.
Implements mitsuba::Mutator.
|
virtual |
Retrieve this object's class.
Reimplemented from mitsuba::MutatorBase.
|
protected |
|
virtual |
What kind of mutations does this mutator perform?
Implements mitsuba::Mutator.
|
protected |
|
virtual |
For a pair of paths, this function computes the inverse transition probability (matching the Q term in [Veach 97])
| source | A path data structure containing the original path |
| proposal | A path data structure containing the proposed mutated path |
| muRec | Data record that describes the mutation strategy, which transformed source to proposal. |
Implements mitsuba::Mutator.
|
virtual |
Given a path, this function produces a new proposal according to the internally implemented mutation strategy.
| source | The sampling strategy implemented by the mutator will condition on this path. |
| proposal | Path data structure to be filled with the proposed mutated path |
| muRec | Data record that describes the sampled mutation strategy |
| sourceMuRec | Data record that describes the last successful mutation strategy (for the source path) |
false. Implements mitsuba::Mutator.
|
protected |
Helper function for choosing mutation strategies.
|
inlineprotected |
Determine the general "suitability" of this mutator for a given kind of path.
Implements mitsuba::Mutator.
|
protected |
|
protected |
|
mutableprotected |
|
protected |
|
protected |
|
protected |
|
static |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
staticprotected |