mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 05:31:01 +00:00 
			
		
		
		
	 767e374dce
			
		
	
	
		767e374dce
		
	
	
	
	
		
			
			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.
		
			
				
	
	
		
			379 lines
		
	
	
	
		
			8.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			379 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);
 | |
|   }
 | |
| }
 |