CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
RenderGraphTask.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
10#include "Forward.hpp"
11
12#include "RenderGraphBuffer.hpp"
13#include "RenderGraphImage.hpp"
15
19
21
23
24 class RenderGraph;
25 class RenderGraphBuilder;
26
27 class RenderGraphImage;
28
29 struct RenderGraphTaskCompiledInformation;
30 class RenderGraphTaskCompiler;
31
32 class RenderGraphTask : public GraphNode {
33 protected:
34 bool mEnabled = true;
35
36 public:
38 // explicit RenderGraphTask(RenderGraph& graph);
39
40 public:
43 };
44
48
52
56
58 public:
61
62 public:
63 using RenderGraphTask::RenderGraphTask;
64
65 public:
67 void execute();
68 };
69
73 public:
75
76 public:
77 using RenderGraphTask::RenderGraphTask;
78
79 public:
81 void execute();
82 };
83
85
106
108 private:
110
111 public: // Color attachments
119 .socket = &socket,
120 .descriptor = descriptor,
121 });
122 }
123
134
135 public: // Depth attachment
141
144 .socket = &socket,
145 .descriptor = descriptor,
146 };
147 }
148
154
160
161 public: // Stencil attachment
167
170 .socket = &socket,
171 .descriptor = descriptor,
172 };
173 }
174
180
186
187 public: // Generic read-writes
188 void read(GraphSocket& socket) {
190 .socket = &socket,
191 });
192 }
193
194 void read(RenderGraphResource& resource) {
196 .resource = &resource,
197 });
198 }
199
200 void write(GraphSocket& socket) {
202 .socket = &socket,
203 });
204 }
205
206 void write(GraphSocket& socket, const RenderGraphBufferDescriptor& descriptor) {
208 .socket = &socket,
209 .descriptor = descriptor,
210 });
211 }
212
213 void write(GraphSocket& socket, const RenderGraphImageDescriptor& descriptor) {
215 .socket = &socket,
216 .descriptor = descriptor,
217 });
218 }
219
220 void write(RenderGraphResource& resource) {
222 .resource = &resource,
223 });
224 }
225
226 void write(const RenderGraphBufferDescriptor& descriptor) {
228 .descriptor = descriptor,
229 });
230 }
231
232 void write(const RenderGraphImageDescriptor& descriptor) {
234 .descriptor = descriptor,
235 });
236 }
237
238 void readAndWrite(GraphSocket& socket) {
239 read(socket);
240 write(socket);
241 }
242
244 read(resource);
245 write(resource);
246 }
247 };
248
249} // namespace CeresEngine::RenderGraph2
Definition GraphNode.hpp:21
GraphNode(Graph &graph, const UUID &uuid)
Definition GraphNode.hpp:42
Definition GraphSocket.hpp:46
Definition Optional.hpp:17
A sub-class of RenderGraphTask that is used to implement tasks that use a GPUComputePipeline using an...
Definition RenderGraphTask.hpp:55
Definition RenderGraphTask.hpp:57
void compile(RenderGraphTaskCompiler &compiler) final
GraphSocket & input
Definition RenderGraphTask.hpp:59
GraphSocket & output
Definition RenderGraphTask.hpp:60
A sub-class of RenderGraphTask that is used to implement tasks that use a GPUComputePipeline.
Definition RenderGraphTask.hpp:51
A sub-class of RenderGraphTask that is used to implement tasks that use a GPUGraphicsPipeline.
Definition RenderGraphTask.hpp:47
A RenderGraph resource that represents a GPU image.
Definition RenderGraphImage.hpp:76
A special RenderGraphTask that is used to present an input image to the swapchain.
Definition RenderGraphTask.hpp:72
void compile(RenderGraphTaskCompiler &compiler) final
GraphSocket & input
Definition RenderGraphTask.hpp:74
Definition RenderGraphResource.hpp:26
Definition RenderGraphTask.hpp:107
void setDepthAttachment(GraphSocket &socket, const RenderGraphImageDescriptor &descriptor)
Definition RenderGraphTask.hpp:142
void setStencilAttachment(GraphSocket &socket, const RenderGraphImageDescriptor &descriptor)
Definition RenderGraphTask.hpp:168
void setDepthAttachment(RenderGraphImage &image)
Definition RenderGraphTask.hpp:155
void write(const RenderGraphImageDescriptor &descriptor)
Definition RenderGraphTask.hpp:232
void addColorAttachment(GraphSocket &socket)
Definition RenderGraphTask.hpp:112
void write(const RenderGraphBufferDescriptor &descriptor)
Definition RenderGraphTask.hpp:226
void read(RenderGraphResource &resource)
Definition RenderGraphTask.hpp:194
void write(GraphSocket &socket, const RenderGraphImageDescriptor &descriptor)
Definition RenderGraphTask.hpp:213
void read(GraphSocket &socket)
Definition RenderGraphTask.hpp:188
void addColorAttachment(const RenderGraphImageDescriptor &descriptor)
Definition RenderGraphTask.hpp:124
void setStencilAttachment(const RenderGraphImageDescriptor &descriptor)
Definition RenderGraphTask.hpp:175
void addColorAttachment(GraphSocket &socket, const RenderGraphImageDescriptor &descriptor)
Definition RenderGraphTask.hpp:117
void readAndWrite(RenderGraphResource &resource)
Definition RenderGraphTask.hpp:243
void setDepthAttachment(GraphSocket &socket)
Definition RenderGraphTask.hpp:136
void setDepthAttachment(const RenderGraphImageDescriptor &descriptor)
Definition RenderGraphTask.hpp:149
void write(RenderGraphResource &resource)
Definition RenderGraphTask.hpp:220
RenderGraphTaskCompiledInformation mDescriptor
Definition RenderGraphTask.hpp:109
void setStencilAttachment(GraphSocket &socket)
Definition RenderGraphTask.hpp:162
void write(GraphSocket &socket, const RenderGraphBufferDescriptor &descriptor)
Definition RenderGraphTask.hpp:206
void readAndWrite(GraphSocket &socket)
Definition RenderGraphTask.hpp:238
void write(GraphSocket &socket)
Definition RenderGraphTask.hpp:200
void addColorAttachment(RenderGraphImage &image)
Definition RenderGraphTask.hpp:129
void setStencilAttachment(RenderGraphImage &image)
Definition RenderGraphTask.hpp:181
Definition RenderGraphTask.hpp:32
RenderGraphTaskCompiledInformation compile()
virtual void compile(RenderGraphTaskCompiler &compiler)=0
bool mEnabled
Definition RenderGraphTask.hpp:34
Definition Variant.hpp:15
Definition Forward.hpp:12
std::vector< T, ScopedAllocatorAdaptor< StdAllocator< T, RawAllocator > > > Vector
Vector is a sequence container that encapsulates dynamic size arrays.
Definition Vector.hpp:17
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
A structure that describes how an Image Resource should be created during Render Graph execution.
Definition RenderGraphImage.hpp:44
Optional< RenderGraphImageDescriptor > descriptor
Definition RenderGraphTask.hpp:90
RenderGraphImage * image
Definition RenderGraphTask.hpp:89
RenderGraphResource * resource
Definition RenderGraphTask.hpp:99
Variant< RenderGraphBufferDescriptor, RenderGraphImageDescriptor > descriptor
Definition RenderGraphTask.hpp:100
Vector< ResourceAccess > reads
Definition RenderGraphTask.hpp:103
Vector< Attachment > colorAttachments
Definition RenderGraphTask.hpp:93
Vector< ResourceAccess > writes
Definition RenderGraphTask.hpp:104
Attachment stencilAttachment
Definition RenderGraphTask.hpp:95
Attachment depthAttachment
Definition RenderGraphTask.hpp:94