| 1 | // Copyright 2009-2021 Intel Corporation |
| 2 | // SPDX-License-Identifier: Apache-2.0 |
| 3 | |
| 4 | #pragma once |
| 5 | |
| 6 | #include "bvh_factory.h" |
| 7 | |
| 8 | namespace embree |
| 9 | { |
| 10 | /*! BVH8 instantiations */ |
| 11 | class BVH8Factory : public BVHFactory |
| 12 | { |
| 13 | public: |
| 14 | BVH8Factory(int bfeatures, int ifeatures); |
| 15 | |
| 16 | public: |
| 17 | Accel* BVH8OBBVirtualCurve8v(Scene* scene, IntersectVariant ivariant); |
| 18 | Accel* BVH8OBBVirtualCurve8iMB(Scene* scene, IntersectVariant ivariant); |
| 19 | DEFINE_SYMBOL2(VirtualCurveIntersector*,VirtualCurveIntersector8v); |
| 20 | DEFINE_SYMBOL2(VirtualCurveIntersector*,VirtualCurveIntersector8iMB); |
| 21 | |
| 22 | Accel* BVH8Triangle4 (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 23 | Accel* BVH8Triangle4v (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 24 | Accel* BVH8Triangle4i (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 25 | Accel* BVH8Triangle4vMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 26 | Accel* BVH8Triangle4iMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 27 | |
| 28 | Accel* BVH8Quad4v (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 29 | Accel* BVH8Quad4i (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 30 | Accel* BVH8Quad4iMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 31 | |
| 32 | Accel* BVH8QuantizedTriangle4i(Scene* scene); |
| 33 | Accel* BVH8QuantizedTriangle4(Scene* scene); |
| 34 | Accel* BVH8QuantizedQuad4i(Scene* scene); |
| 35 | |
| 36 | Accel* BVH8UserGeometry(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC); |
| 37 | Accel* BVH8UserGeometryMB(Scene* scene); |
| 38 | |
| 39 | Accel* BVH8Instance(Scene* scene, bool isExpensive, BuildVariant bvariant = BuildVariant::STATIC); |
| 40 | Accel* BVH8InstanceMB(Scene* scene, bool isExpensive); |
| 41 | |
| 42 | Accel* BVH8Grid(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 43 | Accel* BVH8GridMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
| 44 | |
| 45 | private: |
| 46 | void selectBuilders(int features); |
| 47 | void selectIntersectors(int features); |
| 48 | |
| 49 | private: |
| 50 | Accel::Intersectors BVH8OBBVirtualCurveIntersectors(BVH8* bvh, VirtualCurveIntersector* leafIntersector, IntersectVariant ivariant); |
| 51 | Accel::Intersectors BVH8OBBVirtualCurveIntersectorsMB(BVH8* bvh, VirtualCurveIntersector* leafIntersector, IntersectVariant ivariant); |
| 52 | |
| 53 | Accel::Intersectors BVH8Triangle4Intersectors(BVH8* bvh, IntersectVariant ivariant); |
| 54 | Accel::Intersectors BVH8Triangle4vIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 55 | Accel::Intersectors BVH8Triangle4iIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 56 | Accel::Intersectors BVH8Triangle4iMBIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 57 | Accel::Intersectors BVH8Triangle4vMBIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 58 | |
| 59 | Accel::Intersectors BVH8Quad4vIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 60 | Accel::Intersectors BVH8Quad4iIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 61 | Accel::Intersectors BVH8Quad4iMBIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 62 | |
| 63 | Accel::Intersectors QBVH8Triangle4iIntersectors(BVH8* bvh); |
| 64 | Accel::Intersectors QBVH8Triangle4Intersectors(BVH8* bvh); |
| 65 | Accel::Intersectors QBVH8Quad4iIntersectors(BVH8* bvh); |
| 66 | |
| 67 | Accel::Intersectors BVH8UserGeometryIntersectors(BVH8* bvh); |
| 68 | Accel::Intersectors BVH8UserGeometryMBIntersectors(BVH8* bvh); |
| 69 | |
| 70 | Accel::Intersectors BVH8InstanceIntersectors(BVH8* bvh); |
| 71 | Accel::Intersectors BVH8InstanceMBIntersectors(BVH8* bvh); |
| 72 | |
| 73 | Accel::Intersectors BVH8GridIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 74 | Accel::Intersectors BVH8GridMBIntersectors(BVH8* bvh, IntersectVariant ivariant); |
| 75 | |
| 76 | private: |
| 77 | DEFINE_SYMBOL2(Accel::Collider,BVH8ColliderUserGeom); |
| 78 | |
| 79 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8OBBVirtualCurveIntersector1); |
| 80 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8OBBVirtualCurveIntersector1MB); |
| 81 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8OBBVirtualCurveIntersectorRobust1); |
| 82 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8OBBVirtualCurveIntersectorRobust1MB); |
| 83 | |
| 84 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4Intersector1Moeller); |
| 85 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4iIntersector1Moeller); |
| 86 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4vIntersector1Pluecker); |
| 87 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4iIntersector1Pluecker); |
| 88 | |
| 89 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4vMBIntersector1Moeller); |
| 90 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4iMBIntersector1Moeller); |
| 91 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4vMBIntersector1Pluecker); |
| 92 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4iMBIntersector1Pluecker); |
| 93 | |
| 94 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Triangle4vIntersector1Woop); |
| 95 | |
| 96 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Quad4vIntersector1Moeller); |
| 97 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Quad4iIntersector1Moeller); |
| 98 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Quad4vIntersector1Pluecker); |
| 99 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Quad4iIntersector1Pluecker); |
| 100 | |
| 101 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Quad4iMBIntersector1Moeller); |
| 102 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8Quad4iMBIntersector1Pluecker); |
| 103 | |
| 104 | DEFINE_SYMBOL2(Accel::Intersector1,QBVH8Triangle4iIntersector1Pluecker); |
| 105 | DEFINE_SYMBOL2(Accel::Intersector1,QBVH8Triangle4Intersector1Moeller); |
| 106 | DEFINE_SYMBOL2(Accel::Intersector1,QBVH8Quad4iIntersector1Pluecker); |
| 107 | |
| 108 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8VirtualIntersector1); |
| 109 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8VirtualMBIntersector1); |
| 110 | |
| 111 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8InstanceIntersector1); |
| 112 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8InstanceMBIntersector1); |
| 113 | |
| 114 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8GridIntersector1Moeller); |
| 115 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8GridMBIntersector1Moeller); |
| 116 | DEFINE_SYMBOL2(Accel::Intersector1,BVH8GridIntersector1Pluecker); |
| 117 | |
| 118 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8OBBVirtualCurveIntersector4Hybrid); |
| 119 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8OBBVirtualCurveIntersector4HybridMB); |
| 120 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8OBBVirtualCurveIntersectorRobust4Hybrid); |
| 121 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8OBBVirtualCurveIntersectorRobust4HybridMB); |
| 122 | |
| 123 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4Intersector4HybridMoeller); |
| 124 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4Intersector4HybridMoellerNoFilter); |
| 125 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4iIntersector4HybridMoeller); |
| 126 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4vIntersector4HybridPluecker); |
| 127 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4iIntersector4HybridPluecker); |
| 128 | |
| 129 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4vMBIntersector4HybridMoeller); |
| 130 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4iMBIntersector4HybridMoeller); |
| 131 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4vMBIntersector4HybridPluecker); |
| 132 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Triangle4iMBIntersector4HybridPluecker); |
| 133 | |
| 134 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Quad4vIntersector4HybridMoeller); |
| 135 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Quad4vIntersector4HybridMoellerNoFilter); |
| 136 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Quad4iIntersector4HybridMoeller); |
| 137 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Quad4vIntersector4HybridPluecker); |
| 138 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Quad4iIntersector4HybridPluecker); |
| 139 | |
| 140 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Quad4iMBIntersector4HybridMoeller); |
| 141 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8Quad4iMBIntersector4HybridPluecker); |
| 142 | |
| 143 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8VirtualIntersector4Chunk); |
| 144 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8VirtualMBIntersector4Chunk); |
| 145 | |
| 146 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8InstanceIntersector4Chunk); |
| 147 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8InstanceMBIntersector4Chunk); |
| 148 | |
| 149 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8GridIntersector4HybridMoeller); |
| 150 | DEFINE_SYMBOL2(Accel::Intersector4,BVH8GridIntersector4HybridPluecker); |
| 151 | |
| 152 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8OBBVirtualCurveIntersector8Hybrid); |
| 153 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8OBBVirtualCurveIntersector8HybridMB); |
| 154 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8OBBVirtualCurveIntersectorRobust8Hybrid); |
| 155 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8OBBVirtualCurveIntersectorRobust8HybridMB); |
| 156 | |
| 157 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4Intersector8HybridMoeller); |
| 158 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4Intersector8HybridMoellerNoFilter); |
| 159 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4iIntersector8HybridMoeller); |
| 160 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4vIntersector8HybridPluecker); |
| 161 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4iIntersector8HybridPluecker); |
| 162 | |
| 163 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4vMBIntersector8HybridMoeller); |
| 164 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4iMBIntersector8HybridMoeller); |
| 165 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4vMBIntersector8HybridPluecker); |
| 166 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Triangle4iMBIntersector8HybridPluecker); |
| 167 | |
| 168 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Quad4vIntersector8HybridMoeller); |
| 169 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Quad4vIntersector8HybridMoellerNoFilter); |
| 170 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Quad4iIntersector8HybridMoeller); |
| 171 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Quad4vIntersector8HybridPluecker); |
| 172 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Quad4iIntersector8HybridPluecker); |
| 173 | |
| 174 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Quad4iMBIntersector8HybridMoeller); |
| 175 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8Quad4iMBIntersector8HybridPluecker); |
| 176 | |
| 177 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8VirtualIntersector8Chunk); |
| 178 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8VirtualMBIntersector8Chunk); |
| 179 | |
| 180 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8InstanceIntersector8Chunk); |
| 181 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8InstanceMBIntersector8Chunk); |
| 182 | |
| 183 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8GridIntersector8HybridMoeller); |
| 184 | DEFINE_SYMBOL2(Accel::Intersector8,BVH8GridIntersector8HybridPluecker); |
| 185 | |
| 186 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8OBBVirtualCurveIntersector16Hybrid); |
| 187 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8OBBVirtualCurveIntersector16HybridMB); |
| 188 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8OBBVirtualCurveIntersectorRobust16Hybrid); |
| 189 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8OBBVirtualCurveIntersectorRobust16HybridMB); |
| 190 | |
| 191 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4Intersector16HybridMoeller); |
| 192 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4Intersector16HybridMoellerNoFilter); |
| 193 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4iIntersector16HybridMoeller); |
| 194 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4vIntersector16HybridPluecker); |
| 195 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4iIntersector16HybridPluecker); |
| 196 | |
| 197 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4vMBIntersector16HybridMoeller); |
| 198 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4iMBIntersector16HybridMoeller); |
| 199 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4vMBIntersector16HybridPluecker); |
| 200 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Triangle4iMBIntersector16HybridPluecker); |
| 201 | |
| 202 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Quad4vIntersector16HybridMoeller); |
| 203 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Quad4vIntersector16HybridMoellerNoFilter); |
| 204 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Quad4iIntersector16HybridMoeller); |
| 205 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Quad4vIntersector16HybridPluecker); |
| 206 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Quad4iIntersector16HybridPluecker); |
| 207 | |
| 208 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Quad4iMBIntersector16HybridMoeller); |
| 209 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8Quad4iMBIntersector16HybridPluecker); |
| 210 | |
| 211 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8VirtualIntersector16Chunk); |
| 212 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8VirtualMBIntersector16Chunk); |
| 213 | |
| 214 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8InstanceIntersector16Chunk); |
| 215 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8InstanceMBIntersector16Chunk); |
| 216 | |
| 217 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8GridIntersector16HybridMoeller); |
| 218 | DEFINE_SYMBOL2(Accel::Intersector16,BVH8GridIntersector16HybridPluecker); |
| 219 | |
| 220 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8IntersectorStreamPacketFallback); |
| 221 | |
| 222 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Triangle4IntersectorStreamMoeller); |
| 223 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Triangle4IntersectorStreamMoellerNoFilter); |
| 224 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Triangle4iIntersectorStreamMoeller); |
| 225 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Triangle4vIntersectorStreamPluecker); |
| 226 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Triangle4iIntersectorStreamPluecker); |
| 227 | |
| 228 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Quad4vIntersectorStreamMoeller); |
| 229 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Quad4vIntersectorStreamMoellerNoFilter); |
| 230 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Quad4iIntersectorStreamMoeller); |
| 231 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Quad4vIntersectorStreamPluecker); |
| 232 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8Quad4iIntersectorStreamPluecker); |
| 233 | |
| 234 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8VirtualIntersectorStream); |
| 235 | |
| 236 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH8InstanceIntersectorStream); |
| 237 | |
| 238 | // SAH scene builders |
| 239 | private: |
| 240 | DEFINE_ISA_FUNCTION(Builder*,BVH8Curve8vBuilder_OBB_New,void* COMMA Scene* COMMA size_t); |
| 241 | DEFINE_ISA_FUNCTION(Builder*,BVH8OBBCurve8iMBBuilder_OBB,void* COMMA Scene* COMMA size_t); |
| 242 | |
| 243 | DEFINE_ISA_FUNCTION(Builder*,BVH8Triangle4SceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 244 | DEFINE_ISA_FUNCTION(Builder*,BVH8Triangle4vSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 245 | DEFINE_ISA_FUNCTION(Builder*,BVH8Triangle4iSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 246 | DEFINE_ISA_FUNCTION(Builder*,BVH8Triangle4iMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 247 | DEFINE_ISA_FUNCTION(Builder*,BVH8Triangle4vMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 248 | DEFINE_ISA_FUNCTION(Builder*,BVH8QuantizedTriangle4iSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 249 | DEFINE_ISA_FUNCTION(Builder*,BVH8QuantizedTriangle4SceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 250 | |
| 251 | DEFINE_ISA_FUNCTION(Builder*,BVH8Quad4vSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 252 | DEFINE_ISA_FUNCTION(Builder*,BVH8Quad4iSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 253 | DEFINE_ISA_FUNCTION(Builder*,BVH8Quad4iMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 254 | DEFINE_ISA_FUNCTION(Builder*,BVH8QuantizedQuad4iSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 255 | |
| 256 | DEFINE_ISA_FUNCTION(Builder*,BVH8VirtualSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 257 | DEFINE_ISA_FUNCTION(Builder*,BVH8VirtualMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 258 | |
| 259 | DEFINE_ISA_FUNCTION(Builder*,BVH8InstanceSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask); |
| 260 | DEFINE_ISA_FUNCTION(Builder*,BVH8InstanceMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask); |
| 261 | |
| 262 | DEFINE_ISA_FUNCTION(Builder*,BVH8GridSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 263 | DEFINE_ISA_FUNCTION(Builder*,BVH8GridMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
| 264 | |
| 265 | // SAH spatial scene builders |
| 266 | private: |
| 267 | DEFINE_ISA_FUNCTION(Builder*,BVH8Triangle4SceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t); |
| 268 | DEFINE_ISA_FUNCTION(Builder*,BVH8Triangle4vSceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t); |
| 269 | DEFINE_ISA_FUNCTION(Builder*,BVH8Quad4vSceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t); |
| 270 | |
| 271 | // twolevel scene builders |
| 272 | private: |
| 273 | DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelTriangle4MeshSAH,void* COMMA Scene* COMMA bool); |
| 274 | DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelTriangle4vMeshSAH,void* COMMA Scene* COMMA bool); |
| 275 | DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelTriangle4iMeshSAH,void* COMMA Scene* COMMA bool); |
| 276 | DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelQuadMeshSAH,void* COMMA Scene* COMMA bool); |
| 277 | DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelVirtualSAH,void* COMMA Scene* COMMA bool); |
| 278 | DEFINE_ISA_FUNCTION(Builder*,BVH8BuilderTwoLevelInstanceSAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool); |
| 279 | }; |
| 280 | } |
| 281 | |