UTD Edge Free-Space Diffractions BSDF¶
A UTD-based edge diffractions BSDF [Steinberg and Pharr, 2025]. Implements sampling and evaluation.
-
class free_space_diffraction_t
Free-space diffraction angular scattering function.
Public Types
-
using eval_ret_t = std::vector<diffracting_edge_t>
Public Functions
-
free_space_diffraction_t(const ads::ads_t *ads, const pqvec3_t &interaction_wp, const frame_t &interaction_region_frame, const pqvec3_t &interaction_region_size, const dir3_t &wi, wavenumber_t k, const ads::intersection_record_t::edges_container_t &edges) noexcept
Construct a new free space diffraction object.
- Parameters:
k – wavenumber
edges – edges accessor
-
free_space_diffraction_t(free_space_diffraction_t&&) noexcept = default
-
inline bool empty() const noexcept
Returns TRUE if the aperture is empty.
-
sample_ret_t sample(const ads::ads_t *ads, const pqvec3_t &src, sampler::sampler_t &sampler) const noexcept
Samples the free-space diffraction BSDF. Returned position and direction are in world coordinates.
- Parameters:
src – source point in world coordinates
-
eval_ret_t f(const pqvec3_t &src, const pqvec3_t &dst) const noexcept
Evaluates the free-space diffraction BSDF.
- Parameters:
src – source point in world coordinates
dst – target point in world coordinates
-
angle_sampling_pd_t pdf(const pqvec3_t &src, const dir3_t &wo) const noexcept
Queries the sampling density of the free-space diffraction BSDF.
- Parameters:
src – source point in world coordinates
wo – world direction from interation point
-
struct diffracting_edge_t
-
struct sample_ret_t
Public Members
-
pqvec3_t diffraction_wp
-
dir3_t wo = {0, 0, 1}
-
std::optional<intersection_edge_t> intersection
-
bool is_direct
-
angle_sampling_pd_t dpd = angle_sampling_pd_t::discrete(0)
-
f_t weight
-
pqvec3_t diffraction_wp
-
using eval_ret_t = std::vector<diffracting_edge_t>