1#ifndef _BBM_SHADINGFRAME_H_
2#define _BBM_SHADINGFRAME_H_
28 using value_t = std::decay_t<T>;
31 vec3d<value_t> X, Y, Z = bbm::normalize(normal);
34 value_t sign = bbm::sign(
vec::z(Z));
35 const value_t a = -1.0 / (sign +
vec::z(Z));
38 X = vec3d<value_t>(1.0 + sign *
vec::x(Z) *
vec::x(Z) * a,
Defines additional helper methods for vectors.
constexpr decltype(auto) y(bbm::vec3d< T > &v)
Definition: vec.h:23
constexpr decltype(auto) z(bbm::vec3d< T > &v)
Definition: vec.h:26
constexpr decltype(auto) x(bbm::vec3d< T > &v)
Definition: vec.h:20
Definition: aggregatebsdf.h:29
constexpr M transpose(const M &m)
Bring 'transpose' in the bbm namespace.
Definition: mat.h:170
bbm::detail::mat< vec3d< T >, 3 > mat3d
3D matrix
Definition: mat.h:178
mat3d< std::decay_t< T > > toGlobalShadingFrame(const vec3d< T > &normal)
Construct a local shading frame to global frame transformation given a normal direction.
Definition: shading_frame.h:26
auto toLocalShadingFrame(const vec3d< T > &normal)
Construct a global to local shading frame transformation.
Definition: shading_frame.h:55