/
exttrianglemesh_types.cl
90 lines (77 loc) · 3.03 KB
/
exttrianglemesh_types.cl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#line 2 "exttrianglemesh_types.cl"
/***************************************************************************
* Copyright 1998-2020 by authors (see AUTHORS.txt) *
* *
* This file is part of LuxCoreRender. *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.*
* See the License for the specific language governing permissions and *
* limitations under the License. *
***************************************************************************/
#define EXTMESH_MAX_DATA_COUNT 8u
typedef struct {
Transform appliedTrans;
int appliedTransSwapsHandedness;
} TriangleMeshParam;
typedef struct {
Transform trans;
int transSwapsHandedness;
} TriangleInstanceMeshParam;
typedef struct {
MotionSystem motionSystem;
} TriangleMotionMeshParam;
typedef struct {
MeshType type;
// Vertex information
unsigned int vertsOffset;
unsigned int normalsOffset;
unsigned int triNormalsOffset;
unsigned int uvsOffset[EXTMESH_MAX_DATA_COUNT];
unsigned int colsOffset[EXTMESH_MAX_DATA_COUNT];
unsigned int alphasOffset[EXTMESH_MAX_DATA_COUNT];
// Vertex and Triangle AOV
unsigned int vertexAOVOffset[EXTMESH_MAX_DATA_COUNT];
unsigned int triAOVOffset[EXTMESH_MAX_DATA_COUNT];
// Triangle information
unsigned int trisOffset;
// Object space transformation
union {
TriangleMeshParam triangle;
TriangleInstanceMeshParam instance;
TriangleMotionMeshParam motion;
};
} ExtMesh;
#if defined(SLG_OPENCL_KERNEL)
#define EXTMESH_PARAM_DECL , \
__global const ExtMesh* restrict meshDescs, \
__global const Point* restrict vertices, \
__global const Normal* restrict vertNormals, \
__global const Normal* restrict triNormals, \
__global const UV* restrict vertUVs, \
__global const Spectrum* restrict vertCols, \
__global const float* restrict vertAlphas, \
__global const float* restrict vertexAOVs, \
__global const float* restrict triAOVs, \
__global const Triangle* restrict triangles, \
__global const InterpolatedTransform* restrict interpolatedTransforms
#define EXTMESH_PARAM , \
meshDescs, \
vertices, \
vertNormals, \
triNormals, \
vertUVs, \
vertCols, \
vertAlphas, \
vertexAOVs, \
triAOVs, \
triangles, \
interpolatedTransforms
#endif