1111 lines
61 KiB
XML
1111 lines
61 KiB
XML
<?xml version="1.0"?>
|
|
<documentation version="2.0.2">
|
|
<plugin type="scene" className="Scene">
|
|
<shortDescr>Scene root element</shortDescr>
|
|
<descr>Tweaking the kd-tree construction parameters is generally not required.</descr>
|
|
<param name="testType" type="string" default="t-test">
|
|
When test case mode is active (Mitusba is started with the -t parameter), this specifies the type of test performed.
|
|
Mitsuba will expect a reference solution file of the name <tt><sceneName>.ref</tt>.
|
|
When set to <tt>t-test</tt>, a two-sided t-test on equality to the reference will be performed at the (1 - <tt>testThresh</tt>) level (99% by default).
|
|
When set to <tt>relerr</tt>, the test will fail if the relative error exceeds <tt>testThresh</tt>.
|
|
</param>
|
|
<param name="testThresh" type="float" default="0.01">Error threshold for use with <tt>testType</tt></param>
|
|
<param name="importanceSampleLuminaires" type="boolean" default="true">By default, luminaire sampling chooses a luminaire with a probability dependent on the emitted power. Setting this parameter to false switches to uniform sampling.</param>
|
|
<param name="kdClip" type="boolean" default="true">kd-tree construction: Enable primitive clipping? Generally leads to a significant improvement of the resulting tree.</param>
|
|
<param name="kdIntersectionCost" type="float" default="20">kd-tree construction: Relative cost of a triangle intersection operation in the surface area heuristic.</param>
|
|
<param name="kdTraversalCost" type="float" default="15">kd-tree construction: Relative cost of a kd-tree traversal operation in the surface area heuristic.</param>
|
|
<param name="kdEmptyBonus" type="float" default="0.8">kd-tree construction: Bonus factor for cutting away regions of empty space</param>
|
|
<param name="kdStopPrims" type="integer" default="8">kd-tree construction: A kd-tree node containing this many or fewer primitives will not be split</param>
|
|
<child type="integrator" count="1">Requires an integrator</child>
|
|
<child type="camera" count="1">Requires a camera</child>
|
|
<child type="luminaire" count="+">Requires one or more luminaires</child>
|
|
<child type="shape" count="+">Requires one or more shapes</child>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" className="SampleIntegrator" abstract="true">
|
|
<shortDescr>Base class of all sampling-based integrators</shortDescr>
|
|
<descr>Base class of all sampling-based integrators</descr>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" className="MonteCarloIntegrator" abstract="true" extends="SampleIntegrator">
|
|
<shortDescr>Base class of recursive MC integrators</shortDescr>
|
|
<descr>
|
|
Base class of all recursive Monte Carlo integrators, which compute
|
|
unbiased solutions to the rendering equation (and optionally
|
|
the radiative transfer equation).
|
|
</descr>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="-1">
|
|
Longest visualized path length (<tt>-1</tt>=infinite).
|
|
A value of <tt>1</tt> will visualize only directly visible light sources.
|
|
<tt>2</tt> will lead to single-bounce (direct-only) illumination, and so on.
|
|
</param>
|
|
<param name="rrDepth" readableName="Russian Roulette starting depth" type="integer" default="10" importance="1">
|
|
Depth to start using russian roulette
|
|
</param>
|
|
<param name="strictNormals" readableName="Strict surface normals" type="boolean" default="false" importance="1">
|
|
<p>
|
|
This parameter specifies the action to be taken when the geometric
|
|
and shading normals of a surface inconsistently classify a ray as
|
|
being located *both* on the front and back-side.
|
|
</p>
|
|
<p>
|
|
When <tt>strictNormals</tt> is set to <tt>false</tt>, the shading normal has
|
|
precedence, and rendering proceeds normally at the risk of
|
|
introducing small light leaks (this is the default).
|
|
</p>
|
|
<p>
|
|
When <tt>strictNormals</tt> is set to <tt>true</tt>, the random walk is
|
|
terminated when encountering such a situation. This may
|
|
produce black silhouette edges on badly tesselated meshes.
|
|
</p>
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="irrcache" readableName="Irradiance cache"
|
|
className="IrradianceCacheIntegrator">
|
|
<descr>
|
|
Irradiance caching integrator - forwards all radiance computations
|
|
to an arbitrary nested sampling-based integrator - with one exception:
|
|
whenever a Lambertian surface is intersected, an internal irradiance
|
|
cache is queried for the indirect illumination at the surface position in
|
|
question. If this query is successful, the sub-integrator is only
|
|
used to compute the remaining types of radiance (direct, in-scatter,
|
|
emission) and their sum is returned afterwards.
|
|
When a query is unsuccessful, a new data point is generated by a final
|
|
gathering step.
|
|
|
|
The generality of this implementation allows it to be used in conjunction
|
|
with photon mapping (the most likely application) as well as all other
|
|
sampling-based integrators in Mitsuba. Several optimizations are used to
|
|
improve the achieved interpolation quality, namely irradiance gradients
|
|
[Ward et al.], neighbor clamping [Krivanek et al.], a screen-space
|
|
clamping metric and an improved error function [Tabellion et al.].
|
|
By default, this integrator also performs a distributed overture pass before
|
|
rendering, which is recommended to avoid artifacts resulting from the
|
|
addition of samples as rendering proceeds.
|
|
</descr>
|
|
<param name="resolution" readableName="Final Gather resolution" type="integer" default="14">
|
|
Elevational resolution of the stratified final gather hemisphere.
|
|
The azimuthal resolution is three times this value. Default: <tt>14</tt>, which
|
|
leads to <tt>14x(3*14)=588</tt> samples
|
|
</param>
|
|
<param name="overture" readableName="Overture pass" type="boolean" default="true">
|
|
If set to true, the irradiance cache will be filled by a
|
|
parallel overture pass before the main rendering process starts.
|
|
This is strongly recommended.
|
|
</param>
|
|
<param name="quality" readableName="Quality" type="float" default="1">
|
|
Quality setting (\kappa in the [Tabellion et al.] paper).
|
|
A value of 1 should be adequate in most cases.
|
|
</param>
|
|
<param name="gradients" readableName="Irradiance gradients" type="boolean" default="true">
|
|
Should irradiance gradients be used? Generally, this will
|
|
significantly improve the interpolation quality.
|
|
</param>
|
|
<param name="clampNeighbor" readableName="Neighbor clamping" type="boolean" default="true">
|
|
Should neighbor clamping [Krivanek et al.] be used? This
|
|
propagates geometry information amongst close-by samples
|
|
and generally leads to better sample placement.
|
|
</param>
|
|
<param name="clampScreen" readableName="Screen-space clamping" type="boolean" default="true">
|
|
If set to true, the influence region of samples will be clamped
|
|
using the screen-space metric by [Tabellion et al.]?
|
|
Turning this off may lead to excessive sample placement.
|
|
</param>
|
|
<param name="qualityAdjustment" readableName="Quality adjustment" type="float" default=".5">
|
|
Multiplicative factor for the quality parameter following an
|
|
overture pass. This can be used to interpolate amongst more
|
|
samples, creating a visually smoother result. Must be
|
|
1 or less.
|
|
</param>
|
|
<param name="debug" readableName="Show sample placement" type="boolean" default="false">
|
|
If set to true, sample locations are visually highlighted as they are generated.
|
|
This won't show samples generated during a separate overture pass, so be sure to turn it off
|
|
if you want to see all of the sample locations.
|
|
</param>
|
|
<param name="influenceMin" readableName="Min. influence region" type="float" default="0.005">
|
|
Minimum influence region of an irradiance sample (relative to scene size, in <tt>[0,1]</tt>)
|
|
</param>
|
|
<param name="influenceMax" readableName="Max. influence region" type="float" default="0.32">
|
|
Maximum influence region of an irradiance sample (default=64*min)
|
|
</param>
|
|
<param name="direct" readableName="Include direct illumination" type="boolean" default="true">
|
|
If set to false, direct illumination will be suppressed -
|
|
useful for checking the interpolation quality
|
|
</param>
|
|
<child type="integrator" count="1" extends="SampleIntegrator">Requires a sampling-based sub-integrator</child>
|
|
<example>
|
|
<integrator type="irrcache">
|
|
<!-- Single-bounce GI on diffuse surfaces, generate debug output -->
|
|
<boolean name="debug" value="true"/>
|
|
<boolean name="direct" value="false"/>
|
|
<br/>
|
|
<integrator type="direct"/>
|
|
</integrator>
|
|
</example>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="errctrl" readableName="Adaptive integrator"
|
|
className="ErrorControl">
|
|
<descr>
|
|
Adaptive integrator - runs a secondary integrator until the
|
|
the computed radiance achieves a specifiable relative error
|
|
threshold (5% by default) with a certain probability (95% by default).
|
|
Internally, it uses a Z-test to decide when to stop collecting samples.
|
|
While not entirely rigorous in the statistical sense, this provides a
|
|
useful stopping criterion. When used in conjunction with image
|
|
reconstruction filters, this class ensures that neighboring image
|
|
regions are not unduly biased by placing many samples at a
|
|
certain position.
|
|
</descr>
|
|
<param name="maxError" readableName="Maximum relative error" type="float" default="0.05">Maximum relative error threshold</param>
|
|
<param name="minSamples" readableName="Minumum number of samples" type="integer" default="64">Minimum numbers of samples (Should be large enough so that reliable variance estimates can be obtained)</param>
|
|
<param name="maxSamples" readableName="Maximum number of samples" type="integer" default="2048">Absolute maximum number of samples to take. The sample collection will stop after this many samples even if the variance is still too high. A negative value will be interpreted as infinity.</param>
|
|
<param name="perPixel" readableName="Apply criterion per pixel" type="boolean" default="false">
|
|
Specifies whether the relative error criterion is applied
|
|
pixel-by-pixel, or whether the comparison should be made
|
|
against the overall luminance on the film plane. If this
|
|
is set to true, the quality in dark regions will be improved
|
|
at the cost of possibly spending lots of time on them.
|
|
</param>
|
|
<param name="prob" readableName="Required P-value" type="float" default="0.05" importance="1">Required P-value to accept a sample.</param>
|
|
<param name="verbose" readableName="Verbose" type="boolean" default="false" importance="1">Display convergence statistics</param>
|
|
<child type="integrator" count="1" extends="SampleIntegrator">Requires a sampling-based sub-integrator</child>
|
|
<example>
|
|
<integrator type="errctrl">
|
|
<float name="maxError" value="0.001"/>
|
|
|
|
<integrator type="path">
|
|
<integer name="maxDepth" value="1024"/>
|
|
</integrator>
|
|
</integrator>
|
|
</example>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="direct" readableName="Direct illumination"
|
|
show="true" className="MIDirectIntegrator" extends="SampleIntegrator">
|
|
<descr>
|
|
Direct-only integrator using multiple importance sampling.
|
|
Takes a user-specifiable amount of luminaire
|
|
and BSDF samples and combines them using the power heuristic
|
|
By setting one of the strategies to zero, this
|
|
class can effectively be turned into a luminaire sampling or
|
|
BSDF sampling-based integrator. Ignores participating media
|
|
if they are present.
|
|
</descr>
|
|
<param name="luminaireSamples" readableName="Luminaire Samples" type="integer" default="1">Number of samples to take using the luminaire sampling technique</param>
|
|
<param name="bsdfSamples" readableName="BSDF Samples" type="integer" default="1">Number of samples to take using the BSDF sampling technique</param>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="path" readableName="Path tracer"
|
|
show="true" className="MIPathTracer" extends="MonteCarloIntegrator">
|
|
<descr>
|
|
Extended path tracer -- uses multiple importance sampling to combine
|
|
two sampling strategies, namely BSDF and luminaire sampling. This class also
|
|
supports volumetric absorption, but does not attempt to solve the
|
|
full radiative transfer equation (see <tt>volpath</tt> if this is needed).
|
|
</descr>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="volpath_simple" readableName = "Volumetric path tracer (Simple)"
|
|
show="true" className="SimpleVolumetricPathTracer" extends="MonteCarloIntegrator">
|
|
<descr>
|
|
Volumetric path tracer, which solves the full radiative transfer
|
|
equation in the presence of participating media.
|
|
Simplified version without multiple importance sampling - this
|
|
version can be significantly faster than the extended
|
|
version when when rendering heterogeneous participating media using the
|
|
[Coleman et al.] sampling technique, as fewer attenuation
|
|
evaluations will be performed.
|
|
</descr>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="volpath" readableName = "Volumetric path tracer (Extended)"
|
|
show="true" className="VolumetricPathTracer" extends="MonteCarloIntegrator">
|
|
<descr>
|
|
Volumetric path tracer, which solves the full radiative transfer
|
|
equation in the presence of participating media. Estimates single
|
|
scattering using both phase function and luminaire sampling and
|
|
combines the two with multiple importance sampling and the power
|
|
heuristic. Afterwards, the phase function sample is reused to
|
|
recursively estimate the multiple scattering component, which saves an
|
|
intersection computation.
|
|
On surfaces, this integrator behaves exactly like the MI path tracer.
|
|
</descr>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="ptracer" readableName="Adjoint particle tracer" show="true"
|
|
className="ParticleTracer" extends="ImageBasedIntegrator">
|
|
<descr>Particle tracer using an adjoint formulation -- meant primarily for
|
|
verification purposes and test cases. This class follows appendix
|
|
4.A of Eric Veach's PhD thesis and computes the inner product
|
|
between emitted radiance and incident importance at the light
|
|
source (e.g. I = <Le, Wi>). The importance is recursively
|
|
estimated using a Monte Carlo random walk and adjoint BSDFs are
|
|
used for scattering events. Non-symmetric behavior due to the
|
|
use of shading normals is handled correctly.
|
|
For practical reasons, the integral is simultaneously computed
|
|
for every pixel on the image plane. This is done similarly to
|
|
path tracing with next event estimation by tracing a
|
|
shadow ray at every surface/volume interaction.
|
|
An independent accumulation buffer will be assigned to every
|
|
processor so that the rendering process can run in parallel.
|
|
The importance distribution on the camera sensor is chosen
|
|
to be equivalent to a perspective camera used in a traditional
|
|
backward ray tracer with uniform sampling on the image plane.
|
|
The number of samples is specified by the camera's sampler
|
|
instance.
|
|
</descr>
|
|
<param name="granularity" readableName="Work unit granularity" type="integer" default="200000">
|
|
Granularity of the work units used in parallelizing
|
|
the particle tracing task (default: 200K samples).
|
|
Should be high enough so that sending and accumulating
|
|
the partially exposed films is not the bottleneck.
|
|
</param>
|
|
<param name="rrDepth" readableName="Russian Roulette starting depth" type="integer" default="10">Depth to start using russian roulette</param>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="-1">
|
|
Longest visualized path length (<tt>-1</tt>=infinite).
|
|
A value of <tt>1</tt> will produce a black image, since this integrator
|
|
does not visualize directly visible light sources,
|
|
<tt>2</tt> will lead to single-bounce (direct-only) illumination, and so on.
|
|
</param>
|
|
<example>
|
|
<scene>
|
|
<integrator type="ptracer">
|
|
<!-- Work on chunks of 1M particles, GI up to a depth of 100 -->
|
|
<integer name="granularity" value="1000000"/>
|
|
<integer name="maxDepth" value="100"/>
|
|
</integrator>
|
|
<br/>
|
|
|
|
<!-- Luminaires, shapes go here ... -->
|
|
<br/>
|
|
|
|
<camera type="perspective">
|
|
<float name="fov" value="45"/>
|
|
<transform name="toWorld">
|
|
<translate x="0" y="0" z="3.5"/>
|
|
</transform>
|
|
|
|
<br/>
|
|
<!-- QMC: Use the Hammersley sequence to trace 100M particles -->
|
|
<sampler type="hammersley">
|
|
<integer name="sampleCount" value="100000000"/>
|
|
</sampler>
|
|
|
|
<br/>
|
|
<!-- Generate a 768x768 EXR image -->
|
|
<film type="exrfilm">
|
|
<integer name="width" value="768"/>
|
|
<integer name="height" value="768"/>
|
|
</film>
|
|
</camera>
|
|
</scene>
|
|
</example>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="vpl" readableName = "Virtual point light renderer"
|
|
show="true" className="VPLIntegrator" extends="Integrator">
|
|
<descr>
|
|
Rasterization-based global illuminated technique using hardware
|
|
accelerated renderings of the scene under point source illumination. Based on
|
|
"Instant Radiosity" by Alexander Keller in Computer Graphics Proceedings,
|
|
Annual Conference Series, SIGGRAPH 97, pp. 49-56.
|
|
</descr>
|
|
<param name="vplCount" readableName="Number of VPLs" type="integer" default="1000">Total number of virtual point lights that should be rendered</param>
|
|
<param name="shadowMapResolution" readableName="Shadow Map Resolution" type="integer" default="512">Shadow map resolution</param>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="-1">
|
|
Longest visualized path length (<tt>-1</tt>=infinite). When a positive value is
|
|
specified, it must be greater or equal to <tt>2</tt>, which corresponds to single-bounce
|
|
(direct-only) illumination.
|
|
</param>
|
|
<param name="clamping" readableName="Clamping factor" type="float" default="0.1">Relative clamping factor (0=no clamping, 1=full clamping)</param>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="photonmapper" readableName="Photon mapper" show="true"
|
|
className="PhotonMapIntegrator" extends="SampleIntegrator">
|
|
<descr>
|
|
Parallel photon mapper with SSE-accelerated lookups. Uses an RGBE-based
|
|
encoding to reduce the storage footprint of photons.
|
|
</descr>
|
|
<param name="directSamples" readableName="Direct samples" type="integer" default="16">Number of luminaire samples for direct illumination</param>
|
|
<param name="glossySamples" readableName="Glossy samples" type="integer" default="32">Number of glossy samples for direct illumination</param>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="40">Depth cutoff when tracing photons</param>
|
|
<param name="maxSpecularDepth" readableName="Max. specular bounces" type="integer" default="6">Depth cutoff when recursively tracing specular materials</param>
|
|
<param name="causticLookupSize" readableName="Caustic photon map lookup size" type="integer" default="120">Amount of photons to consider in a caustic photon map lookup</param>
|
|
<param name="globalLookupSize" readableName="Global photon map lookup size" type="integer" default="120">Amount of photons to consider in a global photon map lookup</param>
|
|
<param name="volumeLookupSize" readableName="Volume photon map lookup size" type="integer" default="120">Amount of photons to consider in a volume photon map lookup</param>
|
|
<param name="granularity" readableName="Work unit granularity" importance="1" type="integer" default="0">Granularity of photon tracing work units (in shot particles, 0 => decide automatically</param>
|
|
<param name="rrDepth" readableName="Russian roulette starting depth" importance="1" type="integer" default="10">Depth to start using russian roulette when tracing photons</param>
|
|
<param name="globalPhotons" readableName="Global photons" type="integer" default="200000">Number of photons to collect for the global photon map</param>
|
|
<param name="causticPhotons" readableName="Caustic photons" type="integer" default="200000">Number of photons to collect for the caustic photon map (if applicable)</param>
|
|
<param name="volumePhotons" readableName="Volume photons" type="integer" default="200000">Number of photons to collect for the volume photon map (if applicable)</param>
|
|
<param name="globalLookupRadius" readableName="Lookup radius (global)" type="float" default="0.05">Radius of lookups in the global photon map (relative to the scene size)</param>
|
|
<param name="causticLookupRadius" readableName="Lookup radius (caustic)" type="float" default="0.0125">Radius of lookups in the caustic photon map (relative to the scene size)</param>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="ppm" readableName="Progressive photon mapper"
|
|
show="true" className="ProgressivePhotonMapIntegrator" extends="Integrator">
|
|
<descr>
|
|
Progressive photon mapping implementation. Only handles surface
|
|
interactions. Parallelization is limited to the local cores.
|
|
</descr>
|
|
<param name="initialRadius" readableName="Initial radius" type="float" default="0">Initial photon query radius (0 = infer based on scene size and camera resolution)</param>
|
|
<param name="alpha" readableName="Size reduction parameter" type="float" default="0.7">Alpha parameter from the paper (influences the speed, at which the photon radius is reduced)</param>
|
|
<param name="photonCount" readableName="Photons per iteration" type="integer" default="100000">Number of photons to shoot in each iteration</param>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="5">
|
|
Longest visualized path length (<tt>-1</tt>=infinite). When a positive value is
|
|
specified, it must be greater or equal to <tt>2</tt>, which corresponds to single-bounce
|
|
(direct-only) illumination.
|
|
</param>
|
|
<param name="rrDepth" readableName="Russian Roulette starting depth" type="integer" default="10">
|
|
Depth to start using russian roulette
|
|
</param>
|
|
<param name="granularity" readableName="Work unit granularity" type="integer" default="500">
|
|
Granularity of the work units used in parallelizing
|
|
the particle tracing task (default: 100 samples).
|
|
</param>
|
|
<param name="blockSize" readableName="Block size" type="integer" default="32">
|
|
Block size used to parallelize the photon query passes (default: 32x32 pixels).
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="sppm" readableName="Stochastic progressive photon mapper"
|
|
show="true" className="StochasticProgressivePhotonMapIntegrator" extends="Integrator">
|
|
<descr>
|
|
Stochastic progressive photon mapping implementation. Only handles surface
|
|
interactions. Parallelization is limited to the local cores.
|
|
</descr>
|
|
<param name="initialRadius" readableName="Initial radius" type="float" default="0">Initial photon query radius (0 = infer based on scene size and camera resolution)</param>
|
|
<param name="alpha" readableName="Size reduction parameter" type="float" default="0.7">Alpha parameter from the paper (influences the speed, at which the photon radius is reduced)</param>
|
|
<param name="photonCount" readableName="Photons per iteration" type="integer" default="250000">Number of photons to shoot in each iteration</param>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="5">
|
|
Longest visualized path length (<tt>-1</tt>=infinite). When a positive value is
|
|
specified, it must be greater or equal to <tt>2</tt>, which corresponds to single-bounce
|
|
(direct-only) illumination.
|
|
</param>
|
|
<param name="rrDepth" readableName="Russian Roulette starting depth" type="integer" default="10">
|
|
Depth to start using russian roulette
|
|
</param>
|
|
<param name="granularity" readableName="Work unit granularity" type="integer" default="500">
|
|
Granularity of the work units used in parallelizing
|
|
the particle tracing task (default: 100 samples).
|
|
</param>
|
|
<param name="blockSize" readableName="Block size" type="integer" default="32">
|
|
Block size used to parallelize the photon query passes (default: 32x32 pixels).
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="bdpt" readableName="Bidirectional path tracer" show="true"
|
|
className="BidirectionalIntegrator" extends="Integrator">
|
|
<descr>
|
|
Veach-style bidirectional path tracer. Captures all paths except the ones
|
|
with t=0, which would require a finite area sensor. The code parallelizes
|
|
over multiple cores and machines, but with one caveat: the t=1 sampling
|
|
strategies require each core to have its own 'light image', where particles
|
|
are accumulated over time. Since these can potentially contribute to any
|
|
pixel, the light images must be at the resolution of the rendered image, and
|
|
transmitting them over the network or through shared memory may become
|
|
a bottleneck. To avoid this from happening, you have two choices: the
|
|
first one is to reduce the number of work units so that there is
|
|
approximately one unit per core (and correspondingly only one image to
|
|
transmit per core). This can be done by increasing the block size. The
|
|
second option is to simply disable the t=1 sampling strategies -- see
|
|
the <tt>enableT1Strategies</tt> parameter. Note that this might reduce the
|
|
effectiveness of bidirectional path tracing.
|
|
</descr>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="-1">
|
|
Longest visualized path length (<tt>-1</tt>=infinite).
|
|
A value of <tt>1</tt> will visualize only directly visible light sources.
|
|
<tt>2</tt> will lead to single-bounce (direct-only) illumination, and so on.
|
|
</param>
|
|
<param name="t1Strategies" readableName="Use t=1 strategies" type="boolean" default="true">
|
|
Should the t=1 sampling strategies be enabled? This severely
|
|
increases the amount of information that needs to be transferred
|
|
between workers, which can be a problem for network rendering.
|
|
On the other hand, these strategies are very good at capturing
|
|
caustics and similar effects, hence they might be useful if the
|
|
scene contains them.
|
|
</param>
|
|
<param name="eoRussianRoulette" readableName="Use efficiency-optimized russian roulette" type="boolean" default="true">
|
|
Should efficiency-optimized russian roulette be used? This
|
|
technique reduces the (quadratic) amount of necessary
|
|
visibility queries in an unbiased manner when they would only
|
|
lead to very small contributions to the image. Note that
|
|
this is completely independent of ordinary russian roulette,
|
|
which is used to limit path lengths.
|
|
</param>
|
|
<param name="directIllumStrategy" readableName="Use direct illumination sampling" type="boolean" default="true">
|
|
Should an optimized direct illumination sampling strategy be used
|
|
for s=1 paths? (as opposed to plain emission sampling). This affects
|
|
all paths, not just the ones contributing direct illumination.
|
|
Usually a good idea.
|
|
</param>
|
|
<param name="rrDepth" readableName="Russian Roulette starting depth" type="integer" default="5" importance="1">
|
|
Depth to begin using russian roulette (set to <tt>-1</tt> to disable)
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="mlt_kelemen" readableName="Kelemen-style MLT" show="true"
|
|
className="KelemenMLT" extends="Integrator">
|
|
<descr>
|
|
Kelemen-style Metropolis Light Transport implementation. This
|
|
integrator can operate on top of either a simple path tracer or a
|
|
fully-fledged bidirectional path tracer with multiple importance
|
|
sampling. Many optimizations are implemented, namely stratified
|
|
mutations, separate direct illumination, two-stage MLT, and the
|
|
improved weights proposed by Kelemen et al. For details, see
|
|
the respective parameter descriptions.
|
|
</descr>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="-1">
|
|
If set to a positive value, the recursion will stop after this depth.
|
|
A value of <tt>1</tt> will visualize only directly visible light sources.
|
|
<tt>2</tt> will lead to single-bounce (direct-only) illumination, and so on.
|
|
</param>
|
|
<param name="separateDirectIllum" readableName="Separate direct illumination" type="boolean" default="true">
|
|
Should direct illumination be handled separately? (i.e. not
|
|
using MLT) This is usually the right way to go, since direct
|
|
illumination is easily handled using more optimized rendering
|
|
techniques that can make use of low-discrepancy point sets.
|
|
This in turn lets MLT focus on the more difficult parts of the
|
|
light transport. On the other hand, some scenes use very
|
|
hard to find paths even for direct illumination, in which case
|
|
it may make more sense to set this property to <tt>false</tt>.
|
|
</param>
|
|
<param name="directSamples" readableName="Direct samples" type="integer" default="16">
|
|
When <tt>separateDirectIllum</tt> is set to <tt>true</tt>, this parameter can
|
|
be used to specify the samples per pixel used to render the
|
|
direct component. Should be a power of two (otherwise, it will be
|
|
rounded to the next one). When set to zero or less, the
|
|
direct illumination component will be hidden, which is useful
|
|
for analyzing the component rendered by MLT.
|
|
</param>
|
|
<param name="bidirectional" readableName="Bidirectional" type="boolean" default="true">
|
|
If set to <tt>true</tt>, the MLT algorithm runs on top of a
|
|
bidirectional path tracer with multiple importance sampling.
|
|
Otherwise, the implementation reverts to a basic path tracer.
|
|
Generally, the bidirectional path tracer should be noticably
|
|
better, so it's best to this setting at its default.
|
|
</param>
|
|
<param name="twoStage" readableName="Two-stage MLT" type="boolean" default="false">
|
|
This setting can be very useful to reduce noise in dark regions
|
|
of the image: it activates two-stage MLT, where a nested MLT renderer
|
|
first creates a tiny version of the output image. In a second pass,
|
|
the full version is then rendered, while making use of information
|
|
about the image-space luminance distribution found in the first
|
|
pass. Two-stage MLT is very useful in making the noise characteristics
|
|
more uniform over time image -- specifically, since MLT tends to get
|
|
stuck in very bright regions at the cost of the remainder of the image.
|
|
</param>
|
|
<param name="firstStageSizeReduction" readableName="First-stage size reduction" type="integer" default="16" importance="1">
|
|
When running two-stage MLT, this parameter influences the size
|
|
of the downsampled image created in the first pass (i.e. setting this
|
|
to 16 means that the horizontal/vertical resolution will be 16 times
|
|
lower). When the two-stage process introduces noisy halos around
|
|
very bright image regions, it might might be good to reduce this
|
|
parameter to 4 or even 1. Generally though, it should be safe to leave
|
|
it unchanged.
|
|
</param>
|
|
<param name="stratifyLargeMutations" readableName="Stratify mutations" type="boolean" default="true">
|
|
Should the implementation try to achieve a better spread of the
|
|
image plane pixel positions associated with paths? This is done by passing
|
|
stratified positions to large mutations. The default is
|
|
<tt>true</tt>.
|
|
</param>
|
|
<param name="maxConsecRejections" readableName="Max. consecutive rejections"
|
|
type="integer" default="-1">
|
|
Max. permitted number of consecutive rejections before forcing
|
|
acceptance of a proposed transition. Setting this to any value
|
|
other than -1 will introduce bias into the algorithm (with higher
|
|
values resulting in less bias). This parameter exists because it
|
|
can be used to reduce issues with overly bright pixels (in MLT,
|
|
these are created when the MLT kernel is 'stuck' in a certain path
|
|
for a very long time)
|
|
</param>
|
|
<param name="directIllumStrategy" readableName="Use direct illumination sampling" type="boolean" default="true">
|
|
Should an optimized direct illumination sampling strategy be used
|
|
for s=1 paths? (as opposed to plain emission sampling). Usually
|
|
a good idea. Note that this setting only applies when the
|
|
bidirectional path tracer is used internally. The optimization
|
|
affects all paths, not just the ones contributing direct illumination,
|
|
hence it is completely independent of the <tt>separateDirectIllum</tt>
|
|
parameter.
|
|
</param>
|
|
<param name="workUnits" readableName="Parallel work units" type="integer" default="-1">
|
|
Specifies the number of parallel work units required for
|
|
multithreaded and network rendering. When set to <tt>-1</tt>, the
|
|
amount will default to four times the number of cores. Note that
|
|
every additional work unit entails a significant amount of
|
|
communication overhead (a full-sized floating put image must be
|
|
transmitted), hence it is important to set this value as low as
|
|
possible, while ensuring that there are enough units to keep all
|
|
workers busy.
|
|
</param>
|
|
<param name="kelemenWeights" readableName="Kelemen-style weights" type="boolean" default="true">
|
|
Should the multiple importance sampling-based weight computation by
|
|
Kelemen et al. be used? Otherwise, the implementation falls back
|
|
to the 'use of expectations' technique from Veach-style MLT.
|
|
</param>
|
|
<param name="luminanceSamples" readableName="Luminance samples" type="integer" default="50000" importance="1">
|
|
Number of samples used to estimate the total luminance
|
|
received by the camera's sensor.
|
|
</param>
|
|
<param name="pLarge" readableName="Large step probability" type="float" default="0.3" importance="1">
|
|
Probability of creating large mutations in the [Kelemen et. al]
|
|
MLT variant. The default is 0.3.
|
|
</param>
|
|
<param name="rrDepth" readableName="Russian Roulette starting depth" type="integer" default="5" importance="1">
|
|
Depth to begin using russian roulette (set to <tt>-1</tt> to disable)
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="integrator" name="mlt_veach" readableName="Veach-style MLT" show="true"
|
|
className="MLT" extends="Integrator">
|
|
<descr>
|
|
Veach-style Metropolis Light Transport implementation with support for
|
|
bidirectional mutations, lens perturbations, caustic perturbations and
|
|
multi-chain perturbations. Several optimizations are also implemented, namely
|
|
separate direct illumination, two-stage MLT, and importance sampling of
|
|
mutation strategies. For details, see the respective parameter descriptions.
|
|
</descr>
|
|
<param name="maxDepth" readableName="Maximum depth" type="integer" default="-1">
|
|
If set to a positive value, the recursion will stop after this depth.
|
|
A value of <tt>1</tt> will visualize only directly visible light sources.
|
|
<tt>2</tt> will lead to single-bounce (direct-only) illumination, and so on.
|
|
</param>
|
|
<param name="separateDirectIllum" readableName="Separate direct illumination" type="boolean" default="true">
|
|
Should direct illumination be handled separately? (i.e. not
|
|
using MLT) This is usually the right way to go, since direct
|
|
illumination is easily handled using more optimized rendering
|
|
techniques that can make use of low-discrepancy point sets.
|
|
This in turn lets MLT focus on the more difficult parts of the
|
|
light transport. On the other hand, some scenes use very
|
|
hard to find paths even for direct illumination, in which case
|
|
it may make more sense to set this property to <tt>false</tt>.
|
|
</param>
|
|
<param name="directSamples" readableName="Direct samples" type="integer" default="16">
|
|
When <tt>separateDirectIllum</tt> is set to <tt>true</tt>, this parameter can
|
|
be used to specify the samples per pixel used to render the
|
|
direct component. Should be a power of two (otherwise, it will be
|
|
rounded to the next one). When set to zero or less, the
|
|
direct illumination component will be hidden, which is useful
|
|
for analyzing the component rendered by MLT.
|
|
</param>
|
|
<param name="twoStage" readableName="Two-stage MLT" type="boolean" default="false">
|
|
This setting can be very useful to reduce noise in dark regions
|
|
of the image: it activates two-stage MLT, where a nested MLT renderer
|
|
first creates a tiny version of the output image. In a second pass,
|
|
the full version is then rendered, while making use of information
|
|
about the image-space luminance distribution found in the first
|
|
pass. Two-stage MLT is very useful in making the noise characteristics
|
|
more uniform over time image -- specifically, since MLT tends to get
|
|
stuck in very bright regions at the cost of the remainder of the image.
|
|
</param>
|
|
<param name="firstStageSizeReduction" readableName="First-stage size reduction" type="integer" default="16" importance="1">
|
|
When running two-stage MLT, this parameter influences the size
|
|
of the downsampled image created in the first pass (i.e. setting this
|
|
to 16 means that the horizontal/vertical resolution will be 16 times
|
|
lower). When the two-stage process introduces noisy halos around
|
|
very bright image regions, it might might be good to reduce this
|
|
parameter to 4 or even 1. Generally though, it should be safe to leave
|
|
it unchanged.
|
|
</param>
|
|
<param name="maxConsecRejections" readableName="Max. consecutive rejections"
|
|
type="integer" default="-1">
|
|
Max. permitted number of consecutive rejections before forcing
|
|
acceptance of a proposed transition. Setting this to any value
|
|
other than -1 will introduce bias into the algorithm (with higher
|
|
values resulting in less bias). This parameter exists because it
|
|
can be used to reduce issues with overly bright pixels (in MLT,
|
|
these are created when the MLT kernel is 'stuck' in a certain path
|
|
for a very long time)
|
|
</param>
|
|
<param name="handleOverlap" readableName="Handle mutator overlap" type="boolean" default="true">
|
|
Should the acceptance ratio computation account for the overlap
|
|
of the various different mutation strategies? Usually a good idea.
|
|
See the separate writeup for further details.
|
|
</param>
|
|
<param name="workUnits" readableName="Parallel work units" type="integer" default="-1">
|
|
Specifies the number of parallel work units required for
|
|
multithreaded and network rendering. When set to <tt>-1</tt>, the
|
|
amount will default to four times the number of cores. Note that
|
|
every additional work unit entails a significant amount of
|
|
communication overhead (a full-sized floating put image must be
|
|
transmitted), hence it is important to set this value as low as
|
|
possible, while ensuring that there are enough units to keep all
|
|
workers busy.
|
|
</param>
|
|
<param name="luminanceSamples" readableName="Luminance samples" type="integer" default="50000" importance="1">
|
|
Number of samples used to estimate the total luminance
|
|
received by the camera's sensor.
|
|
</param>
|
|
<param name="bidirectionalMutation" readableName="Bidirectional mutation" type="boolean" default="true" importance="1">
|
|
Selectively enable/disable the bidirectional mutation
|
|
</param>
|
|
<param name="lensPerturbation" readableName="Lens perturbation" type="boolean" default="true" importance="1">
|
|
Selectively enable/disable the lens perturbation
|
|
</param>
|
|
<param name="causticPerturbation" readableName="Caustic perturbation" type="boolean" default="true" importance="1">
|
|
Selectively enable/disable the caustic perturbation
|
|
</param>
|
|
<param name="multiChainPerturbation" readableName="Multi-chain perturbation" type="boolean" default="true" importance="1">
|
|
Selectively enable/disable the bidirectional perturbation
|
|
</param>
|
|
<param name="lensSubpathMutation" readableName="Lens subpath mutation" type="boolean" default="true" importance="1">
|
|
Selectively enable/disable the lens subpath mutation
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="subsurface" className="Subsurface" abstract="true">
|
|
<shortDescr>Subsurface integrator base class</shortDescr>
|
|
<descr>
|
|
Abstract subsurface integrator -- can be attached to a shape to compute exitant
|
|
radiance due to internal scattering. By default, the parameters are set to
|
|
the skim milk data from "A Practical Model for Subsurface scattering" (Jensen et al.)
|
|
</descr>
|
|
<param name="sigmaS" type="spectrum" default="0.7, 1.22, 1.9">Scattering coefficient</param>
|
|
<param name="sigmaT" type="spectrum" default="0.0014, 0.0025, 0.0142">Absorption coefficient</param>
|
|
<param name="eta" type="float" default="1.3">Refractive index of the object</param>
|
|
<param name="sizeMultiplier" type="float" default="1">Scattering/absorption coefficient multiplier - can be used to convert these to world-space units.</param>
|
|
</plugin>
|
|
|
|
<plugin type="subsurface" name="dipole" className="IsotropicDipole" extends="Subsurface">
|
|
<shortDescr>Dipole diffusion subsurface integrator</shortDescr>
|
|
<descr>
|
|
Subsurface scattering integrator using Jensen's fast hierarchical
|
|
dipole approximation scheme.
|
|
("A Rapid Hierarhical Rendering Technique for Translucent
|
|
Materials" by Herik Wann Jensen and Juan Buhler, in SIGGRAPH 02)
|
|
</descr>
|
|
<param name="maxDepth" type="integer" default="10">Max. depth of the created octree</param>
|
|
<param name="minDelta" type="float" default=".1">Error threshold</param>
|
|
</plugin>
|
|
|
|
<plugin type="medium" className="Medium" abstract="true">
|
|
<shortDescr>Base class of all participating media</shortDescr>
|
|
<descr>
|
|
Base class of all participating media -- By default, the parameters are set to
|
|
the skim milk data from "A Practical Model for Subsurface scattering" (Jensen et al.)
|
|
</descr>
|
|
<param name="sigmaS" type="spectrum" default="0.7, 1.22, 1.9">Scattering coefficient</param>
|
|
<param name="sigmaT" type="spectrum" default="0.0014, 0.0025, 0.0142">Absorption coefficient</param>
|
|
<param name="sizeMultiplier" type="float" default="1">Scattering/absorption coefficient multiplier - can be used to convert these to world-space units.</param>
|
|
<child type="phase" count="1">
|
|
Specifies the phase function of the medium. If none is specified,
|
|
the default (<tt>isotropic</tt>) is chosen.
|
|
</child>
|
|
</plugin>
|
|
|
|
<plugin type="medium" name="homogeneous" className="HomogeneousMedium" extends="Medium">
|
|
<shortDescr>Homogeneous participating medium</shortDescr>
|
|
<descr>
|
|
Homogeneous participating medium. An arbitrary (manifold) shape
|
|
must be specified as a child object.
|
|
</descr>
|
|
<child type="shape" count="1">Specifies the shape of the medium</child>
|
|
</plugin>
|
|
|
|
<plugin type="medium" name="heterogeneous" className="HeterogeneousMedium" extends="Medium">
|
|
<shortDescr>Heterogeneous participating medium</shortDescr>
|
|
<descr>
|
|
Heterogeneous medium class using trilinear interpolation,
|
|
Simpson quadrature and one of several possible sampling
|
|
strategies. Data files have to be provided in an ASCII
|
|
format as follows:<br/>
|
|
<ul>
|
|
<li> The first three numbers determine the X,Y and Z resolution,
|
|
each of which has to be larger than 2.</li>
|
|
<li>The next six numbers determine the minimum X, Y and Z
|
|
as well as the maximum X, Y and Z values of the enclosing
|
|
axis-aligned bounding box.</li>
|
|
<li>Afterwards, (xres*yres*zres) density samples follow in
|
|
XYZ order, (e.g. the second entry has coordinate x=2)</li>
|
|
</ul>
|
|
</descr>
|
|
|
|
<param name="filename" type="string">File containing sampled volume densities</param>
|
|
|
|
<param name="strategy" type="string" default="standard">
|
|
Specifies the used strategy - the four choices are:
|
|
<ul>
|
|
<li><tt>standard</tt>: generate a 'desired' accumulated density by sampling an
|
|
exponentially distributed random variable. Afterwards, try to find the
|
|
distance, at which this much density has been accumulated. Here, the
|
|
composite Simpson's rule is used to integrate density along the ray.</li>
|
|
<li><tt>coleman</tt>: Sampling technique by [Coleman et al., 1967]. Only for media with
|
|
a wavelength-independent extinction coefficient.</li>
|
|
<li><tt>uniform</tt>: Naive variant for verification purposes: uniformly
|
|
sample a distance along the ray segment, which intersects the volume</li>
|
|
<li><tt>double</tt>: Double integral approach - stupid and slow, but it also works..</li>
|
|
</ul>
|
|
</param>
|
|
|
|
<param name="stepSizeFactor" type="float" default="1">
|
|
While integrating density along a ray, approximately one sample
|
|
per voxel is taken - that number can be changed here
|
|
</param>
|
|
|
|
<param name="sigma" type="float" default="min(sigmaA+sigmaS)">
|
|
Can be used to override the extinction coefficient used to sample distances
|
|
in the in-scatter line integral. By default, the smallest spectral sample of
|
|
<tt>sigmaA+sigmaT</tt> is used.
|
|
</param>
|
|
</plugin>
|
|
|
|
|
|
<plugin type="phase" name="isotropic" className="IsotropicPhaseFunction" extends="PhaseFunction">
|
|
<shortDescr>Isotropic phase function</shortDescr>
|
|
<descr>
|
|
Basic isotropic phase function
|
|
</descr>
|
|
</plugin>
|
|
|
|
<plugin type="phase" name="hg" className="HGPhaseFunction" extends="PhaseFunction">
|
|
<shortDescr>Henyey-Greenstein phase function</shortDescr>
|
|
<descr>
|
|
Phase function by Henyey and Greenstein (1941). Parameterizable
|
|
from backward- through isotropic- to forward scattering.
|
|
</descr>
|
|
<param name="g" type="float" default="0.8">
|
|
Asymmetry parameter of the Henyey-Greenstein phase function. Must
|
|
lie in [-1, 1] where >0 is forward scattering and <0 is backward
|
|
scattering.
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="luminaire" className="Luminaire" abstract="true">
|
|
<shortDescr>Abstract luminaire</shortDescr>
|
|
<descr>Abstract implementation of a luminaire. Supports emission and shadow ray sampling and computes related probabilities.</descr>
|
|
<param name="toWorld" type="transform" default="identity">Affine luminaire space to world space transformation</param>
|
|
</plugin>
|
|
|
|
<plugin type="luminaire" name="area" className="AreaLuminaire" extends="Luminaire">
|
|
<shortDescr>Lambertian area luminaire</shortDescr>
|
|
<descr>
|
|
Lambertian area light source - can be attached to an arbitrary shape
|
|
contained inside the scene. Shadow rays are generally sampled
|
|
uniformly with respect to surface area, which may lead to high
|
|
variance (e.g. many of the generated samples are facing away
|
|
from the point to be shaded).
|
|
When the shape in question is a sphere, rays are sampled uniformly
|
|
wrt. solid angle, which significantly reduces the variance.
|
|
Thus, spheres are recommended whenever there is some flexibility
|
|
in choosing the luminaire shape.
|
|
</descr>
|
|
<param name="intensity" type="spectrum" default="1">Intensity of the luminaire</param>
|
|
<example>
|
|
<shape type="obj">
|
|
<string name="filename" value="meshes/luminaire_mesh.obj"/>
|
|
<br/>
|
|
<!-- Local to world coordinate transformation -->
|
|
<transform name="toWorld">
|
|
<translate x="0" y="-0.5" z="0"/>
|
|
</transform>
|
|
<br/>
|
|
<!-- Diffuse area luminaire emitting black body radiation at 1500 Kelvin -->
|
|
<luminaire type="area">
|
|
<!-- Can alternatively be specified with the <rgb> or <spectrum> elements -->
|
|
<blackbody name="intensity" temperature="1500"/>
|
|
</luminaire>
|
|
<br/>
|
|
<!-- Black body - do not reflect any light -->
|
|
<bsdf type="lambertian">
|
|
<spectrum name="reflectance" value="0"/>
|
|
</bsdf>
|
|
</shape>
|
|
</example>
|
|
</plugin>
|
|
|
|
<plugin type="luminaire" name="collimated" className="CollimatedBeamLuminaire" extends="Luminaire">
|
|
<shortDescr>Collimated beam luminaire</shortDescr>
|
|
<descr>Collimated beam with a configurable thickness. Points from <tt>(0,0,0)->(0,0,1)</tt> by default -
|
|
use the <tt>toWorld</tt> parameter to change this.
|
|
</descr>
|
|
<param name="radius" type="float" default="0.01">World-space beam radius</param>
|
|
<param name="intensity" type="spectrum" default="power/surfaceArea">Intensity of the luminaire.
|
|
Specify only one of <tt>intensity</tt> and <tt>power.</tt></param>
|
|
<param name="power" type="spectrum" default="1">Power of the luminaire.
|
|
Specify only one of <tt>intensity</tt> and <tt>power.</tt></param>
|
|
</plugin>
|
|
|
|
<plugin type="luminaire" name="point" className="PointLuminaire" extends="Luminaire">
|
|
<shortDescr>Isotropic point source</shortDescr>
|
|
<descr>Positioned at <tt>(0,0,0)</tt> by default - use the
|
|
<tt>toWorld</tt> parameter to change this.</descr>
|
|
<param name="intensity" type="spectrum" default="1">Intensity of the luminaire</param>
|
|
</plugin>
|
|
|
|
<plugin type="luminaire" name="spot" className="SpotLuminaire" extends="Luminaire">
|
|
<shortDescr>VRML SpotLight-equivalent luminaire</shortDescr>
|
|
<descr>
|
|
In its local coordinate system, the spot light is positioned at the origin and points into the positive Z
|
|
direction. Its intensity linearly ramps up between <tt>cutoffAngle</tt>
|
|
and <tt>beamWidth</tt>, after which it remains at the maximum value.
|
|
</descr>
|
|
<param name="intensity" type="spectrum" default="1">Intensity of the luminaire</param>
|
|
<param name="cutoffAngle" type="float" default="20">Cutoff angle in degrees</param>
|
|
<param name="beamWidth" type="float" default="cutoffAngle * 3/4">Beam width in degrees</param>
|
|
<example>
|
|
<luminaire type="spot">
|
|
<!-- Spot light placed at (0, -3, 2) pointing towards (1, 1, 4) -->
|
|
<transform name="toWorld">
|
|
<lookAt ox="0" oy="-3" oz="2"
|
|
tx="1" ty="1" tz="4"/>
|
|
</transform>
|
|
</luminaire>
|
|
</example>
|
|
</plugin>
|
|
|
|
<plugin type="luminaire" name="constant" className="ConstantLuminaire" extends="Luminaire">
|
|
<shortDescr>Constant background luminaire</shortDescr>
|
|
<descr>Simulates a diffuse, infinitely far-away emitter</descr>
|
|
<param name="intensity" type="spectrum" default="1">Intensity of the luminaire</param>
|
|
</plugin>
|
|
|
|
<plugin type="luminaire" name="envmap" className="EnvMapLuminaire" extends="Luminaire">
|
|
<shortDescr>Environment map luminaire</shortDescr>
|
|
<descr>
|
|
Basic environment map implementation without importance sampling.
|
|
Uses the scene's bounding sphere to simulate an infinitely far-away
|
|
light source. Expects an EXR image in latitude-longitude (equirectangular) format.
|
|
</descr>
|
|
<param name="intensity" type="spectrum" default="1">Intensity of the luminaire</param>
|
|
|
|
<example>
|
|
<luminaire type="envmap">
|
|
<!-- Load Paul Debevec's Pisa environment map -->
|
|
<string name="filename" value="pisa.exr"/>
|
|
<br/>
|
|
<!-- Apply a rotation to the environment map -->
|
|
<transform name="toWorld">
|
|
<rotate x="0" y="1" z="0" angle="45"/>
|
|
</transform>
|
|
</luminaire>
|
|
</example>
|
|
</plugin>
|
|
|
|
<plugin type="camera" className="Camera" abstract="true">
|
|
<shortDescr>Camera base class</shortDescr>
|
|
<descr>
|
|
A camera turns a sample on the image plane into a 3D ray.
|
|
For this, it requires two supporting objects: a <tt>Sampler</tt> and a <tt>Film</tt> instance.
|
|
</descr>
|
|
<param name="toWorld" type="transform" default="identity">Affine camera space to world space transformation</param>
|
|
</plugin>
|
|
|
|
<plugin type="camera" className="PinholeCamera" abstract="true" extends="Camera">
|
|
<shortDescr>Pinhole camera base class</shortDescr>
|
|
<descr>
|
|
Provides solid angle computation
|
|
routines useful for importance-based integrators.
|
|
</descr>
|
|
<param name="fov" type="float" default="90">Field of view of the camera (in degrees)</param>
|
|
<param name="mapSmallerSide" type="boolean" default="true">Specifies which side of the image plane should cover the field of view specified in the <tt>fov</tt> parameter</param>
|
|
</plugin>
|
|
|
|
<plugin type="camera" name="perspective" className="PerspectiveCamera" extends="PinholeCamera">
|
|
<shortDescr>Perspective camera model</shortDescr>
|
|
<descr>
|
|
Depth of field can optionally be activated by specifying both focal
|
|
distance and lens radius (uses a thin lens approximation)
|
|
</descr>
|
|
<param name="focalDistance" type="float" default="0">Distance to the focal plane</param>
|
|
<param name="lensRadius" type="float" default="0">World-space lens radius</param>
|
|
<param name="nearClip" type="float" default="1e-2">Near clipping plane distance</param>
|
|
<param name="farClip" type="float" default="1e4">Far clipping plane distance</param>
|
|
<example>
|
|
<camera type="perspective">
|
|
<float name="fov" value="45"/>
|
|
<transform name="toWorld">
|
|
<translate x="0" y="0" z="3.5"/>
|
|
</transform>
|
|
|
|
<br/>
|
|
<!-- 3x3=9 stratified samples per pixel -->
|
|
<sampler type="stratified">
|
|
<integer name="resolution" value="3"/>
|
|
</sampler>
|
|
|
|
<br/>
|
|
<!-- Generate a 768x768 EXR image -->
|
|
<film type="exrfilm">
|
|
<integer name="width" value="768"/>
|
|
<integer name="height" value="768"/>
|
|
<br/>
|
|
<!-- 4x4 Mitchell-Netravali reconstruction filter -->
|
|
<rfilter type="mitchell"/>
|
|
</film>
|
|
</camera>
|
|
</example>
|
|
</plugin>
|
|
|
|
<plugin type="camera" name="orthographic" className="OrthographicCamera" extends="Camera">
|
|
<shortDescr>Orthographic camera model</shortDescr>
|
|
<descr>
|
|
Simple orthographic camera model
|
|
</descr>
|
|
<param name="nearClip" type="float" default="1e-2">Near clipping plane distance</param>
|
|
<param name="farClip" type="float" default="1e4">Far clipping plane distance</param>
|
|
<param name="mapSmallerSide" type="boolean" default="true">Specifies which side of the image plane
|
|
maps to normalized device coordinates in <tt>[0,1]</tt>
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="film" className="Film" abstract="true">
|
|
<shortDescr>Abstract Film base class</shortDescr>
|
|
<descr>Used to store samples generated by an Integrator.</descr>
|
|
<param name="width" type="integer" default="512">Horizontal sensor resolution in pixels</param>
|
|
<param name="height" type="integer" default="512">Vertical sensor resolution in pixels</param>
|
|
<param name="cropOffsetX" type="integer" default="0">Horizontal pixel position of the crop window relative to the upper left corner</param>
|
|
<param name="cropOffsetY" type="integer" default="0">Vertical pixel position of the crop window relative to the upper left corner</param>
|
|
<param name="cropWidth" type="integer" default="width">Width of the crop window in pixels</param>
|
|
<param name="cropWeight" type="integer" default="height">Height of the crop window in pixels</param>
|
|
<param name="highQualityEdges" type="boolean" default="false">
|
|
If set to true, regions slightly outside of the film plane will also be sampled, which
|
|
improves the image quality at the edges especially with large reconstruction filters.
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="film" name="exrfilm" className="EXRFilm" extends="Film">
|
|
<shortDescr>EXR high dynamic-range film</shortDescr>
|
|
<descr>
|
|
Simple film implementation, which stores the captured image
|
|
as an RGBA-based high dynamic-range EXR file.
|
|
No gamma correction is applied and spectral radiance values
|
|
are converted to linear RGB using the CIE 1931 XYZ color matching
|
|
functions and ITU-R Rec. BT.709
|
|
</descr>
|
|
<param name="alpha" type="boolean" default="true">Should an alpha channel be added to the output image?</param>
|
|
<param name="banner" type="boolean" default="true">Should a program logo be added to the output image?</param>
|
|
</plugin>
|
|
|
|
<plugin type="film" name="pngfilm" className="PNGFilm" extends="Film">
|
|
<shortDescr>PNG low dynamic-range film</shortDescr>
|
|
<descr>
|
|
Simple film implementation, which stores the captured image
|
|
as an RGBA-based low dynamic-range PNG file with gamma correction.
|
|
Spectral radiance values are converted to linear RGB using
|
|
the CIE 1931 XYZ color matching functions and ITU-R Rec. BT.709
|
|
</descr>
|
|
<param name="alpha" type="boolean" default="true">Should an alpha channel be added to the output image?</param>
|
|
<param name="bpp" type="integer" default="24/32, dep. on alpha">Bits per pixel including alpha (must be 8, 16, 24 or 32)</param>
|
|
<param name="gamma" type="float" default="-1">Gamma value for the correction. Negative values switch to sRGB</param>
|
|
</plugin>
|
|
|
|
<plugin type="film" name="mfilm" className="MFilm" extends="Film">
|
|
<shortDescr>MATLAB film</shortDescr>
|
|
<descr>
|
|
Debugging film, which dumps raw luminance values as a 2D array in
|
|
MATLAB M-file format. When test case mode is active, the film writes
|
|
a triple (luminance, variance, sample count) for every pixel.
|
|
</descr>
|
|
<param name="spectra" type="boolean" default="false">Should all spectral samples be exported? In this case,
|
|
each pixel will generate several numbers (matching the configured discretization of the color spectrum).
|
|
By default, Mitsuba exports the luminances found using the CIE XYZ color matching curves.
|
|
</param>
|
|
</plugin>
|
|
|
|
<plugin type="rfilter" readableName="Box filter" name="box" show="true" className="BoxFilter" extends="ReconstructionFilter">
|
|
<descr>Box filter -- fastest, but prone to aliasing.</descr>
|
|
</plugin>
|
|
|
|
<plugin type="rfilter" readableName="Windowed Gaussian filter" name="gaussian" show="true" className="GaussianFilter" extends="ReconstructionFilter">
|
|
<descr>
|
|
Windowed Gaussian filter with configurable extent
|
|
and standard deviation. Often produces pleasing
|
|
results, but may introduce too much blurring. This
|
|
is the default filter if none is specified.
|
|
</descr>
|
|
<param name="halfSize" readableName="Filter size (half)" type="float" default="2">Half of the filter size in pixels</param>
|
|
<param name="stddev" readableName="Standard deviation" type="float" default=".5">Standard deviation of the Gaussian</param>
|
|
</plugin>
|
|
|
|
<plugin type="rfilter" readableName="Windowed Sinc filter" name="wsinc" show="true" className="WindowedSincFilter" extends="ReconstructionFilter">
|
|
<descr>
|
|
Windowed version of the ideal low-pass filter (with a Lanczos
|
|
envelope) -- may produce ringing artifacts near sharp edges.
|
|
</descr>
|
|
<param name="halfSize" readableName="Filter size (half)" type="float" default="3">Half of the filter size in pixels</param>
|
|
<param name="cycles" readableName="Number of cycles" type="float" default=".5">Number of cycles, after which the sinc function should be truncated</param>
|
|
</plugin>
|
|
|
|
<plugin type="rfilter" readableName="Mitchell-Netravali filter" name="mitchell" show="true" className="MitchellNetravaliFilter" extends="ReconstructionFilter">
|
|
<descr>
|
|
Separable reconstruction filter by Mitchell and Netravali.
|
|
D. Mitchell, A. Netravali, Reconstruction filters for computer graphics,
|
|
Proceedings of SIGGRAPH 88, Computer Graphics 22(4), pp. 221-228, 1988.
|
|
</descr>
|
|
<param name="halfSize" readableName="Filter size (half)" type="float" default="2">Half filter size in pixels</param>
|
|
<param name="B" readableName="B parameter" type="float" default="0.33333">B parameter from the paper</param>
|
|
<param name="C" readableName="C parameter" type="float" default="0.33333">C parameter from the paper</param>
|
|
|
|
<example>
|
|
<film type="exrfilm">
|
|
<integer name="width" value="512"/>
|
|
<integer name="height" value="512"/>
|
|
<rfilter type="mitchell">
|
|
<float name="halfSize" value="2"/>
|
|
</rfilter>
|
|
</film>
|
|
</example>
|
|
</plugin>
|
|
|
|
<plugin type="rfilter" readableName="Catmull-Rom filter" name="catmullrom" show="true" className="CatmullRomFilter" extends="ReconstrutionFilter">
|
|
<descr>
|
|
Mitchell-Netravali filter with constants B and C configured
|
|
to match the Catmull-Rom spline. Usually does a
|
|
better job at at preserving sharp features at
|
|
the cost of slightly more ringing.
|
|
</descr>
|
|
<param name="halfSize" readableName="Filter size (half)" type="float" default="2">Half filter size in pixels</param>
|
|
</plugin>
|
|
|
|
<plugin type="sampler" name="independent" readableName="Independent sampler" show="true" className="IndependentSampler" extends="Sampler">
|
|
<descr>Independent sample generator - computes independent uniformly distributed random numbers without any kind of stratification.</descr>
|
|
<param name="sampleCount" readableName="Samples per pixel" type="integer" default="4">Number of samples per pixel</param>
|
|
</plugin>
|
|
|
|
<plugin type="sampler" name="stratified" readableName="Stratified sampler" show="true" className="StratifiedSampler" extends="Sampler">
|
|
<descr>Stratified sample generator - computes stratified samples in 1 and 2 dimensions.
|
|
This only works up to a specified maximum depth, after which
|
|
the implementation falls back to independent sampling.
|
|
</descr>
|
|
<param name="sampleCount" readableName="Samples per pixel" type="integer" default="4">Number of samples per pixel (will be rounded up to the next perfect square)</param>
|
|
<param name="depth" readableName="Stratification depth" type="integer" default="3">Depth, up to which which stratified samples are guaranteed to be available.</param>
|
|
</plugin>
|
|
|
|
<plugin type="sampler" name="ldsampler" readableName="Low discrepancy sampler" show="true" className="LowDiscrepancySampler" extends="Sampler">
|
|
<descr>
|
|
Adapted version of the low discrepancy sampler in PBRT.
|
|
Provides samples up to a specified depth, after which independent
|
|
sampling takes over.
|
|
</descr>
|
|
<param name="sampleCount" readableName="Samples per pixel" type="integer" default="4">Number of samples per pixel (will be rounded up to the next power of two)</param>
|
|
<param name="depth" readableName="Depth" type="integer" default="3">Depth, up to which which low discrepancy samples are guaranteed to be available.</param>
|
|
</plugin>
|
|
|
|
<plugin type="sampler" name="halton" readableName="Halton sequence" className="HaltonSequence" extends="Sampler">
|
|
<descr>
|
|
Deterministic 2D sample generator based on the Halton sequence. Internally
|
|
uses a table of prime numbers to provide elements of the sequence up to a
|
|
depth of 1000.
|
|
Because of the high correlation amongst neighboring pixels, this
|
|
sampler, by itself, is not meant to be used as a source of random numbers
|
|
for sample-based integrators such as <tt>direct</tt>, <tt>volpath</tt> etc.
|
|
</descr>
|
|
<param name="sampleCount" type="integer" default="1">Number of generated samples / samples per pixel</param>
|
|
</plugin>
|
|
|
|
<plugin type="sampler" name="hammersley" readableName="Hammersley sequence" className="HammersleySequence" extends="Sampler">
|
|
<descr>
|
|
Deterministic 2D sample generator based on the Hammersley sequence. Internally
|
|
uses a table of prime numbers to provide elements of the sequence up to a
|
|
depth of 1000.
|
|
Because of the high correlation amongst neighboring pixels, this
|
|
sampler, by itself, is not meant to be used as a source of random numbers
|
|
for sample-based integrators such as <tt>direct</tt>, <tt>volpath</tt> etc.
|
|
</descr>
|
|
<param name="sampleCount" type="integer" default="1">Number of generated samples / samples per pixel</param>
|
|
</plugin>
|
|
</documentation>
|