Class area_t¶
Defined in File area.hpp
Nested Relationships¶
Nested Types¶
Inheritance Relationships¶
Base Type¶
public wt::emitter::emitter_t
(Class emitter_t)
Class Documentation¶
-
class area_t : public wt::emitter::emitter_t¶
An area emitter is attached to a shape, and radiates isotropically from the shape’s surfaces. A texture can be used to spatially module the emitted radiance. Only textures that provide
wt::texture::texture_t::mean_spectrum()
andwt::texture::texture_t::get_RGBA
are supported. For bitmap textures: alpha is ignored. When a texture is used, per-triangle barycentric sampling data for the given texture is constructed. This enables good sampling, but this is an expensive operation and increases loading times.Public Functions
Constructs an area emitter.
- Parameters:
radiance – (optional) the emission radiance texture; if provided, must be an RGB bitmap texture.
average_radiance – average emission spectrum (the radiance texture averaged across the area emitter’s shape). For non-spatially varying area emitters, i.e. when no
radiance
texture is provided,average_radiance
is used for emission.
-
inline virtual bool is_area_emitter() const noexcept override¶
-
inline virtual bool is_delta_position() const noexcept override¶
-
inline virtual bool is_delta_direction() const noexcept override¶
-
inline spectral_radiance_t spectral_radiance(const intersection_surface_t &surface, const wavenumber_t k) const noexcept¶
-
inline virtual const spectrum::spectrum_real_t &emission_spectrum() const noexcept override¶
Returns the emitter’s average emission spectrum.
-
inline virtual spectral_radiant_flux_t power(wavenumber_t k) const noexcept override¶
Computes total emitted spectral power.
-
inline virtual radiant_flux_t power(const range_t<wavenumber_t> &krange) const noexcept override¶
Computes total emitted power over a wavenumber range.
-
inline beam::sourcing_geometry_t sourcing_geometry(const wavenumber_t k) const noexcept¶
-
inline spectral_radiance_beam_t Le(const ray_t &r, const wavenumber_t k, const intersection_surface_t *surface) const noexcept¶
Source a beam from the emitter.
- Parameters:
r – desired emission phase-space position (ray) on the light source
k – wavenumber
surface – surface at emission point
-
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 a emission phase-space position (ray) on the light source.
- Parameters:
k – wavenumber
-
virtual position_sample_t sample_position(sampler::sampler_t &sampler) const noexcept override¶
Samples an emission phase-space position (ray) on the light source.
-
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
-
virtual area_sampling_pd_t pdf_position(const pqvec3_t &p, const intersection_surface_t *surface = nullptr) const noexcept override¶
Sampling PDF of an emission position on the light source.
- Parameters:
p – position on light source
surface – emitter surface intersection record
-
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
-
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 (required)
- Returns:
the solid angle density from
wp
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)¶
Friends
- friend class wt::shape_t