functionΒΆ
-
class function_t : public wt::texture::texture_t
(Real-valued) texture that is an (arbitrary) function of several nested textures.
Public Types
-
using tex_container_t = std::vector<std::shared_ptr<texture_t>>
-
using func_t = unique_function<f_t(const tex_container_t&, const texture_query_t&, const vec2_t&, const wavenumber_t) const noexcept>
Public Functions
-
inline function_t(std::string id, tex_container_t &&texs, func_t &&func, std::string func_description)
-
inline function_t(std::string id, func_t &&func, std::string func_description)
-
function_t(function_t&&) = default
-
virtual ~function_t() noexcept = default
-
inline virtual bool needs_interaction_footprint() const noexcept override
Returns TRUE for textures that make use of the surface interaction footprint data.
-
inline virtual vec2_t resolution() const noexcept override
Returns texture resolution represented via \( \frac{\text{texels}}{\vec{uv}} \). May return an approximation. Can be infinite, e.g., for analytic textures. Can be 1, for constant textures.
-
inline virtual std::shared_ptr<spectrum::spectrum_real_t> mean_spectrum() const noexcept override
Average spectrum of the texture. Returns
nullptr
when an average spectrum cannot be computed.
-
inline virtual std::optional<f_t> mean_value(wavenumber_t k) const noexcept override
Average value of the texture. Returns std::nullopt when an average value cannot be computed.
-
inline virtual vec4_t get_RGBA(const texture_query_t &query) const noexcept override
Samples the texture. Returns filtered RGBA data, without spectral upsampling. Ignores
query.k
. Only relevant for some textures.
-
inline virtual vec2_t f(const texture_query_t &query) const noexcept override
Samples the texture. Returns spectrally upsampled (to wavenumber
query.k
) result.- Returns:
Spectral luminance value and alpha (if any) pair.
-
virtual scene::element::info_t description() const override
Public Static Functions
-
static std::unique_ptr<texture_t> load(std::string id, scene::loader::loader_t *loader, const scene::loader::node_t &node, const wt::wt_context_t &context)
-
using tex_container_t = std::vector<std::shared_ptr<texture_t>>