directional emitter¶
-
class directional_t : public wt::emitter::infinite_emitter_t
An emitter positioned at infinity, with a fixed direction and subtending a fixed solid angle from the scene.
Public Functions
-
directional_t(const directional_t&) = default
-
directional_t(directional_t&&) = default
-
inline virtual bool is_delta_position() const noexcept override
-
inline virtual bool is_delta_direction() const noexcept override
-
inline spectral_irradiance_t spectral_irradiance(const wavenumber_t k) const noexcept
-
inline const auto &direction_to_emitter() const noexcept
-
inline virtual const spectrum::spectrum_real_t &emission_spectrum() const noexcept override
Returns the emitter’s emission spectrum.
-
inline virtual spectral_radiant_flux_t power(wavenumber_t k) const noexcept override
Computes total spectral power that arrives to an area.
-
inline virtual radiant_flux_t power(const range_t<wavenumber_t> &krange) const noexcept override
Computes total power, over a wavenumber range, that arrives to an area.
-
inline beam::sourcing_geometry_t sourcing_geometry(const wavenumber_t k) const noexcept
-
inline spectral_irradiance_beam_t Le(const ray_t &p, const wavenumber_t k) const noexcept
Source a beam from this light source.
- Parameters:
k – wavenumber
-
inline virtual spectral_radiant_flux_stokes_t Li(const importance_flux_beam_t &beam, const intersection_surface_t *surface = nullptr) const noexcept override
Integrate a detector beam over the emitter.
- Parameters:
beam – detection beam incident upon the emitter
-
virtual emitter_sample_t sample(sampler::sampler_t &sampler, const wavenumber_t k) const noexcept override
Samples an emission phase-space position (ray) on the light source.
- Parameters:
k – wavenumber
-
virtual emitter_direct_sample_t sample_direct(sampler::sampler_t &sampler, const pqvec3_t &wp, const wavenumber_t k) const noexcept override
Samples a direct connection to a world position.
- Parameters:
wp – world position
k – wavenumber
-
inline virtual area_sampling_pd_t pdf_target_position(const pqvec3_t &wp) const noexcept override
Sampling area PDF of a target scene position, sampled by the infinite emitter’s
sample()
.- Parameters:
wp – sampled scene position
-
inline virtual solid_angle_sampling_pd_t pdf_direction(const pqvec3_t &p, const dir3_t &dir, const intersection_surface_t *surface = nullptr) const noexcept override
Sampling PDF of an emission direction from the light source.
- Parameters:
p – position on light source
dir – emission direction
surface – emitter surface intersection record (should be
nullptr
)
-
inline virtual solid_angle_sampling_pd_t pdf_direct(const pqvec3_t &wp, const ray_t &r, const intersection_surface_t *surface = nullptr) const noexcept override
Sampling PDF of a direct connection.
- Parameters:
wp – world position from which direct sampling was applied
sampled_r – sampled emitter phase-space position (ray)
sampled_surface – sampled surface for emitter samples that seat on a surface (should be
nullptr
)
- Returns:
the solid angle density from
wp
-
virtual scene::element::info_t description() const override
Public Static Functions
-
static std::unique_ptr<emitter_t> load(std::string id, scene::loader::loader_t *loader, const scene::loader::node_t &node, const wt::wt_context_t &context)
-
directional_t(const directional_t&) = default