Polyphase Game Engine
Loading...
Searching...
No Matches
VulkanTypes.h
Go to the documentation of this file.
1#pragma once
2
3#include "Maths.h"
5#include "Vertex.h"
6#include "VulkanConstants.h"
7
8#include <vulkan/vulkan.h>
9#include <vector>
10
11class Shader;
12class Image;
13
15{
16 std::vector<class Pipeline*>* mPipelines;
17 MutexObject* mMutex = nullptr;
18};
19
21{
22 Opaque,
25
26 Count
27};
28
30{
32 {
33 // Default write masks to RGBA
34 for (uint32_t i = 0; i < MAX_RENDER_TARGETS; ++i)
35 {
36 mBlendStates[i].colorWriteMask = VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT;
37 }
38 }
39
43
44 VkRenderPass mRenderPass = VK_NULL_HANDLE;
46
47 // Rasterizer
48 bool mRasterizerDiscard = false;
49 VkPrimitiveTopology mPrimitiveTopology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
50 VkPolygonMode mPolygonMode = VK_POLYGON_MODE_FILL;
51 float mLineWidth = 1.0f;
52 bool mDynamicLineWidth = false;
53 VkCullModeFlags mCullMode = VK_CULL_MODE_BACK_BIT;
54 VkFrontFace mFrontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE;
55 float mDepthBias = 0.0f;
56
57 // Depth Stencil
58 bool mDepthTestEnabled = true;
59 bool mDepthWriteEnabled = true;
60 VkCompareOp mDepthCompareOp = VK_COMPARE_OP_LESS;
61 bool mDepthBoundsEnabled = false;
62 float mMinDepthBounds = 0.0f;
63 float mMaxDepthBounds = 1.0f;
64 bool mStencilTestEnabled = false;
65 VkStencilOpState mStencilFront = {};
66 VkStencilOpState mStencilBack = {};
67
68 // Blending
69 VkPipelineColorBlendAttachmentState mBlendStates[MAX_RENDER_TARGETS] = {};
70
71 bool operator==(const PipelineState& other) const;
72
73 size_t Hash() const;
74};
75
77{
78 size_t operator()(const PipelineState& k) const
79 {
80 return k.Hash();
81 }
82};
83
85{
86 Image* mDepthImage = nullptr;
88 VkAttachmentLoadOp mLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
89 VkAttachmentStoreOp mStoreOp = VK_ATTACHMENT_STORE_OP_STORE;
90 VkAttachmentLoadOp mDepthLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
91 VkAttachmentStoreOp mDepthStoreOp = VK_ATTACHMENT_STORE_OP_STORE;
92 VkImageLayout mPreLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
93 VkImageLayout mPostLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
94
95 const char* mDebugName = "";
96};
97
99{
100 glm::vec4 mColor;
101
102 glm::vec3 mPosition;
103 float mRadius;
104
105 glm::vec3 mDirection;
106 uint32_t mType;
107
109 float mPad0;
110 float mPad1;
111 float mPad2;
112};
113
115{
116 glm::mat4 mTransform;
117};
118
165
167{
169 uint32_t mNumMeshes;
170 uint32_t mNumLights;
171 uint32_t mMaxBounces;
172
177
182
184 uint32_t mPad0;
185 uint32_t mPad1;
186 uint32_t mPad2;
187
190 glm::vec4 mGroundColor;
191};
192
194{
195 glm::mat4 mWVPMatrix;
196 glm::mat4 mWorldMatrix;
197 glm::mat4 mNormalMatrix;
198 glm::vec4 mColor;
199
200 uint32_t mHitCheckId;
202 uint32_t mPad0;
203 uint32_t mPad1;
204
205 uint32_t mNumLights;
206 uint32_t mLights0;
207 uint32_t mLights1;
208 uint32_t mPad2;
209};
210
212{
214
216
218 uint32_t mPadding0;
219 uint32_t mPadding1;
220 uint32_t mPadding2;
221};
222
224{
225 glm::mat4 mTransform;
226 glm::vec4 mColor;
227 glm::vec4 mQuadParams; // x = cornerRadius, y = width, z = height, w = unused
228};
229
231{
232 glm::mat4 mTransform;
233 glm::vec4 mColor;
234
235 float mX;
236 float mY;
237 float mCutoff;
239
240 float mScale;
244
246 int32_t mEffect;
247};
248
250{
251 glm::mat4 mTransform;
252 glm::vec4 mColor;
253
254 float mX;
255 float mY;
256 float mPad0;
257 float mPad1;
258};
259
261{
262 glm::vec2 mUvOffset0;
263 glm::vec2 mUvScale0;
264
265 glm::vec2 mUvOffset1;
266 glm::vec2 mUvScale1;
267
268 glm::vec4 mColor;
269 glm::vec4 mFresnelColor;
270
272 uint32_t mBlendMode;
273 uint32_t mToonSteps;
275
277 float mOpacity;
280
283 uint32_t mApplyFog;
285
287 float mPad0;
288 float mPad1;
289 float mPad2;
290
293};
294
296{
297 Point,
299
300 Count
301};
302
304{
305 glm::vec3 mPosition = { 0.0f, 0.0f, 0.0f };
306 float mPad0 = 1337.0f;
307
308 glm::vec2 mTexcoord0 = { 0.0f, 0.0f };
309 glm::vec2 mTexcoord1 = { 0.0f, 0.0f };
310
311 glm::vec3 mNormal = { 0.0f, 0.0f, 1.0f };
312 float mPad1 = 1337.1f;
313
314 glm::vec4 mColor = { 1.0f, 1.0f, 1.0f, 1.0f };
315};
316
321
323{
324 glm::vec4 mBounds = { 0.0f, 0.0f, 0.0f, 10000.0f };
325
327 uint32_t mNumTriangles = 0;
328 uint32_t mCastShadows = 1;
329 uint32_t mHasBakedLighting = 0;
330
331 glm::uvec4 mTextures;
332
334};
335
337{
338 glm::vec3 mPosition = { 0.0f, 0.0f, 0.0f };
339 float mRadius = 0.0f;
340
341 glm::vec4 mColor = { 1.0f, 1.0f, 1.0f, 1.0f };
342
343 glm::vec3 mDirection = { 0.0f, 0.0f, -1.0f };
345
346 uint32_t mCastShadows = 1;
347 float mIntensity = 1.0f;
348 uint32_t mPad0 = 1337;
349 uint32_t mPad1 = 1338;
350};
351
353{
354 glm::vec3 mPosition = { 0.0f, 0.0f, 0.0f };
355 float mPad0 = 1337.0f;
356
357 glm::vec3 mNormal = { 0.0f, 1.0f, 0.0f };
358 float mPad1 = 1337.1f;
359
360 glm::vec4 mDirectLight = { 0.0f, 0.0f, 0.0f, 0.0f };
361 glm::vec4 mIndirectLight = { 0.0f, 0.0f, 0.0f, 0.0f };
362};
363
365{
366 glm::vec4 mDirectLight = { 0.0f, 0.0f, 0.0f, 0.0f };
367 glm::vec4 mIndirectLight = { 0.0f, 0.0f, 0.0f, 0.0f };
368};
369
371{
372 glm::uvec3 mVertexIndices = { 0, 0, 0 };
373 uint32_t mPad0 = 1337;
374};
375
377{
378 std::vector<glm::vec4> mDirectColors;
379 std::vector<glm::vec4> mIndirectColors;
380};
381
382enum class LightBakePhase : uint8_t
383{
384 Direct,
385 Indirect,
386 Diffuse,
387 Count
388};
389
391{
392 Global = 0,
393
394 Geometry = 1,
395 PostProcess = 1,
396 Quad = 1,
397 Text = 1,
398 Poly = 1,
399
400 Material = 2
401};
#define MATERIAL_LITE_MAX_TEXTURES
Definition Constants.h:22
#define MAX_BONES
Definition Constants.h:26
#define MAX_LIGHTS_PER_FRAME
Definition Constants.h:23
VertexType
Definition Vertex.h:7
#define MAX_RENDER_TARGETS
Definition VulkanConstants.h:11
LightBakePhase
Definition VulkanTypes.h:383
DescriptorSetBinding
Definition VulkanTypes.h:391
BasicBlendState
Definition VulkanTypes.h:21
RayTraceLightType
Definition VulkanTypes.h:296
Definition Material.h:48
Definition Poly.h:10
Definition Quad.h:20
Definition Shader.h:18
Definition Text.h:24
Definition VulkanTypes.h:371
glm::uvec3 mVertexIndices
Definition VulkanTypes.h:372
uint32_t mPad0
Definition VulkanTypes.h:373
Definition VulkanTypes.h:194
uint32_t mLights1
Definition VulkanTypes.h:207
glm::vec4 mColor
Definition VulkanTypes.h:198
uint32_t mPad1
Definition VulkanTypes.h:203
uint32_t mHasBakedLighting
Definition VulkanTypes.h:201
uint32_t mLights0
Definition VulkanTypes.h:206
glm::mat4 mNormalMatrix
Definition VulkanTypes.h:197
uint32_t mHitCheckId
Definition VulkanTypes.h:200
glm::mat4 mWorldMatrix
Definition VulkanTypes.h:196
uint32_t mNumLights
Definition VulkanTypes.h:205
glm::mat4 mWVPMatrix
Definition VulkanTypes.h:195
uint32_t mPad2
Definition VulkanTypes.h:208
uint32_t mPad0
Definition VulkanTypes.h:202
Definition VulkanTypes.h:120
glm::vec4 mViewport
Definition VulkanTypes.h:132
float mRealTime
Definition VulkanTypes.h:138
float mColorScale
Definition VulkanTypes.h:155
glm::vec4 mSelectedColor
Definition VulkanTypes.h:157
glm::vec2 mInterfaceResolution
Definition VulkanTypes.h:130
float mSelectedPad0
Definition VulkanTypes.h:159
float mFogNear
Definition VulkanTypes.h:144
glm::vec4 mViewPosition
Definition VulkanTypes.h:127
glm::vec4 mSceneViewport
Definition VulkanTypes.h:133
glm::vec4 mShadowColor
Definition VulkanTypes.h:131
float mFogFar
Definition VulkanTypes.h:145
glm::vec4 mViewDirection
Definition VulkanTypes.h:128
float mNearHalfWidth
Definition VulkanTypes.h:147
float mSelectedPad2
Definition VulkanTypes.h:161
int32_t mVisualizationMode
Definition VulkanTypes.h:136
int mFogEnabled
Definition VulkanTypes.h:142
float mGameTime
Definition VulkanTypes.h:137
float mSelectedPad1
Definition VulkanTypes.h:160
int mFogDensityFunc
Definition VulkanTypes.h:143
glm::mat4 mPreRotationMatrix
Definition VulkanTypes.h:124
glm::vec4 mFogColor
Definition VulkanTypes.h:140
float mNearDist
Definition VulkanTypes.h:149
glm::mat4 mViewProjMatrix
Definition VulkanTypes.h:121
uint32_t mPathTracingEnabled
Definition VulkanTypes.h:150
int32_t mLinearColorSpace
Definition VulkanTypes.h:154
LightUniformData mLights[MAX_LIGHTS_PER_FRAME]
Definition VulkanTypes.h:163
glm::vec4 mAmbientLightColor
Definition VulkanTypes.h:126
glm::mat4 mShadowViewProj
Definition VulkanTypes.h:123
int32_t mSelectedInstance
Definition VulkanTypes.h:153
uint32_t mNumLights
Definition VulkanTypes.h:152
glm::mat4 mViewToWorld
Definition VulkanTypes.h:122
float mSelectedCheckerSize
Definition VulkanTypes.h:158
float mNearHalfHeight
Definition VulkanTypes.h:148
uint32_t mFrameNumber
Definition VulkanTypes.h:135
glm::vec2 mScreenDimensions
Definition VulkanTypes.h:129
Definition VulkanTypes.h:377
std::vector< glm::vec4 > mDirectColors
Definition VulkanTypes.h:378
std::vector< glm::vec4 > mIndirectColors
Definition VulkanTypes.h:379
Definition VulkanTypes.h:353
glm::vec3 mNormal
Definition VulkanTypes.h:357
float mPad1
Definition VulkanTypes.h:358
float mPad0
Definition VulkanTypes.h:355
glm::vec3 mPosition
Definition VulkanTypes.h:354
glm::vec4 mDirectLight
Definition VulkanTypes.h:360
glm::vec4 mIndirectLight
Definition VulkanTypes.h:361
Definition VulkanTypes.h:99
glm::vec3 mDirection
Definition VulkanTypes.h:105
float mPad0
Definition VulkanTypes.h:109
float mPad2
Definition VulkanTypes.h:111
float mRadius
Definition VulkanTypes.h:103
glm::vec4 mColor
Definition VulkanTypes.h:100
uint32_t mType
Definition VulkanTypes.h:106
glm::vec3 mPosition
Definition VulkanTypes.h:102
float mPad1
Definition VulkanTypes.h:110
float mIntensity
Definition VulkanTypes.h:108
Definition VulkanTypes.h:261
glm::vec2 mUvScale0
Definition VulkanTypes.h:263
uint32_t mShadingModel
Definition VulkanTypes.h:271
uint32_t mUvMaps[MATERIAL_LITE_MAX_TEXTURES]
Definition VulkanTypes.h:291
float mEmission
Definition VulkanTypes.h:284
float mSpecular
Definition VulkanTypes.h:276
float mPad2
Definition VulkanTypes.h:289
uint32_t mVertexColorMode
Definition VulkanTypes.h:282
glm::vec2 mUvScale1
Definition VulkanTypes.h:266
float mMaskCutoff
Definition VulkanTypes.h:278
glm::vec4 mFresnelColor
Definition VulkanTypes.h:269
float mPad1
Definition VulkanTypes.h:288
glm::vec4 mColor
Definition VulkanTypes.h:268
float mPad0
Definition VulkanTypes.h:287
float mWrapLighting
Definition VulkanTypes.h:286
float mShininess
Definition VulkanTypes.h:279
glm::vec2 mUvOffset1
Definition VulkanTypes.h:265
glm::vec2 mUvOffset0
Definition VulkanTypes.h:262
uint32_t mToonSteps
Definition VulkanTypes.h:273
float mOpacity
Definition VulkanTypes.h:277
uint32_t mFresnelEnabled
Definition VulkanTypes.h:281
uint32_t mApplyFog
Definition VulkanTypes.h:283
uint32_t mBlendMode
Definition VulkanTypes.h:272
float mFresnelPower
Definition VulkanTypes.h:274
uint32_t mTevModes[MATERIAL_LITE_MAX_TEXTURES]
Definition VulkanTypes.h:292
Definition VulkanTypes.h:115
glm::mat4 mTransform
Definition VulkanTypes.h:116
Definition VulkanTypes.h:15
MutexObject * mMutex
Definition VulkanTypes.h:17
std::vector< class Pipeline * > * mPipelines
Definition VulkanTypes.h:16
Definition VulkanTypes.h:77
size_t operator()(const PipelineState &k) const
Definition VulkanTypes.h:78
Definition VulkanTypes.h:30
bool mStencilTestEnabled
Definition VulkanTypes.h:64
PipelineState()
Definition VulkanTypes.h:31
bool mRasterizerDiscard
Definition VulkanTypes.h:48
Shader * mVertexShader
Definition VulkanTypes.h:40
VkFrontFace mFrontFace
Definition VulkanTypes.h:54
bool operator==(const PipelineState &other) const
Definition VulkanTypes.cpp:5
bool mDepthBoundsEnabled
Definition VulkanTypes.h:61
VkCullModeFlags mCullMode
Definition VulkanTypes.h:53
Shader * mFragmentShader
Definition VulkanTypes.h:41
VkCompareOp mDepthCompareOp
Definition VulkanTypes.h:60
VkStencilOpState mStencilFront
Definition VulkanTypes.h:65
VkPipelineColorBlendAttachmentState mBlendStates[MAX_RENDER_TARGETS]
Definition VulkanTypes.h:69
float mDepthBias
Definition VulkanTypes.h:55
float mMinDepthBounds
Definition VulkanTypes.h:62
float mMaxDepthBounds
Definition VulkanTypes.h:63
size_t Hash() const
Definition VulkanTypes.cpp:11
VertexType mVertexType
Definition VulkanTypes.h:45
bool mDepthWriteEnabled
Definition VulkanTypes.h:59
VkPolygonMode mPolygonMode
Definition VulkanTypes.h:50
Shader * mComputeShader
Definition VulkanTypes.h:42
VkPrimitiveTopology mPrimitiveTopology
Definition VulkanTypes.h:49
bool mDepthTestEnabled
Definition VulkanTypes.h:58
bool mDynamicLineWidth
Definition VulkanTypes.h:52
VkRenderPass mRenderPass
Definition VulkanTypes.h:44
float mLineWidth
Definition VulkanTypes.h:51
VkStencilOpState mStencilBack
Definition VulkanTypes.h:66
Definition VulkanTypes.h:250
float mY
Definition VulkanTypes.h:255
glm::mat4 mTransform
Definition VulkanTypes.h:251
float mX
Definition VulkanTypes.h:254
float mPad0
Definition VulkanTypes.h:256
float mPad1
Definition VulkanTypes.h:257
glm::vec4 mColor
Definition VulkanTypes.h:252
Definition VulkanTypes.h:224
glm::mat4 mTransform
Definition VulkanTypes.h:225
glm::vec4 mColor
Definition VulkanTypes.h:226
glm::vec4 mQuadParams
Definition VulkanTypes.h:227
Definition VulkanTypes.h:337
uint32_t mCastShadows
Definition VulkanTypes.h:346
glm::vec4 mColor
Definition VulkanTypes.h:341
uint32_t mPad0
Definition VulkanTypes.h:348
uint32_t mLightType
Definition VulkanTypes.h:344
float mRadius
Definition VulkanTypes.h:339
float mIntensity
Definition VulkanTypes.h:347
uint32_t mPad1
Definition VulkanTypes.h:349
glm::vec3 mPosition
Definition VulkanTypes.h:338
glm::vec3 mDirection
Definition VulkanTypes.h:343
Definition VulkanTypes.h:323
glm::uvec4 mTextures
Definition VulkanTypes.h:331
uint32_t mCastShadows
Definition VulkanTypes.h:328
uint32_t mHasBakedLighting
Definition VulkanTypes.h:329
MaterialData mMaterial
Definition VulkanTypes.h:333
glm::vec4 mBounds
Definition VulkanTypes.h:324
uint32_t mStartTriangleIndex
Definition VulkanTypes.h:326
uint32_t mNumTriangles
Definition VulkanTypes.h:327
Definition VulkanTypes.h:318
RayTraceVertex mVertices[3]
Definition VulkanTypes.h:319
Definition VulkanTypes.h:167
uint32_t mDiffuseDirect
Definition VulkanTypes.h:179
glm::vec4 mSkyZenithColor
Definition VulkanTypes.h:188
uint32_t mNumBakeTriangles
Definition VulkanTypes.h:176
uint32_t mDiffuseIndirect
Definition VulkanTypes.h:180
uint32_t mPad1
Definition VulkanTypes.h:185
uint32_t mNumTriangles
Definition VulkanTypes.h:168
uint32_t mNumBakeVertices
Definition VulkanTypes.h:175
uint32_t mPad0
Definition VulkanTypes.h:184
uint32_t mReceiveShadows
Definition VulkanTypes.h:183
uint32_t mMaxBounces
Definition VulkanTypes.h:171
uint32_t mRaysPerThread
Definition VulkanTypes.h:173
int32_t mBakeMeshIndex
Definition VulkanTypes.h:181
uint32_t mPad2
Definition VulkanTypes.h:186
float mShadowBias
Definition VulkanTypes.h:178
uint32_t mNumLights
Definition VulkanTypes.h:170
glm::vec4 mGroundColor
Definition VulkanTypes.h:190
glm::vec4 mSkyHorizonColor
Definition VulkanTypes.h:189
uint32_t mAccumulatedFrames
Definition VulkanTypes.h:174
uint32_t mNumMeshes
Definition VulkanTypes.h:169
Definition VulkanTypes.h:304
float mPad0
Definition VulkanTypes.h:306
glm::vec3 mNormal
Definition VulkanTypes.h:311
glm::vec3 mPosition
Definition VulkanTypes.h:305
glm::vec2 mTexcoord0
Definition VulkanTypes.h:308
float mPad1
Definition VulkanTypes.h:312
glm::vec4 mColor
Definition VulkanTypes.h:314
glm::vec2 mTexcoord1
Definition VulkanTypes.h:309
Definition VulkanTypes.h:85
VkImageLayout mPreLayout
Definition VulkanTypes.h:92
VkAttachmentLoadOp mDepthLoadOp
Definition VulkanTypes.h:90
Image * mDepthImage
Definition VulkanTypes.h:86
VkImageLayout mPostLayout
Definition VulkanTypes.h:93
VkAttachmentStoreOp mStoreOp
Definition VulkanTypes.h:89
VkAttachmentStoreOp mDepthStoreOp
Definition VulkanTypes.h:91
const char * mDebugName
Definition VulkanTypes.h:95
VkAttachmentLoadOp mLoadOp
Definition VulkanTypes.h:88
Image * mColorImages[MAX_RENDER_TARGETS]
Definition VulkanTypes.h:87
Definition VulkanTypes.h:212
GeometryData mBase
Definition VulkanTypes.h:213
uint32_t mPadding2
Definition VulkanTypes.h:220
uint32_t mPadding1
Definition VulkanTypes.h:219
uint32_t mNumBoneInfluences
Definition VulkanTypes.h:217
glm::mat4 mBoneMatrices[MAX_BONES]
Definition VulkanTypes.h:215
uint32_t mPadding0
Definition VulkanTypes.h:218
Definition VulkanTypes.h:231
float mSoftness
Definition VulkanTypes.h:241
float mY
Definition VulkanTypes.h:236
float mCutoff
Definition VulkanTypes.h:237
int32_t mEffect
Definition VulkanTypes.h:246
glm::vec4 mColor
Definition VulkanTypes.h:233
float mX
Definition VulkanTypes.h:235
int32_t mDistanceField
Definition VulkanTypes.h:245
glm::mat4 mTransform
Definition VulkanTypes.h:232
float mScale
Definition VulkanTypes.h:240
float mPadding2
Definition VulkanTypes.h:243
float mOutlineSize
Definition VulkanTypes.h:238
float mPadding1
Definition VulkanTypes.h:242
Definition VulkanTypes.h:365
glm::vec4 mDirectLight
Definition VulkanTypes.h:366
glm::vec4 mIndirectLight
Definition VulkanTypes.h:367