20 #if !defined(__MITSUBA_BIDIR_MUT_MANIFOLD_H_)
21 #define __MITSUBA_BIDIR_MUT_MANIFOLD_H_
27 #define MTS_MANIFOLD_QUANTILE_SURFACE 0.9f
28 #define MTS_MANIFOLD_QUANTILE_MEDIUM 0.5f
53 bool enableOffsetManifolds,
54 bool enableSpecularMedia,
55 Float avgAngleChangeSurface = 0,
56 Float avgAngleChangeMedium = 0);
78 bool sampleMutationRecord(const
Path &source,
79 int &a,
int &b,
int &c,
int &step);
81 Float nonspecularProbSurface(
Float alpha) const;
86 return 1 - nonspecularProb(vertex);
89 int getSpecularChainEnd(
const Path &path,
int pos,
int step);
static Float m_thetaDiffSurface
Definition: mut_manifold.h:98
bool m_enableSpecularMedia
Definition: mut_manifold.h:97
Medium-aware mutator base class.
Definition: mutator.h:143
Bidirectional path vertex data structure.
Definition: vertex.h:48
Stores supplemental information about an executed mutation strategy.
Definition: mutator.h:115
virtual void accept(const MutationRecord &muRec)=0
Record an accepted mutation.
ref< SpecularManifold > m_manifold
Definition: mut_manifold.h:93
Specular manifold perturbation strategy.
Definition: mut_manifold.h:36
bool m_enableOffsetManifolds
Definition: mut_manifold.h:96
Principal scene data structure.
Definition: scene.h:49
MemoryPool & m_pool
Definition: mut_manifold.h:94
Float m_probFactor2
Definition: mut_manifold.h:95
Base class of all sample generators.
Definition: sampler.h:66
Bidirectional path data structure.
Definition: path.h:46
static int m_thetaDiffSurfaceSamples
Definition: mut_manifold.h:100
ref< const Scene > m_scene
Definition: mut_manifold.h:91
static int m_thetaDiffMediumSamples
Definition: mut_manifold.h:101
static Mutex * m_thetaDiffMutex
Definition: mut_manifold.h:102
virtual Float Q(const Path &source, const Path &proposal, const MutationRecord &muRec) const =0
For a pair of paths, this function computes the inverse transition probability (matching the Q term i...
static Float m_thetaDiffMedium
Definition: mut_manifold.h:99
virtual bool sampleMutation(Path &source, Path &proposal, MutationRecord &muRec, const MutationRecord &sourceMuRec)=0
Given a path, this function produces a new proposal according to the internally implemented mutation ...
virtual EMutationType getType() const =0
What kind of mutations does this mutator perform?
EMutationType
Specifies the type of mutation implemented by the mutator.
Definition: mutator.h:36
#define MTS_DECLARE_CLASS()
This macro must be used in the initial definition in classes that derive from Object.
Definition: class.h:158
Reference counting helper.
Definition: ref.h:40
virtual Float suitability(const Path &path) const =0
Determine the general "suitability" of this mutator for a given kind of path.
ref< Sampler > m_sampler
Definition: mut_manifold.h:92
Thin wrapper around the recursive boost thread lock.
Definition: lock.h:34