Rehti MMORPG  1.0.0
Rehti MMORPG is a free and open source MMORPG game.
GraphicsTypes.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "BasicTypes.hpp"
4 #include <vk_mem_alloc.h>
5 
7 {
8  VkBuffer vertexBuffer;
9  VkBuffer indexBuffer;
10  uint32_t indexCount;
11  VkDescriptorSet descriptorSet;
12 };
13 // Image handle and allocation (and size)
15 {
16  VkImage image;
17  VmaAllocation allocation;
18  VkDeviceSize size;
19 };
20 // Has image view in addition to AllocatedImage struct
22 {
24  VkImageView imageView;
25 };
26 
28 {
29  VkBuffer buffer;
30  VmaAllocation allocation;
31  VkDeviceSize size;
32 };
33 
34 // Game object descriptor data
36 {
37  VkDescriptorSet descriptorSet; // Descriptor set of the data
38  AllocatedBuffer transformBuffer; // Buffer containing the transform data (glm::mat4)
39  void* mappedTransformData; // Pointer to the mapped data of the transform buffer
40 };
41 
42 // Simple uniform buffer with a single allocated buffer
44 {
45  VkDescriptorSet descriptorSet; // Descriptor set of the data
46  AllocatedBuffer buffer; // Buffer containing whatever data is needed
47  void* mappedTransformData; // Pointer to the mapped data of the transform buffer
48 };
49 
50 // Character buffer object
52 {
53  VkDescriptorSet descriptorSet; // Descriptor set of the data
54  AllocatedBuffer transformBuffer; // Buffer containing model to world matrix
55  AllocatedBuffer boneTransformations; // Buffer containing bone transformations
56 };
57 
58 // Object that contains everything needed to render a character.
60 {
64  uint32_t indexCount;
66  VkImageView textureView;
68  std::vector<CharacterObjectUniformBuffer> characterUniformBuffers;
69  static std::array<VkDescriptorSetLayoutBinding, 4> getDescriptorSetLayoutBindings();
70 };
71 
72 struct GameObject
73 {
77  uint32_t indexCount;
79  VkImageView textureView;
81  std::vector<GameObjectUniformBuffer> uniformBuffers;
82  static std::array<VkDescriptorSetLayoutBinding, 3> getDescriptorSetLayoutBindings();
83 };
84 
85 struct AreaObject
86 {
89  uint32_t indexCount;
90  std::array<AllocatedImage, 6> textures; // 6: blendMap, base and r, g, b, a
91  std::array<VkImageView, 6> textureViews;
92  VkDescriptorSet descriptorSet;
93  static std::array<VkDescriptorSetLayoutBinding, 1> getDescriptorSetLayoutBindings();
94 };
95 
96 struct TestObject
97 {
100  uint32_t indexCount;
101  std::vector<SimpleUniformBuffer> uniformBuffers;
102  static std::array<VkDescriptorSetLayoutBinding, 1> getDescriptorSetLayoutBindings();
103 };
104 
109 {
110  std::vector<SimpleUniformBuffer> uniformBuffers; // List of light data along with their descriptor sets
111  static std::array<VkDescriptorSetLayoutBinding, 1> getDescriptorSetLayoutBindings();
112 };
113 
118 std::vector<VkVertexInputAttributeDescription> getAttributeDescription(ObjectType objectType);
119 
125 VkVertexInputBindingDescription getBindingDescription(ObjectType objectType);
ObjectType
Definition: BasicTypes.hpp:29
VkVertexInputBindingDescription getBindingDescription(ObjectType objectType)
Returns the vertex binding description for the given object type.
Definition: GraphicsTypes.cpp:312
std::vector< VkVertexInputAttributeDescription > getAttributeDescription(ObjectType objectType)
Returns a vector of VkVertexInputAttributeDescription for the given object type.
Definition: GraphicsTypes.cpp:276
Definition: GraphicsTypes.hpp:28
VkDeviceSize size
Definition: GraphicsTypes.hpp:31
VmaAllocation allocation
Definition: GraphicsTypes.hpp:30
VkBuffer buffer
Definition: GraphicsTypes.hpp:29
Definition: GraphicsTypes.hpp:15
VkImage image
Definition: GraphicsTypes.hpp:16
VkDeviceSize size
Definition: GraphicsTypes.hpp:18
VmaAllocation allocation
Definition: GraphicsTypes.hpp:17
Definition: GraphicsTypes.hpp:86
AllocatedBuffer vertexData
Definition: GraphicsTypes.hpp:87
std::array< AllocatedImage, 6 > textures
Definition: GraphicsTypes.hpp:90
VkDescriptorSet descriptorSet
Definition: GraphicsTypes.hpp:92
std::array< VkImageView, 6 > textureViews
Definition: GraphicsTypes.hpp:91
static std::array< VkDescriptorSetLayoutBinding, 1 > getDescriptorSetLayoutBindings()
Definition: GraphicsTypes.cpp:73
uint32_t indexCount
Definition: GraphicsTypes.hpp:89
AllocatedBuffer indexData
Definition: GraphicsTypes.hpp:88
Definition: GraphicsTypes.hpp:52
VkDescriptorSet descriptorSet
Definition: GraphicsTypes.hpp:53
AllocatedBuffer transformBuffer
Definition: GraphicsTypes.hpp:54
AllocatedBuffer boneTransformations
Definition: GraphicsTypes.hpp:55
Definition: GraphicsTypes.hpp:60
uint32_t indexCount
Definition: GraphicsTypes.hpp:64
AllocatedBuffer materialData
Definition: GraphicsTypes.hpp:63
VkImageView textureView
Definition: GraphicsTypes.hpp:66
static std::array< VkDescriptorSetLayoutBinding, 4 > getDescriptorSetLayoutBindings()
Definition: GraphicsTypes.cpp:17
AllocatedImage texture
Definition: GraphicsTypes.hpp:65
AllocatedBuffer indexData
Definition: GraphicsTypes.hpp:62
std::vector< CharacterObjectUniformBuffer > characterUniformBuffers
Definition: GraphicsTypes.hpp:68
AllocatedBuffer vertexData
Definition: GraphicsTypes.hpp:61
PhongMaterial material
Definition: GraphicsTypes.hpp:67
Definition: GraphicsTypes.hpp:22
VkImageView imageView
Definition: GraphicsTypes.hpp:24
AllocatedImage imageAllocation
Definition: GraphicsTypes.hpp:23
Definition: GraphicsTypes.hpp:7
VkDescriptorSet descriptorSet
Definition: GraphicsTypes.hpp:11
VkBuffer indexBuffer
Definition: GraphicsTypes.hpp:9
uint32_t indexCount
Definition: GraphicsTypes.hpp:10
VkBuffer vertexBuffer
Definition: GraphicsTypes.hpp:8
Definition: GraphicsTypes.hpp:36
void * mappedTransformData
Definition: GraphicsTypes.hpp:39
VkDescriptorSet descriptorSet
Definition: GraphicsTypes.hpp:37
AllocatedBuffer transformBuffer
Definition: GraphicsTypes.hpp:38
Definition: GraphicsTypes.hpp:73
AllocatedBuffer materialData
Definition: GraphicsTypes.hpp:76
std::vector< GameObjectUniformBuffer > uniformBuffers
Definition: GraphicsTypes.hpp:81
AllocatedBuffer indexData
Definition: GraphicsTypes.hpp:75
PhongMaterial material
Definition: GraphicsTypes.hpp:80
uint32_t indexCount
Definition: GraphicsTypes.hpp:77
AllocatedImage texture
Definition: GraphicsTypes.hpp:78
VkImageView textureView
Definition: GraphicsTypes.hpp:79
static std::array< VkDescriptorSetLayoutBinding, 3 > getDescriptorSetLayoutBindings()
Definition: GraphicsTypes.cpp:49
AllocatedBuffer vertexData
Definition: GraphicsTypes.hpp:74
Simple light object that contains a list of uniform buffers.
Definition: GraphicsTypes.hpp:109
static std::array< VkDescriptorSetLayoutBinding, 1 > getDescriptorSetLayoutBindings()
Definition: GraphicsTypes.cpp:335
std::vector< SimpleUniformBuffer > uniformBuffers
Definition: GraphicsTypes.hpp:110
Definition: BasicTypes.hpp:135
Definition: GraphicsTypes.hpp:44
VkDescriptorSet descriptorSet
Definition: GraphicsTypes.hpp:45
AllocatedBuffer buffer
Definition: GraphicsTypes.hpp:46
void * mappedTransformData
Definition: GraphicsTypes.hpp:47
Definition: GraphicsTypes.hpp:97
std::vector< SimpleUniformBuffer > uniformBuffers
Definition: GraphicsTypes.hpp:101
AllocatedBuffer vertexData
Definition: GraphicsTypes.hpp:98
static std::array< VkDescriptorSetLayoutBinding, 1 > getDescriptorSetLayoutBindings()
Definition: GraphicsTypes.cpp:6
AllocatedBuffer indexData
Definition: GraphicsTypes.hpp:99
uint32_t indexCount
Definition: GraphicsTypes.hpp:100