Class surface_profile_t

Inheritance Relationships

Base Type

Derived Types

Class Documentation

class surface_profile_t : public wt::scene::scene_element_t

Quantifies the statistical profile of a surface. The primary quantity is the surface’s power spectral density (PSD), characterizing effective roughness. Surface profiles are wavelength dependent.

Subclassed by wt::surface_profile::dirac_t, wt::surface_profile::fractal_t, wt::surface_profile::gaussian_t

Public Types

using rms_t = quantity<inverse(isq::length[u::mm])>
using rms2_t = quantity<inverse(isq::area[square(u::mm)])>
using recp_rms_t = quantity<isq::length[u::mm]>
using recp_rms2_t = quantity<isq::area[square(u::mm)]>
using variance_t = quantity<inverse(isq::area[square(u::mm)])>

Public Functions

inline surface_profile_t(std::string id)
surface_profile_t(surface_profile_t&&) = default
virtual ~surface_profile_t() noexcept = default
virtual bool is_delta_only(wavenumber_t k) const noexcept = 0
virtual bool needs_interaction_footprint() const noexcept = 0

Returns true for profiles that make use of the surface interaction footprint data.

virtual variance_t variance(const texture_query_t &query) const noexcept = 0

Variance of the surface profile.

virtual rms_t rms_roughness(const texture_query_t &query) const noexcept = 0

RMS roughness of the surface profile.

virtual f_t alpha(const dir3_t &wi, const dir3_t &wo, const texture_query_t &query) const noexcept = 0

Fraction of scatter contained in specular term.

Parameters:

k – wavenumber

virtual f_t alpha(const dir3_t &wi, const texture_query_t &query) const noexcept = 0

Fraction of scatter contained in specular term.

Parameters:

k – wavenumber

virtual f_t psd(const dir3_t &wi, const dir3_t &wo, const texture_query_t &query) const noexcept = 0

Evaluates the surface profile power spectral density (PSD).

virtual surface_profile_sample_ret_t sample(const dir3_t &wi, const texture_query_t &query, sampler::sampler_t &sampler) const noexcept = 0

Samples the surface profile.

virtual f_t pdf(const dir3_t &wi, const dir3_t &wo, const texture_query_t &query) const noexcept = 0

Provides the sampling density.

virtual scene::element::info_t description() const override = 0

Public Static Functions

static inline constexpr std::string scene_element_class() noexcept
static std::unique_ptr<surface_profile_t> load(std::string id, scene::loader::loader_t *loader, const scene::loader::node_t &node, const wt::wt_context_t &context)