#ifndef O3D_DERIV_VERTEX_HPP #define O3D_DERIV_VERTEX_HPP #include "math/vector.hpp" namespace engine::o3d { template struct DerivedVertex { VectorType vertex; float b0, b1; constexpr DerivedVertex() {} constexpr DerivedVertex(const VectorType& vertex, float b0, float b1) : vertex { vertex }, b0 { b0 }, b1 { b1 } {} }; template<> struct DerivedVertex { engine::math::Vector4 vertex; float b0, b1; constexpr DerivedVertex() {} constexpr DerivedVertex(const engine::math::Vector4& vertex, float b0, float b1) : vertex { vertex }, b0 { b0 }, b1 { b1 } {} constexpr DerivedVertex div_by_w() const & { return { vertex.div_by_w(), b0, b1 }; } }; } #endif // O3D_DERIV_VERTEX_HPP