PLT bi-directional path tracer

Spectral bi-directional physical light transport (PLT) path tracer [Steinberg and Pharr, 2025, Steinberg et al., 2024, Steinberg et al., 2022]. Implements Fraunhofer-based edge diffractions [Steinberg et al., 2024], see Fraunhofer Edge Free-Space Diffractions BSDF.


class plt_bdpt_t : public wt::integrator::integrator_t

PLT bi-directional path tracer.

Public Functions

plt_bdpt_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 and sensor_element are only used when sensor_write_flags() sets wt::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 to

  • samples_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 MIS = true
bool RR = true
bool FSD = true
bool sensor_direct = true
bool emitter_direct = true