Class shape_t

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class shape_t : public wt::scene::scene_element_t

Contains a triangular mesh, a BSDF, and an optional area emitter. Provides surface sampling facilities.

Public Functions

shape_t(std::string id, std::shared_ptr<bsdf_t> bsdf, std::shared_ptr<emitter_t> emitter, mesh_t mesh)
shape_t(shape_t&&) = default
shape_t(const shape_t&) = default
inline const auto &get_bsdf() const
inline const auto &get_emitter() const
inline const auto &get_mesh() const
inline auto get_surface_area() const noexcept
position_sample_t sample_position(sampler::sampler_t &sampler) const noexcept

Samples a position on the shape.

inline area_sampling_pd_t pdf_position(const pqvec3_t &p) const noexcept
virtual scene::element::info_t description() const override

Public Static Functions

static inline constexpr std::string scene_element_class() noexcept
static std::shared_ptr<shape_t> load(std::string id, scene::loader::loader_t *loader, const scene::loader::node_t &node, const wt::wt_context_t &context)
static mesh_t load_mesh(const scene::loader::node_t &node, const std::string &shape_id, const transform_d_t &to_world, const wt::wt_context_t &context, std::vector<const scene::loader::node_t*> &consumed_attributes)
struct triangle_sampling_data_t

Public Members

discrete_distribution_t<area_t> triangle_surface_area_distribution
area_t surface_area
area_density_t recp_surface_area