Struct vertex_t¶
Defined in File vertex.hpp
Struct Documentation¶
-
struct vertex_t¶
Public Types
-
using geo_variant_t = vertex_geo_variant_t¶
Public Functions
-
inline bool is_emitter() const noexcept¶
-
inline bool is_sensor() const noexcept¶
-
inline bool is_fsd() const noexcept¶
-
inline bool is_surface_interaction() const noexcept¶
-
inline bool is_medium_interaction() const noexcept¶
-
inline bool is_interaction() const noexcept¶
-
inline bool is_nondelta_interaction() const noexcept¶
-
inline bool is_infinite() const noexcept¶
Is infinite (directional) vertex? For example, when a beam exits the scene.
-
inline bool is_on_surface() const noexcept¶
Does vertex reside on a surface? (Surface interaction, or emitter with associated geometry)
-
inline auto pdf() const noexcept¶
-
inline auto &pdf() noexcept¶
-
inline auto pdf_reversed() const noexcept¶
-
inline auto &pdf_reversed() noexcept¶
-
inline void set_beam(const spectral_radiant_flux_beam_t &beam) noexcept¶
-
inline void set_beam(const importance_flux_beam_t &beam) noexcept¶
-
inline const auto &get_radiant_flux_beam() const noexcept¶
-
inline const auto &get_QE_flux_beam() const noexcept¶
-
inline const pqvec3_t &wp() const noexcept¶
Beam centre world position, for beam incident upon this vertex. For non-infinite vertices only.
-
inline const auto &surface() const noexcept¶
Surface intersection record, if available.
-
inline const intersection_surface_t *surface_if_any() const noexcept¶
Surface intersection record, if available.
-
inline const auto beam_origin() const¶
-
inline const auto beam_wi() const¶
-
inline auto beam_wavenumber() const¶
-
template<beam::Beam BeamT>
inline std::optional<BeamT> interact(const ads::ads_t &ads, const vertex_t &prev, const vertex_t &next, const bool ignore_fsd = false) const noexcept¶
-
inline bool is_connectible() const noexcept¶
-
inline bool on_emitter() const noexcept¶
-
inline bool is_delta_emitter() const noexcept¶
-
inline bool on_sensor() const noexcept¶
-
inline bool is_delta_sensor() const noexcept¶
-
inline area_density_t pdf(const vertex_t *prev, const vertex_t &next, transport_e mode) const noexcept¶
-
inline area_density_t pdf_next_from_sensor(const vertex_t &next) const noexcept¶
-
inline area_density_t pdf_sensor() const noexcept¶
-
inline area_density_t pdf_next_from_emitter(const vertex_t &next) const noexcept¶
-
inline area_density_t pdf_emitter(const scene_t &scene, const sensor::sensor_t &sensor) const noexcept¶
Public Members
-
vertex_type_e type¶
-
transport_e transport_mode¶
-
bool delta = false¶
-
bool fraunhofer_fsd = false¶
-
area_density_t pdf_fwd = -1 / square(u::m)¶
-
area_density_t pdf_bwd = -1 / square(u::m)¶
-
std::variant<std::monostate, spectral_radiant_flux_beam_t, importance_flux_beam_t> beam¶
- union wt::integrator::plt_bdpt::vertex_t
-
const fraunhofer::free_space_diffraction_t *fraunhofer_fsd_bsdf¶
-
geo_variant_t geo¶
Public Static Functions
-
static inline geo_variant_t vertex_geo(const std::optional<intersection_surface_t> &surface, const pqvec3_t &p) noexcept¶
-
static inline vertex_t create_sensor(const sensor_sample_t &sensor_sample) noexcept¶
-
static inline vertex_t create_sensor(const sensor::sensor_t *sensor, const sensor_direct_connection_t &dc) noexcept¶
-
static inline vertex_t create_sensor(const sensor_direct_sample_t &sensor_sample) noexcept¶
-
static inline vertex_t create_emitter(const emitter_beam_wavenumber_sample_t &e) noexcept¶
-
static inline vertex_t create_emitter(const emitter_direct_sample_t &emitter_sample) noexcept¶
-
static inline vertex_t create_surface(const intersection_surface_t &surface, const bsdf::bsdf_t *bsdf, transport_e transport_mode, const bool is_delta) noexcept¶
-
static inline vertex_t create_fsd(const fraunhofer::free_space_diffraction_t *fsd_bsdf, const pqvec3_t &p, transport_e transport_mode) noexcept¶
-
static inline area_density_t convert_directional_density_to_area(solid_angle_sampling_pd_t dpdf, const pqvec3_t &p, const vertex_t &next) noexcept¶
-
using geo_variant_t = vertex_geo_variant_t¶