a69cc9f13d
Since Embree v3.13.0 supports AARCH64, switch back to the
official repo instead of using Embree-aarch64.
`thirdparty/embree/patches/godot-changes.patch` should now contain
an accurate diff of the changes done to the library.
(cherry picked from commit 767e374dce
)
380 lines
8.5 KiB
C++
380 lines
8.5 KiB
C++
// 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
|
|
{
|
|
/********************** Curve4v **************************/
|
|
|
|
template<>
|
|
const char* Curve4v::Type::name () const {
|
|
return "curve4v";
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4v::Type::sizeActive(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return ((Line4i*)This)->size();
|
|
else
|
|
return ((Curve4v*)This)->N;
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4v::Type::sizeTotal(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return 4;
|
|
else
|
|
return ((Curve4v*)This)->N;
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4v::Type::getBytes(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return Line4i::bytes(sizeActive(This));
|
|
else
|
|
return Curve4v::bytes(sizeActive(This));
|
|
}
|
|
|
|
/********************** Curve4i **************************/
|
|
|
|
template<>
|
|
const char* Curve4i::Type::name () const {
|
|
return "curve4i";
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4i::Type::sizeActive(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return ((Line4i*)This)->size();
|
|
else
|
|
return ((Curve4i*)This)->N;
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4i::Type::sizeTotal(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return 4;
|
|
else
|
|
return ((Curve4i*)This)->N;
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4i::Type::getBytes(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return Line4i::bytes(sizeActive(This));
|
|
else
|
|
return Curve4i::bytes(sizeActive(This));
|
|
}
|
|
|
|
/********************** Curve4iMB **************************/
|
|
|
|
template<>
|
|
const char* Curve4iMB::Type::name () const {
|
|
return "curve4imb";
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4iMB::Type::sizeActive(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return ((Line4i*)This)->size();
|
|
else
|
|
return ((Curve4iMB*)This)->N;
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4iMB::Type::sizeTotal(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return 4;
|
|
else
|
|
return ((Curve4iMB*)This)->N;
|
|
}
|
|
|
|
template<>
|
|
size_t Curve4iMB::Type::getBytes(const char* This) const
|
|
{
|
|
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
|
|
return Line4i::bytes(sizeActive(This));
|
|
else
|
|
return Curve4iMB::bytes(sizeActive(This));
|
|
}
|
|
|
|
/********************** Line4i **************************/
|
|
|
|
template<>
|
|
const char* Line4i::Type::name () const {
|
|
return "line4i";
|
|
}
|
|
|
|
template<>
|
|
size_t Line4i::Type::sizeActive(const char* This) const {
|
|
return ((Line4i*)This)->size();
|
|
}
|
|
|
|
template<>
|
|
size_t Line4i::Type::sizeTotal(const char* This) const {
|
|
return 4;
|
|
}
|
|
|
|
template<>
|
|
size_t Line4i::Type::getBytes(const char* This) const {
|
|
return sizeof(Line4i);
|
|
}
|
|
|
|
/********************** Triangle4 **************************/
|
|
|
|
template<>
|
|
const char* Triangle4::Type::name () const {
|
|
return "triangle4";
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4::Type::sizeActive(const char* This) const {
|
|
return ((Triangle4*)This)->size();
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4::Type::sizeTotal(const char* This) const {
|
|
return 4;
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4::Type::getBytes(const char* This) const {
|
|
return sizeof(Triangle4);
|
|
}
|
|
|
|
/********************** Triangle4v **************************/
|
|
|
|
template<>
|
|
const char* Triangle4v::Type::name () const {
|
|
return "triangle4v";
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4v::Type::sizeActive(const char* This) const {
|
|
return ((Triangle4v*)This)->size();
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4v::Type::sizeTotal(const char* This) const {
|
|
return 4;
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4v::Type::getBytes(const char* This) const {
|
|
return sizeof(Triangle4v);
|
|
}
|
|
|
|
/********************** Triangle4i **************************/
|
|
|
|
template<>
|
|
const char* Triangle4i::Type::name () const {
|
|
return "triangle4i";
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4i::Type::sizeActive(const char* This) const {
|
|
return ((Triangle4i*)This)->size();
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4i::Type::sizeTotal(const char* This) const {
|
|
return 4;
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4i::Type::getBytes(const char* This) const {
|
|
return sizeof(Triangle4i);
|
|
}
|
|
|
|
/********************** Triangle4vMB **************************/
|
|
|
|
template<>
|
|
const char* Triangle4vMB::Type::name () const {
|
|
return "triangle4vmb";
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4vMB::Type::sizeActive(const char* This) const {
|
|
return ((Triangle4vMB*)This)->size();
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4vMB::Type::sizeTotal(const char* This) const {
|
|
return 4;
|
|
}
|
|
|
|
template<>
|
|
size_t Triangle4vMB::Type::getBytes(const char* This) const {
|
|
return sizeof(Triangle4vMB);
|
|
}
|
|
|
|
/********************** Quad4v **************************/
|
|
|
|
template<>
|
|
const char* Quad4v::Type::name () const {
|
|
return "quad4v";
|
|
}
|
|
|
|
template<>
|
|
size_t Quad4v::Type::sizeActive(const char* This) const {
|
|
return ((Quad4v*)This)->size();
|
|
}
|
|
|
|
template<>
|
|
size_t Quad4v::Type::sizeTotal(const char* This) const {
|
|
return 4;
|
|
}
|
|
|
|
template<>
|
|
size_t Quad4v::Type::getBytes(const char* This) const {
|
|
return sizeof(Quad4v);
|
|
}
|
|
|
|
/********************** Quad4i **************************/
|
|
|
|
template<>
|
|
const char* Quad4i::Type::name () const {
|
|
return "quad4i";
|
|
}
|
|
|
|
template<>
|
|
size_t Quad4i::Type::sizeActive(const char* This) const {
|
|
return ((Quad4i*)This)->size();
|
|
}
|
|
|
|
template<>
|
|
size_t Quad4i::Type::sizeTotal(const char* This) const {
|
|
return 4;
|
|
}
|
|
|
|
template<>
|
|
size_t Quad4i::Type::getBytes(const char* This) const {
|
|
return sizeof(Quad4i);
|
|
}
|
|
|
|
/********************** SubdivPatch1 **************************/
|
|
|
|
const char* SubdivPatch1::Type::name () const {
|
|
return "subdivpatch1";
|
|
}
|
|
|
|
size_t SubdivPatch1::Type::sizeActive(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
size_t SubdivPatch1::Type::sizeTotal(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
size_t SubdivPatch1::Type::getBytes(const char* This) const {
|
|
return sizeof(SubdivPatch1);
|
|
}
|
|
|
|
SubdivPatch1::Type SubdivPatch1::type;
|
|
|
|
/********************** Virtual Object **************************/
|
|
|
|
const char* Object::Type::name () const {
|
|
return "object";
|
|
}
|
|
|
|
size_t Object::Type::sizeActive(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
size_t Object::Type::sizeTotal(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
size_t Object::Type::getBytes(const char* This) const {
|
|
return sizeof(Object);
|
|
}
|
|
|
|
Object::Type Object::type;
|
|
|
|
/********************** Instance **************************/
|
|
|
|
const char* InstancePrimitive::Type::name () const {
|
|
return "instance";
|
|
}
|
|
|
|
size_t InstancePrimitive::Type::sizeActive(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
size_t InstancePrimitive::Type::sizeTotal(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
size_t InstancePrimitive::Type::getBytes(const char* This) const {
|
|
return sizeof(InstancePrimitive);
|
|
}
|
|
|
|
InstancePrimitive::Type InstancePrimitive::type;
|
|
|
|
/********************** SubGrid **************************/
|
|
|
|
const char* SubGrid::Type::name () const {
|
|
return "subgrid";
|
|
}
|
|
|
|
size_t SubGrid::Type::sizeActive(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
size_t SubGrid::Type::sizeTotal(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
size_t SubGrid::Type::getBytes(const char* This) const {
|
|
return sizeof(SubGrid);
|
|
}
|
|
|
|
SubGrid::Type SubGrid::type;
|
|
|
|
/********************** SubGridQBVH4 **************************/
|
|
|
|
template<>
|
|
const char* SubGridQBVH4::Type::name () const {
|
|
return "SubGridQBVH4";
|
|
}
|
|
|
|
template<>
|
|
size_t SubGridQBVH4::Type::sizeActive(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
template<>
|
|
size_t SubGridQBVH4::Type::sizeTotal(const char* This) const {
|
|
return 1;
|
|
}
|
|
|
|
template<>
|
|
size_t SubGridQBVH4::Type::getBytes(const char* This) const {
|
|
return sizeof(SubGridQBVH4);
|
|
}
|
|
}
|