diff options
Diffstat (limited to 'thirdparty/embree-aarch64/kernels/subdiv/subdivpatch1base.h')
| -rw-r--r-- | thirdparty/embree-aarch64/kernels/subdiv/subdivpatch1base.h | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/thirdparty/embree-aarch64/kernels/subdiv/subdivpatch1base.h b/thirdparty/embree-aarch64/kernels/subdiv/subdivpatch1base.h deleted file mode 100644 index d5bc403cca..0000000000 --- a/thirdparty/embree-aarch64/kernels/subdiv/subdivpatch1base.h +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2009-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -#pragma once - -#include "../geometry/primitive.h" -#include "bspline_patch.h" -#include "bezier_patch.h" -#include "gregory_patch.h" -#include "gregory_patch_dense.h" -#include "tessellation.h" -#include "tessellation_cache.h" -#include "gridrange.h" -#include "patch_eval_grid.h" -#include "feature_adaptive_eval_grid.h" -#include "../common/scene_subdiv_mesh.h" - -namespace embree -{ - struct __aligned(64) SubdivPatch1Base - { - public: - - enum Type { - INVALID_PATCH = 0, - BSPLINE_PATCH = 1, - BEZIER_PATCH = 2, - GREGORY_PATCH = 3, - EVAL_PATCH = 5, - BILINEAR_PATCH = 6, - }; - - enum Flags { - TRANSITION_PATCH = 16, - }; - - /*! Default constructor. */ - __forceinline SubdivPatch1Base () {} - - SubdivPatch1Base (const unsigned int gID, - const unsigned int pID, - const unsigned int subPatch, - const SubdivMesh *const mesh, - const size_t time, - const Vec2f uv[4], - const float edge_level[4], - const int subdiv[4], - const int simd_width); - - __forceinline bool needsStitching() const { - return flags & TRANSITION_PATCH; - } - - __forceinline Vec2f getUV(const size_t i) const { - return Vec2f((float)u[i],(float)v[i]) * (8.0f/0x10000); - } - - static void computeEdgeLevels(const float edge_level[4], const int subdiv[4], float level[4]); - static Vec2i computeGridSize(const float level[4]); - bool updateEdgeLevels(const float edge_level[4], const int subdiv[4], const SubdivMesh *const mesh, const int simd_width); - - public: - - __forceinline size_t getGridBytes() const { - const size_t grid_size_xyzuv = (grid_size_simd_blocks * VSIZEX) * 4; - return 64*((grid_size_xyzuv+15) / 16); - } - - __forceinline void write_lock() { mtx.lock(); } - __forceinline void write_unlock() { mtx.unlock(); } - __forceinline bool try_write_lock() { return mtx.try_lock(); } - //__forceinline bool try_read_lock() { return mtx.try_read_lock(); } - - __forceinline void resetRootRef() { - //assert( mtx.hasInitialState() ); - root_ref = SharedLazyTessellationCache::Tag(); - } - - __forceinline SharedLazyTessellationCache::CacheEntry& entry() { - return (SharedLazyTessellationCache::CacheEntry&) root_ref; - } - - public: - __forceinline unsigned int geomID() const { - return geom; - } - - __forceinline unsigned int primID() const { - return prim; - } - - public: - SharedLazyTessellationCache::Tag root_ref; - SpinLock mtx; - - unsigned short u[4]; //!< 16bit discretized u,v coordinates - unsigned short v[4]; - float level[4]; - - unsigned char flags; - unsigned char type; - unsigned short grid_u_res; - unsigned int geom; //!< geometry ID of the subdivision mesh this patch belongs to - unsigned int prim; //!< primitive ID of this subdivision patch - unsigned short grid_v_res; - - unsigned short grid_size_simd_blocks; - unsigned int time_; - - struct PatchHalfEdge { - const HalfEdge* edge; - unsigned subPatch; - }; - - Vec3fa patch_v[4][4]; - - const HalfEdge *edge() const { return ((PatchHalfEdge*)patch_v)->edge; } - unsigned time() const { return time_; } - unsigned subPatch() const { return ((PatchHalfEdge*)patch_v)->subPatch; } - - void set_edge(const HalfEdge *h) const { ((PatchHalfEdge*)patch_v)->edge = h; } - void set_subPatch(const unsigned s) const { ((PatchHalfEdge*)patch_v)->subPatch = s; } - }; - - namespace isa - { - Vec3fa patchEval(const SubdivPatch1Base& patch, const float uu, const float vv); - Vec3fa patchNormal(const SubdivPatch1Base& patch, const float uu, const float vv); - - template<typename simdf> - Vec3<simdf> patchEval(const SubdivPatch1Base& patch, const simdf& uu, const simdf& vv); - - template<typename simdf> - Vec3<simdf> patchNormal(const SubdivPatch1Base& patch, const simdf& uu, const simdf& vv); - - - /* eval grid over patch and stich edges when required */ - void evalGrid(const SubdivPatch1Base& patch, - const unsigned x0, const unsigned x1, - const unsigned y0, const unsigned y1, - const unsigned swidth, const unsigned sheight, - float *__restrict__ const grid_x, - float *__restrict__ const grid_y, - float *__restrict__ const grid_z, - float *__restrict__ const grid_u, - float *__restrict__ const grid_v, - const SubdivMesh* const geom); - - /* eval grid over patch and stich edges when required */ - BBox3fa evalGridBounds(const SubdivPatch1Base& patch, - const unsigned x0, const unsigned x1, - const unsigned y0, const unsigned y1, - const unsigned swidth, const unsigned sheight, - const SubdivMesh* const geom); - } -} |