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 | |