-
Notifications
You must be signed in to change notification settings - Fork 2
/
common.h
129 lines (101 loc) · 2.69 KB
/
common.h
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
* Copyright (c) 2019-2024, NVIDIA CORPORATION. All rights reserved.
*
* 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.
*
* SPDX-FileCopyrightText: Copyright (c) 2019-2024 NVIDIA CORPORATION
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef CSFTHREADED_COMMON_H
#define CSFTHREADED_COMMON_H
#define VERTEX_POS_OCTNORMAL 0
#define VERTEX_COMBINED_INDEX 1
#ifndef INDEXED_MATRIX_BITS
#define INDEXED_MATRIX_BITS 24
#endif
#ifndef INDEXED_MATERIAL_BITS
#define INDEXED_MATERIAL_BITS 8
#endif
// changing these orders may break a lot of things ;)
#define DRAW_UBO_SCENE 0
#define DRAW_UBO_MATRIX 1
#define DRAW_SSBO_MATRIX 1
#define DRAW_UBO_MATERIAL 2
#define DRAW_SSBO_MATERIAL 2
#define ANIM_UBO 0
#define ANIM_SSBO_MATRIXOUT 1
#define ANIM_SSBO_MATRIXORIG 2
#define ANIMATION_WORKGROUPSIZE 256
#ifndef SHADER_PERMUTATION
#define SHADER_PERMUTATION 1
#endif
//////////////////////////////////////////////////////////////////////////
// see resources_vk.hpp
#ifndef UNIFORMS_MULTISETSDYNAMIC
#define UNIFORMS_MULTISETSDYNAMIC 0
#endif
#ifndef UNIFORMS_PUSHCONSTANTS_ADDRESS
#define UNIFORMS_PUSHCONSTANTS_ADDRESS 1
#endif
#ifndef UNIFORMS_INDEX_VERTEXATTRIB
#define UNIFORMS_INDEX_VERTEXATTRIB 2
#endif
#ifndef UNIFORMS_INDEX_BASEINSTANCE
#define UNIFORMS_INDEX_BASEINSTANCE 3
#endif
#ifndef UNIFORMS_TECHNIQUE
#define UNIFORMS_TECHNIQUE UNIFORMS_INDEX_VERTEXATTRIB
#endif
//////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
namespace generatedcmds {
using namespace glm;
#endif
struct SceneData {
mat4 viewProjMatrix;
mat4 viewMatrix;
mat4 viewMatrixIT;
vec4 viewPos;
vec4 viewDir;
vec4 wLightPos;
ivec2 viewport;
ivec2 _pad;
};
// must match cadscene
struct MatrixData {
mat4 worldMatrix;
mat4 worldMatrixIT;
mat4 objectMatrix;
mat4 objectMatrixIT;
};
// must match cadscene
struct MaterialSide {
vec4 ambient;
vec4 diffuse;
vec4 specular;
vec4 emissive;
};
struct MaterialData {
MaterialSide sides[2];
};
struct AnimationData {
uint numMatrices;
float time;
vec2 _pad0;
vec3 sceneCenter;
float sceneDimension;
};
#ifdef __cplusplus
}
#endif
#endif