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 | /*! BVH4 instantiations */ |
11 | class BVH4Factory : public BVHFactory |
12 | { |
13 | public: |
14 | BVH4Factory(int bfeatures, int ifeatures); |
15 | |
16 | public: |
17 | Accel* BVH4OBBVirtualCurve4i(Scene* scene, IntersectVariant ivariant); |
18 | Accel* BVH4OBBVirtualCurve4v(Scene* scene, IntersectVariant ivariant); |
19 | Accel* BVH4OBBVirtualCurve8i(Scene* scene, IntersectVariant ivariant); |
20 | Accel* BVH4OBBVirtualCurve4iMB(Scene* scene, IntersectVariant ivariant); |
21 | Accel* BVH4OBBVirtualCurve8iMB(Scene* scene, IntersectVariant ivariant); |
22 | DEFINE_SYMBOL2(VirtualCurveIntersector*,VirtualCurveIntersector4i); |
23 | DEFINE_SYMBOL2(VirtualCurveIntersector*,VirtualCurveIntersector8i); |
24 | DEFINE_SYMBOL2(VirtualCurveIntersector*,VirtualCurveIntersector4v); |
25 | DEFINE_SYMBOL2(VirtualCurveIntersector*,VirtualCurveIntersector8v); |
26 | DEFINE_SYMBOL2(VirtualCurveIntersector*,VirtualCurveIntersector4iMB); |
27 | DEFINE_SYMBOL2(VirtualCurveIntersector*,VirtualCurveIntersector8iMB); |
28 | |
29 | Accel* BVH4Triangle4 (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
30 | Accel* BVH4Triangle4v (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::ROBUST); |
31 | Accel* BVH4Triangle4i (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
32 | Accel* BVH4Triangle4vMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
33 | Accel* BVH4Triangle4iMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
34 | |
35 | Accel* BVH4Quad4v (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
36 | Accel* BVH4Quad4i (Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
37 | Accel* BVH4Quad4iMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
38 | |
39 | Accel* BVH4QuantizedTriangle4i(Scene* scene); |
40 | Accel* BVH4QuantizedQuad4i(Scene* scene); |
41 | |
42 | Accel* BVH4SubdivPatch1(Scene* scene); |
43 | Accel* BVH4SubdivPatch1MB(Scene* scene); |
44 | |
45 | Accel* BVH4UserGeometry(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC); |
46 | Accel* BVH4UserGeometryMB(Scene* scene); |
47 | |
48 | Accel* BVH4Instance(Scene* scene, bool isExpensive, BuildVariant bvariant = BuildVariant::STATIC); |
49 | Accel* BVH4InstanceMB(Scene* scene, bool isExpensive); |
50 | |
51 | Accel* BVH4Grid(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
52 | Accel* BVH4GridMB(Scene* scene, BuildVariant bvariant = BuildVariant::STATIC, IntersectVariant ivariant = IntersectVariant::FAST); |
53 | |
54 | private: |
55 | void selectBuilders(int features); |
56 | void selectIntersectors(int features); |
57 | |
58 | private: |
59 | Accel::Intersectors BVH4OBBVirtualCurveIntersectors(BVH4* bvh, VirtualCurveIntersector* leafIntersector, IntersectVariant ivariant); |
60 | Accel::Intersectors BVH4OBBVirtualCurveIntersectorsMB(BVH4* bvh, VirtualCurveIntersector* leafIntersector, IntersectVariant ivariant); |
61 | |
62 | Accel::Intersectors BVH4Triangle4Intersectors(BVH4* bvh, IntersectVariant ivariant); |
63 | Accel::Intersectors BVH4Triangle4vIntersectors(BVH4* bvh, IntersectVariant ivariant); |
64 | Accel::Intersectors BVH4Triangle4iIntersectors(BVH4* bvh, IntersectVariant ivariant); |
65 | Accel::Intersectors BVH4Triangle4iMBIntersectors(BVH4* bvh, IntersectVariant ivariant); |
66 | Accel::Intersectors BVH4Triangle4vMBIntersectors(BVH4* bvh, IntersectVariant ivariant); |
67 | |
68 | Accel::Intersectors BVH4Quad4vIntersectors(BVH4* bvh, IntersectVariant ivariant); |
69 | Accel::Intersectors BVH4Quad4iIntersectors(BVH4* bvh, IntersectVariant ivariant); |
70 | Accel::Intersectors BVH4Quad4iMBIntersectors(BVH4* bvh, IntersectVariant ivariant); |
71 | |
72 | Accel::Intersectors QBVH4Quad4iIntersectors(BVH4* bvh); |
73 | Accel::Intersectors QBVH4Triangle4iIntersectors(BVH4* bvh); |
74 | |
75 | Accel::Intersectors BVH4UserGeometryIntersectors(BVH4* bvh); |
76 | Accel::Intersectors BVH4UserGeometryMBIntersectors(BVH4* bvh); |
77 | |
78 | Accel::Intersectors BVH4InstanceIntersectors(BVH4* bvh); |
79 | Accel::Intersectors BVH4InstanceMBIntersectors(BVH4* bvh); |
80 | |
81 | Accel::Intersectors BVH4SubdivPatch1Intersectors(BVH4* bvh); |
82 | Accel::Intersectors BVH4SubdivPatch1MBIntersectors(BVH4* bvh); |
83 | |
84 | Accel::Intersectors BVH4GridIntersectors(BVH4* bvh, IntersectVariant ivariant); |
85 | Accel::Intersectors BVH4GridMBIntersectors(BVH4* bvh, IntersectVariant ivariant); |
86 | |
87 | private: |
88 | |
89 | DEFINE_SYMBOL2(Accel::Collider,BVH4ColliderUserGeom); |
90 | |
91 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4OBBVirtualCurveIntersector1); |
92 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4OBBVirtualCurveIntersector1MB); |
93 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4OBBVirtualCurveIntersectorRobust1); |
94 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4OBBVirtualCurveIntersectorRobust1MB); |
95 | |
96 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Triangle4Intersector1Moeller); |
97 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Triangle4iIntersector1Moeller); |
98 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Triangle4vIntersector1Pluecker); |
99 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Triangle4iIntersector1Pluecker); |
100 | |
101 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Triangle4vMBIntersector1Moeller); |
102 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Triangle4iMBIntersector1Moeller); |
103 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Triangle4vMBIntersector1Pluecker); |
104 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Triangle4iMBIntersector1Pluecker); |
105 | |
106 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Quad4vIntersector1Moeller); |
107 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Quad4iIntersector1Moeller); |
108 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Quad4vIntersector1Pluecker); |
109 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Quad4iIntersector1Pluecker); |
110 | |
111 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Quad4iMBIntersector1Moeller); |
112 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4Quad4iMBIntersector1Pluecker); |
113 | |
114 | DEFINE_SYMBOL2(Accel::Intersector1,QBVH4Triangle4iIntersector1Pluecker); |
115 | DEFINE_SYMBOL2(Accel::Intersector1,QBVH4Quad4iIntersector1Pluecker); |
116 | |
117 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4SubdivPatch1Intersector1); |
118 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4SubdivPatch1MBIntersector1); |
119 | |
120 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4VirtualIntersector1); |
121 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4VirtualMBIntersector1); |
122 | |
123 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4InstanceIntersector1); |
124 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4InstanceMBIntersector1); |
125 | |
126 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4GridIntersector1Moeller); |
127 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4GridMBIntersector1Moeller); |
128 | DEFINE_SYMBOL2(Accel::Intersector1,BVH4GridIntersector1Pluecker); |
129 | |
130 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4OBBVirtualCurveIntersector4Hybrid); |
131 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4OBBVirtualCurveIntersector4HybridMB); |
132 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4OBBVirtualCurveIntersectorRobust4Hybrid); |
133 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4OBBVirtualCurveIntersectorRobust4HybridMB); |
134 | |
135 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4Intersector4HybridMoeller); |
136 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4Intersector4HybridMoellerNoFilter); |
137 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4iIntersector4HybridMoeller); |
138 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4vIntersector4HybridPluecker); |
139 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4iIntersector4HybridPluecker); |
140 | |
141 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4vMBIntersector4HybridMoeller); |
142 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4iMBIntersector4HybridMoeller); |
143 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4vMBIntersector4HybridPluecker); |
144 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Triangle4iMBIntersector4HybridPluecker); |
145 | |
146 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Quad4vIntersector4HybridMoeller); |
147 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Quad4vIntersector4HybridMoellerNoFilter); |
148 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Quad4iIntersector4HybridMoeller); |
149 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Quad4vIntersector4HybridPluecker); |
150 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Quad4iIntersector4HybridPluecker); |
151 | |
152 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Quad4iMBIntersector4HybridMoeller); |
153 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4Quad4iMBIntersector4HybridPluecker); |
154 | |
155 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4SubdivPatch1Intersector4); |
156 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4SubdivPatch1MBIntersector4); |
157 | |
158 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4VirtualIntersector4Chunk); |
159 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4VirtualMBIntersector4Chunk); |
160 | |
161 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4InstanceIntersector4Chunk); |
162 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4InstanceMBIntersector4Chunk); |
163 | |
164 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4GridIntersector4HybridMoeller); |
165 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4GridMBIntersector4HybridMoeller); |
166 | DEFINE_SYMBOL2(Accel::Intersector4,BVH4GridIntersector4HybridPluecker); |
167 | |
168 | // ============== |
169 | |
170 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4OBBVirtualCurveIntersector8Hybrid); |
171 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4OBBVirtualCurveIntersector8HybridMB); |
172 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4OBBVirtualCurveIntersectorRobust8Hybrid); |
173 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4OBBVirtualCurveIntersectorRobust8HybridMB); |
174 | |
175 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4Intersector8HybridMoeller); |
176 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4Intersector8HybridMoellerNoFilter); |
177 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4iIntersector8HybridMoeller); |
178 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4vIntersector8HybridPluecker); |
179 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4iIntersector8HybridPluecker); |
180 | |
181 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4vMBIntersector8HybridMoeller); |
182 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4iMBIntersector8HybridMoeller); |
183 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4vMBIntersector8HybridPluecker); |
184 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Triangle4iMBIntersector8HybridPluecker); |
185 | |
186 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Quad4vIntersector8HybridMoeller); |
187 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Quad4vIntersector8HybridMoellerNoFilter); |
188 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Quad4iIntersector8HybridMoeller); |
189 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Quad4vIntersector8HybridPluecker); |
190 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Quad4iIntersector8HybridPluecker); |
191 | |
192 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Quad4iMBIntersector8HybridMoeller); |
193 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4Quad4iMBIntersector8HybridPluecker); |
194 | |
195 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4SubdivPatch1Intersector8); |
196 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4SubdivPatch1MBIntersector8); |
197 | |
198 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4VirtualIntersector8Chunk); |
199 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4VirtualMBIntersector8Chunk); |
200 | |
201 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4InstanceIntersector8Chunk); |
202 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4InstanceMBIntersector8Chunk); |
203 | |
204 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4GridIntersector8HybridMoeller); |
205 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4GridMBIntersector8HybridMoeller); |
206 | DEFINE_SYMBOL2(Accel::Intersector8,BVH4GridIntersector8HybridPluecker); |
207 | |
208 | // ============== |
209 | |
210 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4OBBVirtualCurveIntersector16Hybrid); |
211 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4OBBVirtualCurveIntersector16HybridMB); |
212 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4OBBVirtualCurveIntersectorRobust16Hybrid); |
213 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4OBBVirtualCurveIntersectorRobust16HybridMB); |
214 | |
215 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4Intersector16HybridMoeller); |
216 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4Intersector16HybridMoellerNoFilter); |
217 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4iIntersector16HybridMoeller); |
218 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4vIntersector16HybridPluecker); |
219 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4iIntersector16HybridPluecker); |
220 | |
221 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4vMBIntersector16HybridMoeller); |
222 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4iMBIntersector16HybridMoeller); |
223 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4vMBIntersector16HybridPluecker); |
224 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Triangle4iMBIntersector16HybridPluecker); |
225 | |
226 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Quad4vIntersector16HybridMoeller); |
227 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Quad4vIntersector16HybridMoellerNoFilter); |
228 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Quad4iIntersector16HybridMoeller); |
229 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Quad4vIntersector16HybridPluecker); |
230 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Quad4iIntersector16HybridPluecker); |
231 | |
232 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Quad4iMBIntersector16HybridMoeller); |
233 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4Quad4iMBIntersector16HybridPluecker); |
234 | |
235 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4SubdivPatch1Intersector16); |
236 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4SubdivPatch1MBIntersector16); |
237 | |
238 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4VirtualIntersector16Chunk); |
239 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4VirtualMBIntersector16Chunk); |
240 | |
241 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4InstanceIntersector16Chunk); |
242 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4InstanceMBIntersector16Chunk); |
243 | |
244 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4GridIntersector16HybridMoeller); |
245 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4GridMBIntersector16HybridMoeller); |
246 | DEFINE_SYMBOL2(Accel::Intersector16,BVH4GridIntersector16HybridPluecker); |
247 | |
248 | // ============== |
249 | |
250 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4IntersectorStreamPacketFallback); |
251 | |
252 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Triangle4IntersectorStreamMoeller); |
253 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Triangle4IntersectorStreamMoellerNoFilter); |
254 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Triangle4iIntersectorStreamMoeller); |
255 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Triangle4vIntersectorStreamPluecker); |
256 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Triangle4iIntersectorStreamPluecker); |
257 | |
258 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Quad4vIntersectorStreamMoeller); |
259 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Quad4vIntersectorStreamMoellerNoFilter); |
260 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Quad4iIntersectorStreamMoeller); |
261 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Quad4vIntersectorStreamPluecker); |
262 | DEFINE_SYMBOL2(Accel::IntersectorN, BVH4Quad4iIntersectorStreamPluecker); |
263 | |
264 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH4VirtualIntersectorStream); |
265 | |
266 | DEFINE_SYMBOL2(Accel::IntersectorN,BVH4InstanceIntersectorStream); |
267 | |
268 | // SAH scene builders |
269 | private: |
270 | DEFINE_ISA_FUNCTION(Builder*,BVH4Curve4vBuilder_OBB_New,void* COMMA Scene* COMMA size_t); |
271 | DEFINE_ISA_FUNCTION(Builder*,BVH4Curve4iBuilder_OBB_New,void* COMMA Scene* COMMA size_t); |
272 | DEFINE_ISA_FUNCTION(Builder*,BVH4OBBCurve4iMBBuilder_OBB,void* COMMA Scene* COMMA size_t); |
273 | DEFINE_ISA_FUNCTION(Builder*,BVH4Curve8iBuilder_OBB_New,void* COMMA Scene* COMMA size_t); |
274 | DEFINE_ISA_FUNCTION(Builder*,BVH4OBBCurve8iMBBuilder_OBB,void* COMMA Scene* COMMA size_t); |
275 | |
276 | DEFINE_ISA_FUNCTION(Builder*,BVH4Triangle4SceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
277 | DEFINE_ISA_FUNCTION(Builder*,BVH4Triangle4vSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
278 | DEFINE_ISA_FUNCTION(Builder*,BVH4Triangle4iSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
279 | DEFINE_ISA_FUNCTION(Builder*,BVH4Triangle4iMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
280 | DEFINE_ISA_FUNCTION(Builder*,BVH4Triangle4vMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
281 | DEFINE_ISA_FUNCTION(Builder*,BVH4QuantizedTriangle4iSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
282 | |
283 | DEFINE_ISA_FUNCTION(Builder*,BVH4Quad4vSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
284 | DEFINE_ISA_FUNCTION(Builder*,BVH4Quad4iSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
285 | DEFINE_ISA_FUNCTION(Builder*,BVH4Quad4iMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
286 | DEFINE_ISA_FUNCTION(Builder*,BVH4QuantizedQuad4iSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
287 | |
288 | DEFINE_ISA_FUNCTION(Builder*,BVH4SubdivPatch1BuilderSAH,void* COMMA Scene* COMMA size_t); |
289 | DEFINE_ISA_FUNCTION(Builder*,BVH4SubdivPatch1MBBuilderSAH,void* COMMA Scene* COMMA size_t); |
290 | |
291 | DEFINE_ISA_FUNCTION(Builder*,BVH4VirtualSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
292 | DEFINE_ISA_FUNCTION(Builder*,BVH4VirtualMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
293 | |
294 | DEFINE_ISA_FUNCTION(Builder*,BVH4InstanceSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask); |
295 | DEFINE_ISA_FUNCTION(Builder*,BVH4InstanceMBSceneBuilderSAH,void* COMMA Scene* COMMA Geometry::GTypeMask); |
296 | |
297 | DEFINE_ISA_FUNCTION(Builder*,BVH4GridSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
298 | DEFINE_ISA_FUNCTION(Builder*,BVH4GridMBSceneBuilderSAH,void* COMMA Scene* COMMA size_t); |
299 | |
300 | // spatial scene builder |
301 | private: |
302 | DEFINE_ISA_FUNCTION(Builder*,BVH4Triangle4SceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t); |
303 | DEFINE_ISA_FUNCTION(Builder*,BVH4Triangle4vSceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t); |
304 | DEFINE_ISA_FUNCTION(Builder*,BVH4Triangle4iSceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t); |
305 | DEFINE_ISA_FUNCTION(Builder*,BVH4Quad4vSceneBuilderFastSpatialSAH,void* COMMA Scene* COMMA size_t); |
306 | |
307 | // twolevel scene builders |
308 | private: |
309 | DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelTriangle4MeshSAH,void* COMMA Scene* COMMA bool); |
310 | DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelTriangle4vMeshSAH,void* COMMA Scene* COMMA bool); |
311 | DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelTriangle4iMeshSAH,void* COMMA Scene* COMMA bool); |
312 | DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelQuadMeshSAH,void* COMMA Scene* COMMA bool); |
313 | DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelVirtualSAH,void* COMMA Scene* COMMA bool); |
314 | DEFINE_ISA_FUNCTION(Builder*,BVH4BuilderTwoLevelInstanceSAH,void* COMMA Scene* COMMA Geometry::GTypeMask COMMA bool); |
315 | }; |
316 | } |
317 | |