20 #if !defined(__MITSUBA_RENDER_INTEGRATOR_H_)
21 #define __MITSUBA_RENDER_INTEGRATOR_H_
62 const RenderJob *job,
int sceneResID,
int sensorResID,
75 int sceneResID,
int sensorResID,
int samplerResID) = 0;
84 virtual void cancel() = 0;
97 const RenderJob *job,
int sceneResID,
int sensorResID,
107 virtual void configureSampler(
const Scene *scene,
Sampler *sampler);
115 virtual const Integrator *getSubIntegrator(
int index)
const;
141 EEmittedRadiance = 0x0001,
144 ESubsurfaceRadiance = 0x0002,
147 EDirectSurfaceRadiance = 0x0004,
151 EIndirectSurfaceRadiance = 0x0008,
155 ECausticRadiance = 0x0010,
158 EDirectMediumRadiance = 0x0020,
161 EIndirectMediumRadiance = 0x0040,
174 EIntersection = 0x0200,
177 EVolumeRadiance = EDirectMediumRadiance | EIndirectMediumRadiance,
180 ERadianceNoEmission = ESubsurfaceRadiance | EDirectSurfaceRadiance
181 | EIndirectSurfaceRadiance | ECausticRadiance | EDirectMediumRadiance
182 | EIndirectMediumRadiance | EIntersection,
196 EAdaptiveQuery = 0x02
201 : type(0), scene(NULL), sampler(NULL), medium(NULL),
202 depth(0), alpha(0), dist(-1), extra(0) {
207 : type(0), scene(scene), sampler(sampler), medium(NULL),
208 depth(0), alpha(0), dist(-1), extra(0) {
213 : type(rRec.type), scene(rRec.scene), sampler(rRec.sampler), medium(rRec.medium),
214 depth(rRec.depth), alpha(rRec.alpha), dist(rRec.dist), extra(rRec.extra) {
229 scene = parent.
scene;
231 depth = parent.
depth+1;
233 extra = parent.
extra;
238 type = parent.
type | EIntersection;
239 scene = parent.
scene;
241 depth = parent.
depth+1;
243 extra = parent.
extra;
265 inline Point2 nextSample2D();
268 inline Float nextSample1D();
271 std::string toString()
const;
349 bool includeIndirect)
const;
363 int sceneResID,
int sensorResID,
int samplerResID);
393 virtual void renderBlock(
const Scene *scene,
const Sensor *sensor,
418 std::map<std::string, SerializableObject *> ¶ms);
RadianceQueryRecord()
Construct an invalid radiance query record.
Definition: integrator.h:200
Abstract participating medium.
Definition: medium.h:103
int extra
Definition: integrator.h:308
Generic serializable object, which supports construction from a Properties instance.
Definition: cobject.h:40
int depth
Current depth value (# of light bounces) (*)
Definition: integrator.h:289
virtual void cancel()=0
Cancel a running render job.
int m_maxDepth
Definition: integrator.h:458
Sampler * sampler
Sample generator.
Definition: integrator.h:283
void recursiveQuery(const RadianceQueryRecord &parent)
Initialize the query record for a recursive query.
Definition: integrator.h:237
RadianceQueryRecord(const RadianceQueryRecord &rRec)
Copy constructor.
Definition: integrator.h:212
virtual void bindUsedResources(ParallelProcess *proc) const
Bind any used resources to the process proc.
Principal scene data structure.
Definition: scene.h:49
Render queue - used to keep track of a number of scenes that are simultaneously being rendered...
Definition: renderqueue.h:65
Abstract sensor interface.
Definition: sensor.h:66
Base class of all sample generators.
Definition: sampler.h:66
int m_rrDepth
Definition: integrator.h:459
ERadianceQuery
List of suported query types. These can be combined by a binary OR.
Definition: integrator.h:139
void serialize(Stream *stream, InstanceManager *manager) const
Serialize this integrator to a binary data stream.
Abstract parallelizable task.
Definition: sched.h:197
void newQuery(int _type, const Medium *_medium)
Begin a new query of the given type.
Definition: integrator.h:218
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.
ref< ParallelProcess > m_process
Used to temporarily cache a parallel process while it is in operation.
Definition: integrator.h:435
const Scene * scene
Pointer to the associated scene.
Definition: integrator.h:280
Radiance query record data structure used by SamplingIntegrator.
Definition: integrator.h:136
EExtraFlags
Additional flags that can be specified in the extra field.
Definition: integrator.h:192
Ray differential – enhances the basic ray class with information about the rays of adjacent pixels on...
Definition: ray.h:140
Parameterizable two-dimensional point data structure.
Definition: point.h:222
Intersection its
Surface interaction data structure (*)
Definition: integrator.h:292
int type
Query type (*)
Definition: integrator.h:277
Abstract seekable stream class.
Definition: stream.h:58
#define MTS_DECLARE_CLASS()
This macro must be used in the initial definition in classes that derive from Object.
Definition: class.h:158
const Medium * medium
Pointer to the current medium (*)
Definition: integrator.h:286
Reference counting helper.
Definition: ref.h:40
virtual void wakeup(ConfigurableObject *parent, std::map< std::string, SerializableObject * > ¶ms)
Retrieve any required resources.
virtual void serialize(Stream *stream, InstanceManager *manager) const
Serialize this object to a stream.
Storage for an image sub-block (a.k.a render bucket)
Definition: imageblock.h:40
Definition: integrator.h:444
Abstract interface for objects that reference shared network resources.
Definition: netobject.h:40
Abstract integrator base-class; does not make any assumptions on how radiance is computed.
Definition: integrator.h:49
Abstract base class, which describes integrators capable of computing samples of the scene's radiance...
Definition: integrator.h:315
void serialize(Stream *stream, InstanceManager *manager) const
Serialize this integrator to a binary data stream.
Coordinates the process of rendering a single image.
Definition: renderjob.h:37
Associative parameter map for constructing subclasses of ConfigurableObject.
Definition: properties.h:46
Container for all information related to a surface intersection.
Definition: shape.h:36
Coordinates the serialization and unserialization of object graphs.
Definition: serialization.h:65
bool m_hideEmitters
Definition: integrator.h:461
bool m_strictNormals
Definition: integrator.h:460
Discrete spectral power distribution based on a number of wavelength bins over the 360-830 nm range...
Definition: spectrum.h:663
Float alpha
Opacity value of the associated pixel (*)
Definition: integrator.h:295
Radiance transport.
Definition: common.h:38
Float dist
Definition: integrator.h:301
void recursiveQuery(const RadianceQueryRecord &parent, int _type)
Initialize the query record for a recursive query.
Definition: integrator.h:227
RadianceQueryRecord(const Scene *scene, Sampler *sampler)
Construct a radiance query record for the given scene and sampler.
Definition: integrator.h:206