Path: blob/master/thirdparty/embree/kernels/geometry/primitive4.cpp
9905 views
// Copyright 2009-2021 Intel Corporation1// SPDX-License-Identifier: Apache-2.023#include "primitive.h"4#include "curveNv.h"5#include "curveNi.h"6#include "curveNi_mb.h"7#include "linei.h"8#include "triangle.h"9#include "trianglev.h"10#include "trianglev_mb.h"11#include "trianglei.h"12#include "quadv.h"13#include "quadi.h"14#include "subdivpatch1.h"15#include "object.h"16#include "instance.h"17#include "instance_array.h"18#include "subgrid.h"1920namespace embree21{22/********************** Curve4v **************************/2324template<>25const char* Curve4v::Type::name () const {26return "curve4v";27}2829template<>30size_t Curve4v::Type::sizeActive(const char* This) const31{32if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)33return ((Line4i*)This)->size();34else35return ((Curve4v*)This)->N;36}3738template<>39size_t Curve4v::Type::sizeTotal(const char* This) const40{41if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)42return 4;43else44return ((Curve4v*)This)->N;45}4647template<>48size_t Curve4v::Type::getBytes(const char* This) const49{50if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)51return Line4i::bytes(sizeActive(This));52else53return Curve4v::bytes(sizeActive(This));54}5556/********************** Curve4i **************************/5758template<>59const char* Curve4i::Type::name () const {60return "curve4i";61}6263template<>64size_t Curve4i::Type::sizeActive(const char* This) const65{66if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)67return ((Line4i*)This)->size();68else69return ((Curve4i*)This)->N;70}7172template<>73size_t Curve4i::Type::sizeTotal(const char* This) const74{75if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)76return 4;77else78return ((Curve4i*)This)->N;79}8081template<>82size_t Curve4i::Type::getBytes(const char* This) const83{84if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)85return Line4i::bytes(sizeActive(This));86else87return Curve4i::bytes(sizeActive(This));88}8990/********************** Curve4iMB **************************/9192template<>93const char* Curve4iMB::Type::name () const {94return "curve4imb";95}9697template<>98size_t Curve4iMB::Type::sizeActive(const char* This) const99{100if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)101return ((Line4i*)This)->size();102else103return ((Curve4iMB*)This)->N;104}105106template<>107size_t Curve4iMB::Type::sizeTotal(const char* This) const108{109if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)110return 4;111else112return ((Curve4iMB*)This)->N;113}114115template<>116size_t Curve4iMB::Type::getBytes(const char* This) const117{118if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)119return Line4i::bytes(sizeActive(This));120else121return Curve4iMB::bytes(sizeActive(This));122}123124/********************** Line4i **************************/125126template<>127const char* Line4i::Type::name () const {128return "line4i";129}130131template<>132size_t Line4i::Type::sizeActive(const char* This) const {133return ((Line4i*)This)->size();134}135136template<>137size_t Line4i::Type::sizeTotal(const char* This) const {138return 4;139}140141template<>142size_t Line4i::Type::getBytes(const char* This) const {143return sizeof(Line4i);144}145146/********************** Triangle4 **************************/147148template<>149const char* Triangle4::Type::name () const {150return "triangle4";151}152153template<>154size_t Triangle4::Type::sizeActive(const char* This) const {155return ((Triangle4*)This)->size();156}157158template<>159size_t Triangle4::Type::sizeTotal(const char* This) const {160return 4;161}162163template<>164size_t Triangle4::Type::getBytes(const char* This) const {165return sizeof(Triangle4);166}167168/********************** Triangle4v **************************/169170template<>171const char* Triangle4v::Type::name () const {172return "triangle4v";173}174175template<>176size_t Triangle4v::Type::sizeActive(const char* This) const {177return ((Triangle4v*)This)->size();178}179180template<>181size_t Triangle4v::Type::sizeTotal(const char* This) const {182return 4;183}184185template<>186size_t Triangle4v::Type::getBytes(const char* This) const {187return sizeof(Triangle4v);188}189190/********************** Triangle4i **************************/191192template<>193const char* Triangle4i::Type::name () const {194return "triangle4i";195}196197template<>198size_t Triangle4i::Type::sizeActive(const char* This) const {199return ((Triangle4i*)This)->size();200}201202template<>203size_t Triangle4i::Type::sizeTotal(const char* This) const {204return 4;205}206207template<>208size_t Triangle4i::Type::getBytes(const char* This) const {209return sizeof(Triangle4i);210}211212/********************** Triangle4vMB **************************/213214template<>215const char* Triangle4vMB::Type::name () const {216return "triangle4vmb";217}218219template<>220size_t Triangle4vMB::Type::sizeActive(const char* This) const {221return ((Triangle4vMB*)This)->size();222}223224template<>225size_t Triangle4vMB::Type::sizeTotal(const char* This) const {226return 4;227}228229template<>230size_t Triangle4vMB::Type::getBytes(const char* This) const {231return sizeof(Triangle4vMB);232}233234/********************** Quad4v **************************/235236template<>237const char* Quad4v::Type::name () const {238return "quad4v";239}240241template<>242size_t Quad4v::Type::sizeActive(const char* This) const {243return ((Quad4v*)This)->size();244}245246template<>247size_t Quad4v::Type::sizeTotal(const char* This) const {248return 4;249}250251template<>252size_t Quad4v::Type::getBytes(const char* This) const {253return sizeof(Quad4v);254}255256/********************** Quad4i **************************/257258template<>259const char* Quad4i::Type::name () const {260return "quad4i";261}262263template<>264size_t Quad4i::Type::sizeActive(const char* This) const {265return ((Quad4i*)This)->size();266}267268template<>269size_t Quad4i::Type::sizeTotal(const char* This) const {270return 4;271}272273template<>274size_t Quad4i::Type::getBytes(const char* This) const {275return sizeof(Quad4i);276}277278/********************** SubdivPatch1 **************************/279280const char* SubdivPatch1::Type::name () const {281return "subdivpatch1";282}283284size_t SubdivPatch1::Type::sizeActive(const char* This) const {285return 1;286}287288size_t SubdivPatch1::Type::sizeTotal(const char* This) const {289return 1;290}291292size_t SubdivPatch1::Type::getBytes(const char* This) const {293return sizeof(SubdivPatch1);294}295296SubdivPatch1::Type SubdivPatch1::type;297298/********************** Virtual Object **************************/299300const char* Object::Type::name () const {301return "object";302}303304size_t Object::Type::sizeActive(const char* This) const {305return 1;306}307308size_t Object::Type::sizeTotal(const char* This) const {309return 1;310}311312size_t Object::Type::getBytes(const char* This) const {313return sizeof(Object);314}315316Object::Type Object::type;317318/********************** Instance **************************/319320const char* InstancePrimitive::Type::name () const {321return "instance";322}323324size_t InstancePrimitive::Type::sizeActive(const char* This) const {325return 1;326}327328size_t InstancePrimitive::Type::sizeTotal(const char* This) const {329return 1;330}331332size_t InstancePrimitive::Type::getBytes(const char* This) const {333return sizeof(InstancePrimitive);334}335336InstancePrimitive::Type InstancePrimitive::type;337338/********************** InstanceArray4 **************************/339340const char* InstanceArrayPrimitive::Type::name () const {341return "instance_array";342}343344size_t InstanceArrayPrimitive::Type::sizeActive(const char* This) const {345return 1;346}347348size_t InstanceArrayPrimitive::Type::sizeTotal(const char* This) const {349return 1;350}351352size_t InstanceArrayPrimitive::Type::getBytes(const char* This) const {353return sizeof(InstanceArrayPrimitive);354}355356InstanceArrayPrimitive::Type InstanceArrayPrimitive::type;357358/********************** SubGrid **************************/359360const char* SubGrid::Type::name () const {361return "subgrid";362}363364size_t SubGrid::Type::sizeActive(const char* This) const {365return 1;366}367368size_t SubGrid::Type::sizeTotal(const char* This) const {369return 1;370}371372size_t SubGrid::Type::getBytes(const char* This) const {373return sizeof(SubGrid);374}375376SubGrid::Type SubGrid::type;377378/********************** SubGridQBVH4 **************************/379380template<>381const char* SubGridQBVH4::Type::name () const {382return "SubGridQBVH4";383}384385template<>386size_t SubGridQBVH4::Type::sizeActive(const char* This) const {387return 1;388}389390template<>391size_t SubGridQBVH4::Type::sizeTotal(const char* This) const {392return 1;393}394395template<>396size_t SubGridQBVH4::Type::getBytes(const char* This) const {397return sizeof(SubGridQBVH4);398}399}400401402