PLT uni-directional path tracer¶
Spectral uni-directional physical light transport (PLT) path tracer [Steinberg and Pharr, 2025, Steinberg et al., 2024, Steinberg et al., 2022]. Support either forward (from emitter) or backward (from sensor) path tracing. Implements UTD-based edge diffractions [Steinberg and Pharr, 2025], see UTD Edge Free-Space Diffractions BSDF.
Current implementation and provides partial support for multiple UTD diffractions across a path.
-
class plt_path_t : public wt::integrator::integrator_t
PLT uni-directional path tracer. Supports tracing either from a sensor or an emitter.
Public Functions
-
plt_path_t(const wt_context_t &ctx, std::string id, options_t opts) noexcept
-
inline virtual sensor::sensor_write_flags_e sensor_write_flags() const noexcept override
Indicates how the integrator writes to the sensor, and which capabilities are expected from the sensor (or its underlying film).
-
virtual void integrate(const integrator_context_t &ctx, const sensor::block_handle_t &block, const vec3u32_t &sensor_element, std::uint32_t samples_per_element) const noexcept override
Integrates light transport in the scene, given a sensor element and samples count. The arguments
block
andsensor_element
are only used whensensor_write_flags()
setswt::sensor::sensor_write_flags_e::writes_block_splats
, otherwise are ignored.- Parameters:
block – block to write samples to
sensor_element – sensor element that
block
belongs tosamples_per_element – sample count to use for this element
-
virtual scene::element::info_t description() const override
Public Static Functions
-
static std::shared_ptr<integrator_t> load(const std::string &id, scene::loader::loader_t *loader, const scene::loader::node_t &node, const wt::wt_context_t &context)
-
struct options_t
Public Members
-
std::uint16_t max_depth = 1024
-
bool RR = true
-
bool FSD = true
-
bsdf::transport_e transport_direction
-
std::uint16_t max_depth = 1024
-
plt_path_t(const wt_context_t &ctx, std::string id, options_t opts) noexcept