Revision control

++ // Copyright 2009-2021 Intel Corporation
++ // SPDX-License-Identifier: Apache-2.0
++
++ #include "primitive.h"
++ #include "curveNv.h"
++ #include "curveNi.h"
++ #include "curveNi_mb.h"
++ #include "linei.h"
++ #include "triangle.h"
++ #include "trianglev.h"
++ #include "trianglev_mb.h"
++ #include "trianglei.h"
++ #include "quadv.h"
++ #include "quadi.h"
++ #include "subdivpatch1.h"
++ #include "object.h"
++ #include "instance.h"
++ #include "subgrid.h"
++
++ namespace embree
++ {
++ /********************** Curve8v **************************/
++
++ template<>
++ const char* Curve8v::Type::name () const {
++ return "curve8v";
++ }
++
++ template<>
++ size_t Curve8v::Type::sizeActive(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return ((Line8i*)This)->size();
++ else
++ return ((Curve8v*)This)->N;
++ }
++
++ template<>
++ size_t Curve8v::Type::sizeTotal(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return 8;
++ else
++ return ((Curve8v*)This)->N;
++ }
++
++ template<>
++ size_t Curve8v::Type::getBytes(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return Line8i::bytes(sizeActive(This));
++ else
++ return Curve8v::bytes(sizeActive(This));
++ }
++
++ /********************** Curve8i **************************/
++
++ template<>
++ const char* Curve8i::Type::name () const {
++ return "curve8i";
++ }
++
++ template<>
++ size_t Curve8i::Type::sizeActive(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return ((Line8i*)This)->size();
++ else
++ return ((Curve8i*)This)->N;
++ }
++
++ template<>
++ size_t Curve8i::Type::sizeTotal(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return 8;
++ else
++ return ((Curve8i*)This)->N;
++ }
++
++ template<>
++ size_t Curve8i::Type::getBytes(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return Line8i::bytes(sizeActive(This));
++ else
++ return Curve8i::bytes(sizeActive(This));
++ }
++
++ /********************** Curve8iMB **************************/
++
++ template<>
++ const char* Curve8iMB::Type::name () const {
++ return "curve8imb";
++ }
++
++ template<>
++ size_t Curve8iMB::Type::sizeActive(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return ((Line8i*)This)->size();
++ else
++ return ((Curve8iMB*)This)->N;
++ }
++
++ template<>
++ size_t Curve8iMB::Type::sizeTotal(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return 8;
++ else
++ return ((Curve8iMB*)This)->N;
++ }
++
++ template<>
++ size_t Curve8iMB::Type::getBytes(const char* This) const
++ {
++ if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
++ return Line8i::bytes(sizeActive(This));
++ else
++ return Curve8iMB::bytes(sizeActive(This));
++ }
++
++ /********************** SubGridQBVH8 **************************/
++
++ template<>
++ const char* SubGridQBVH8::Type::name () const {
++ return "SubGridQBVH8";
++ }
++
++ template<>
++ size_t SubGridQBVH8::Type::sizeActive(const char* This) const {
++ return 1;
++ }
++
++ template<>
++ size_t SubGridQBVH8::Type::sizeTotal(const char* This) const {
++ return 1;
++ }
++
++ template<>
++ size_t SubGridQBVH8::Type::getBytes(const char* This) const {
++ return sizeof(SubGridQBVH8);
++ }
++ }