CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
Forward.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2022 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
11
14
18#define CE_RENDER_API_OBJECT_EACH(F) \
19 F(Buffer) \
20 F(CommandBuffer) \
21 F(CommandQueue) \
22 F(ComputePipeline) \
23 F(Device) \
24 F(Fence) \
25 F(GraphicsPipeline) \
26 F(Image) \
27 F(ImageView) \
28 F(PipelineLayout) \
29 F(RenderPass) \
30 F(RenderTarget) \
31 F(ResourceSet) \
32 F(Sampler) \
33 F(Shader) \
34 F(ShaderProgram) \
35 F(Swapchain) \
36 F(TimerQuery) \
37 F(OcclusionQuery)
38
39namespace CeresEngine {
40 class RenderAPI;
41
42 class GPUResource;
44
45#define CE_RENDER_API_OBJECT_FORWARD(N) \
46 class GPU##N; \
47 struct GPU##N##Descriptor; \
48 using GPU##N##Ptr = RC<GPU##N>;
50#undef CE_RENDER_API_OBJECT_FORWARD
51
52 enum class GPUBufferType;
53 enum class DataType;
54 enum class GPUAttachmentLoadOp;
55 enum class GPUAttachmentStoreOp;
56 enum class GPUBlendArithmetic;
57 enum class GPUBlendOp;
58 enum class GPUBufferUsageFlag;
59 enum class GPUCompareOp;
61 enum class GPUCullMode;
62 enum class GPUImageLayout;
63 enum class GPUImageSwizzle;
64 enum class GPUImageType : UInt32;
65 enum class GPUImageUsageFlags;
66 enum class GPULogicOp;
67 enum class GPUMemoryProperty;
68 enum class GPUPolygonMode;
69 enum class GPUResourceType;
70 enum class GPUSamplerAddressMode;
71 enum class GPUSamplerFilter;
72 enum class GPUStencilOp;
73 enum class QueryType;
77 struct GPUBlendDescriptor;
82 struct GPUDepthDescriptor;
83 struct GPUDeviceInfo;
85 struct GPUImageLocation;
86 struct GPUImageRegion;
93 struct GPURenderingLimits;
99 struct GPUVertexInputRate;
100 struct GPUVsyncDescriptor;
101 struct Scissor;
102 struct Viewport;
105
106 class GPUVertexBuffer;
107 class GPUIndexBuffer;
108 class GPUUniformBuffer;
109 class GPUStorageBuffer;
110 class GPUBindlessBuffer;
111 class GPUIndirectBuffer;
112
113 template<typename P, typename T, std::size_t BaseAlignment> class GPUDynamicBuffer;
114 template<typename P, typename T, std::size_t BaseAlignment> class GPUStaticBuffer;
115
116 template<typename T, template<typename> class B> class TGPUBufferPool;
117 template<template<typename> class B> class GPUBufferPool;
118
121 class GPUResourceBinding;
124} // namespace CeresEngine
125
126#define CE_RENDER_API_OBJECT_RCPTR_TRAIT_DECL(N) CE_RCPTR_TRAIT_DECL(CeresEngine::GPU##N)
128#undef CE_RENDER_API_OBJECT_RCPTR_TRAIT_DECL
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#define CE_RENDER_API_OBJECT_EACH(F)
A macro that invokes the function-macro F for every RenderAPI object type.
Definition Forward.hpp:18
#define CE_RENDER_API_OBJECT_RCPTR_TRAIT_DECL(N)
Definition Forward.hpp:126
#define CE_RENDER_API_OBJECT_FORWARD(N)
Definition Forward.hpp:45
A retain-release type of smart pointer.
Definition SmartPtr.hpp:132
A GPU bindless buffer.
Definition GPUBufferObject.hpp:516
A template class that automatically manages a buffer pool.
Definition GPUBufferObject.hpp:917
Definition GPUBufferObject.hpp:562
Definition GPUBufferObject.hpp:169
Definition GPUBufferObject.hpp:314
Definition GPUResourceSet.hpp:125
Definition GPUResourceSet.hpp:338
Definition GPUResourceSet.hpp:457
Definition Forward.hpp:114
Definition GPUBufferObject.hpp:268
Definition GPUBufferObject.hpp:221
Definition GPUBufferObject.hpp:126
A template class that automatically manages a uniform buffer pool.
Definition GPUBufferObject.hpp:1059
Definition Application.hpp:19
GPUAttachmentLoadOp
Enumeration for render pass attachment load operations.
Definition GPURenderPass.hpp:32
GPUImageSwizzle
Image component swizzle enumeration.
Definition GPUImage.hpp:192
GPUPolygonMode
Polygon filling modes enumeration.
Definition GPUGraphicsPipeline.hpp:143
GPUImageUsageFlags
Definition GPUImage.hpp:49
GPUCullMode
Polygon culling modes enumeration.
Definition GPUGraphicsPipeline.hpp:153
GPUConservativeRasterizationMode
Specify the conservative rasterization mode.
Definition GPUGraphicsPipeline.hpp:204
GPUImageLayout
Definition GPUImage.hpp:65
GPUAttachmentStoreOp
Enumeration for render pass attachment store operations.
Definition GPURenderPass.hpp:48
GPUSamplerAddressMode
Technique for resolving image coordinates that are outside of the range [0, 1].
Definition GPUSampler.hpp:29
GPUCompareOp
Compare operations enumeration.
Definition GPUGraphicsPipeline.hpp:37
GPUBlendOp
Blending operations enumeration.
Definition GPUGraphicsPipeline.hpp:84
GPUMemoryProperty
Flag specifying properties for a memory type.
Definition GPUMemory.hpp:18
GPUBlendArithmetic
Blending arithmetic operations enumeration.
Definition GPUGraphicsPipeline.hpp:129
GPUStencilOp
Stencil operations enumeration.
Definition GPUGraphicsPipeline.hpp:63
GPUBufferUsageFlag
Definition GPUBuffer.hpp:53
GPUImageType
Definition GPUImage.hpp:36
GPUResourceType
An enumeration of supported resource types.
Definition GPUResource.hpp:15
GPUBufferType
Hardware buffer type enumeration.
Definition GPUBuffer.hpp:32
GPUSamplerFilter
Sampling filter enumeration.
Definition GPUSampler.hpp:49
DataType
Renderer data types enumeration.
Definition GPUFormat.hpp:109
std::uint32_t UInt32
Definition DataTypes.hpp:23
GPULogicOp
Logical pixel operation enumeration.
Definition GPUGraphicsPipeline.hpp:166
Render target attachment descriptor structure.
Definition GPURenderTarget.hpp:46
Render target attachment descriptor structure.
Definition GPURenderPass.hpp:63
Layout structure for a single binding point of the pipeline layout descriptor.
Definition GPUPipelineLayout.hpp:27
Blending state descriptor structure.
Definition GPUGraphicsPipeline.hpp:638
Blend target state descriptor structure.
Definition GPUGraphicsPipeline.hpp:586
Definition GPUResourceSet.hpp:65
Definition GPUBuffer.hpp:230
Conservative rasterization descriptor structure to control how the GPU should perform conservative ra...
Definition GPUGraphicsPipeline.hpp:498
Depth bias descriptor structure to control fragment depth values.
Definition GPUGraphicsPipeline.hpp:469
Depth state descriptor structure.
Definition GPUGraphicsPipeline.hpp:367
Renderer basic information structure.
Definition GPUDevice.hpp:330
Graphics pipeline state descriptor structure.
Definition GPUGraphicsPipeline.hpp:694
Image location structure: MIP-map level and offset.
Definition GPUImage.hpp:120
Image region structure: Subresource (MIP-map level and array layer range), offset,...
Definition GPUImage.hpp:156
Definition GPUResourceSet.hpp:82
Image subresource descriptor which specifies the array layer and MIP-map level range of a image resou...
Definition GPUImage.hpp:77
Image component swizzle structure for red, green, blue, and alpha components.
Definition GPUImage.hpp:216
Multi-sampling descriptor structure.
Definition GPUGraphicsPipeline.hpp:335
Rasterizer state descriptor structure.
Definition GPUGraphicsPipeline.hpp:521
Structure with all attributes describing the rendering capabilities of the render system.
Definition GPUDevice.hpp:269
Contains the attributes for all supported rendering features.
Definition GPUDevice.hpp:54
Contains all rendering limitations such as maximum buffer size, maximum image resolution etc.
Definition GPUDevice.hpp:168
Shader reflection descriptor structure.
Definition GPUShader.hpp:108
Stencil state descriptor structure.
Definition GPUGraphicsPipeline.hpp:444
Stencil face descriptor structure.
Definition GPUGraphicsPipeline.hpp:395
Determines how vertices should be handled as input on vertex shaders.
Definition GPUGraphicsPipeline.hpp:324
Specify rate at which vertex attributes are pulled from buffers.
Definition GPUVertexFormat.hpp:63
Vertical-synchronization (Vsync) descriptor structure.
Definition GPUSwapchain.hpp:24
Definition GPUGraphicsPipeline.hpp:281
Definition GPUGraphicsPipeline.hpp:214