Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/embree/kernels/geometry/primitive4.cpp
9905 views
1
// Copyright 2009-2021 Intel Corporation
2
// SPDX-License-Identifier: Apache-2.0
3
4
#include "primitive.h"
5
#include "curveNv.h"
6
#include "curveNi.h"
7
#include "curveNi_mb.h"
8
#include "linei.h"
9
#include "triangle.h"
10
#include "trianglev.h"
11
#include "trianglev_mb.h"
12
#include "trianglei.h"
13
#include "quadv.h"
14
#include "quadi.h"
15
#include "subdivpatch1.h"
16
#include "object.h"
17
#include "instance.h"
18
#include "instance_array.h"
19
#include "subgrid.h"
20
21
namespace embree
22
{
23
/********************** Curve4v **************************/
24
25
template<>
26
const char* Curve4v::Type::name () const {
27
return "curve4v";
28
}
29
30
template<>
31
size_t Curve4v::Type::sizeActive(const char* This) const
32
{
33
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
34
return ((Line4i*)This)->size();
35
else
36
return ((Curve4v*)This)->N;
37
}
38
39
template<>
40
size_t Curve4v::Type::sizeTotal(const char* This) const
41
{
42
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
43
return 4;
44
else
45
return ((Curve4v*)This)->N;
46
}
47
48
template<>
49
size_t Curve4v::Type::getBytes(const char* This) const
50
{
51
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
52
return Line4i::bytes(sizeActive(This));
53
else
54
return Curve4v::bytes(sizeActive(This));
55
}
56
57
/********************** Curve4i **************************/
58
59
template<>
60
const char* Curve4i::Type::name () const {
61
return "curve4i";
62
}
63
64
template<>
65
size_t Curve4i::Type::sizeActive(const char* This) const
66
{
67
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
68
return ((Line4i*)This)->size();
69
else
70
return ((Curve4i*)This)->N;
71
}
72
73
template<>
74
size_t Curve4i::Type::sizeTotal(const char* This) const
75
{
76
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
77
return 4;
78
else
79
return ((Curve4i*)This)->N;
80
}
81
82
template<>
83
size_t Curve4i::Type::getBytes(const char* This) const
84
{
85
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
86
return Line4i::bytes(sizeActive(This));
87
else
88
return Curve4i::bytes(sizeActive(This));
89
}
90
91
/********************** Curve4iMB **************************/
92
93
template<>
94
const char* Curve4iMB::Type::name () const {
95
return "curve4imb";
96
}
97
98
template<>
99
size_t Curve4iMB::Type::sizeActive(const char* This) const
100
{
101
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
102
return ((Line4i*)This)->size();
103
else
104
return ((Curve4iMB*)This)->N;
105
}
106
107
template<>
108
size_t Curve4iMB::Type::sizeTotal(const char* This) const
109
{
110
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
111
return 4;
112
else
113
return ((Curve4iMB*)This)->N;
114
}
115
116
template<>
117
size_t Curve4iMB::Type::getBytes(const char* This) const
118
{
119
if ((*This & Geometry::GType::GTY_BASIS_MASK) == Geometry::GType::GTY_BASIS_LINEAR)
120
return Line4i::bytes(sizeActive(This));
121
else
122
return Curve4iMB::bytes(sizeActive(This));
123
}
124
125
/********************** Line4i **************************/
126
127
template<>
128
const char* Line4i::Type::name () const {
129
return "line4i";
130
}
131
132
template<>
133
size_t Line4i::Type::sizeActive(const char* This) const {
134
return ((Line4i*)This)->size();
135
}
136
137
template<>
138
size_t Line4i::Type::sizeTotal(const char* This) const {
139
return 4;
140
}
141
142
template<>
143
size_t Line4i::Type::getBytes(const char* This) const {
144
return sizeof(Line4i);
145
}
146
147
/********************** Triangle4 **************************/
148
149
template<>
150
const char* Triangle4::Type::name () const {
151
return "triangle4";
152
}
153
154
template<>
155
size_t Triangle4::Type::sizeActive(const char* This) const {
156
return ((Triangle4*)This)->size();
157
}
158
159
template<>
160
size_t Triangle4::Type::sizeTotal(const char* This) const {
161
return 4;
162
}
163
164
template<>
165
size_t Triangle4::Type::getBytes(const char* This) const {
166
return sizeof(Triangle4);
167
}
168
169
/********************** Triangle4v **************************/
170
171
template<>
172
const char* Triangle4v::Type::name () const {
173
return "triangle4v";
174
}
175
176
template<>
177
size_t Triangle4v::Type::sizeActive(const char* This) const {
178
return ((Triangle4v*)This)->size();
179
}
180
181
template<>
182
size_t Triangle4v::Type::sizeTotal(const char* This) const {
183
return 4;
184
}
185
186
template<>
187
size_t Triangle4v::Type::getBytes(const char* This) const {
188
return sizeof(Triangle4v);
189
}
190
191
/********************** Triangle4i **************************/
192
193
template<>
194
const char* Triangle4i::Type::name () const {
195
return "triangle4i";
196
}
197
198
template<>
199
size_t Triangle4i::Type::sizeActive(const char* This) const {
200
return ((Triangle4i*)This)->size();
201
}
202
203
template<>
204
size_t Triangle4i::Type::sizeTotal(const char* This) const {
205
return 4;
206
}
207
208
template<>
209
size_t Triangle4i::Type::getBytes(const char* This) const {
210
return sizeof(Triangle4i);
211
}
212
213
/********************** Triangle4vMB **************************/
214
215
template<>
216
const char* Triangle4vMB::Type::name () const {
217
return "triangle4vmb";
218
}
219
220
template<>
221
size_t Triangle4vMB::Type::sizeActive(const char* This) const {
222
return ((Triangle4vMB*)This)->size();
223
}
224
225
template<>
226
size_t Triangle4vMB::Type::sizeTotal(const char* This) const {
227
return 4;
228
}
229
230
template<>
231
size_t Triangle4vMB::Type::getBytes(const char* This) const {
232
return sizeof(Triangle4vMB);
233
}
234
235
/********************** Quad4v **************************/
236
237
template<>
238
const char* Quad4v::Type::name () const {
239
return "quad4v";
240
}
241
242
template<>
243
size_t Quad4v::Type::sizeActive(const char* This) const {
244
return ((Quad4v*)This)->size();
245
}
246
247
template<>
248
size_t Quad4v::Type::sizeTotal(const char* This) const {
249
return 4;
250
}
251
252
template<>
253
size_t Quad4v::Type::getBytes(const char* This) const {
254
return sizeof(Quad4v);
255
}
256
257
/********************** Quad4i **************************/
258
259
template<>
260
const char* Quad4i::Type::name () const {
261
return "quad4i";
262
}
263
264
template<>
265
size_t Quad4i::Type::sizeActive(const char* This) const {
266
return ((Quad4i*)This)->size();
267
}
268
269
template<>
270
size_t Quad4i::Type::sizeTotal(const char* This) const {
271
return 4;
272
}
273
274
template<>
275
size_t Quad4i::Type::getBytes(const char* This) const {
276
return sizeof(Quad4i);
277
}
278
279
/********************** SubdivPatch1 **************************/
280
281
const char* SubdivPatch1::Type::name () const {
282
return "subdivpatch1";
283
}
284
285
size_t SubdivPatch1::Type::sizeActive(const char* This) const {
286
return 1;
287
}
288
289
size_t SubdivPatch1::Type::sizeTotal(const char* This) const {
290
return 1;
291
}
292
293
size_t SubdivPatch1::Type::getBytes(const char* This) const {
294
return sizeof(SubdivPatch1);
295
}
296
297
SubdivPatch1::Type SubdivPatch1::type;
298
299
/********************** Virtual Object **************************/
300
301
const char* Object::Type::name () const {
302
return "object";
303
}
304
305
size_t Object::Type::sizeActive(const char* This) const {
306
return 1;
307
}
308
309
size_t Object::Type::sizeTotal(const char* This) const {
310
return 1;
311
}
312
313
size_t Object::Type::getBytes(const char* This) const {
314
return sizeof(Object);
315
}
316
317
Object::Type Object::type;
318
319
/********************** Instance **************************/
320
321
const char* InstancePrimitive::Type::name () const {
322
return "instance";
323
}
324
325
size_t InstancePrimitive::Type::sizeActive(const char* This) const {
326
return 1;
327
}
328
329
size_t InstancePrimitive::Type::sizeTotal(const char* This) const {
330
return 1;
331
}
332
333
size_t InstancePrimitive::Type::getBytes(const char* This) const {
334
return sizeof(InstancePrimitive);
335
}
336
337
InstancePrimitive::Type InstancePrimitive::type;
338
339
/********************** InstanceArray4 **************************/
340
341
const char* InstanceArrayPrimitive::Type::name () const {
342
return "instance_array";
343
}
344
345
size_t InstanceArrayPrimitive::Type::sizeActive(const char* This) const {
346
return 1;
347
}
348
349
size_t InstanceArrayPrimitive::Type::sizeTotal(const char* This) const {
350
return 1;
351
}
352
353
size_t InstanceArrayPrimitive::Type::getBytes(const char* This) const {
354
return sizeof(InstanceArrayPrimitive);
355
}
356
357
InstanceArrayPrimitive::Type InstanceArrayPrimitive::type;
358
359
/********************** SubGrid **************************/
360
361
const char* SubGrid::Type::name () const {
362
return "subgrid";
363
}
364
365
size_t SubGrid::Type::sizeActive(const char* This) const {
366
return 1;
367
}
368
369
size_t SubGrid::Type::sizeTotal(const char* This) const {
370
return 1;
371
}
372
373
size_t SubGrid::Type::getBytes(const char* This) const {
374
return sizeof(SubGrid);
375
}
376
377
SubGrid::Type SubGrid::type;
378
379
/********************** SubGridQBVH4 **************************/
380
381
template<>
382
const char* SubGridQBVH4::Type::name () const {
383
return "SubGridQBVH4";
384
}
385
386
template<>
387
size_t SubGridQBVH4::Type::sizeActive(const char* This) const {
388
return 1;
389
}
390
391
template<>
392
size_t SubGridQBVH4::Type::sizeTotal(const char* This) const {
393
return 1;
394
}
395
396
template<>
397
size_t SubGridQBVH4::Type::getBytes(const char* This) const {
398
return sizeof(SubGridQBVH4);
399
}
400
}
401
402