14 template<
typename ReturnType,
typename SetupCallback,
typename ExecutionCallback>
15 ReturnType CreateGraphicsPass(
16 Grindstone::StringRef name,
18 SetupCallback setupImmediateCallback,
19 ExecutionCallback executionCallback
21 static_assert(std::is_invocable_r_v<ReturnType, SetupCallback, Grindstone::Renderer::GraphicsRenderGraphBuilderPass<ReturnType>&>,
"Rendergraph setup callback must match expected signature.");
22 static_assert(std::is_invocable_r_v<void, ExecutionCallback, Grindstone::Math::IntRect2D, const Grindstone::Renderer::RenderGraphContext&, const Grindstone::Renderer::RenderGraphFrameResources&, ReturnType&>,
"Rendergraph execution callback must match expected signature.");
23 uint32_t passIndex =
static_cast<uint32_t
>(passes.size());
27 pass->type = GpuPassType::Graphics;
28 pass->renderGraphBuilder =
this;
29 pass->SetExecutionCallback(executionCallback);
30 pass->SetRenderingArea(metaRect);
31 pass->passIndex = passIndex;
32 pass->returnData = setupImmediateCallback(*pass);
33 return pass->returnData;
36 template<
typename ReturnType,
typename SetupCallback,
typename ExecutionCallback>
37 ReturnType CreateComputePass(
38 Grindstone::StringRef name,
39 SetupCallback setupImmediateCallback,
40 ExecutionCallback executionCallback
42 static_assert(std::is_invocable_r_v<ReturnType, SetupCallback, Grindstone::Renderer::ComputeRenderGraphBuilderPass<ReturnType>&>,
"Rendergraph setup callback must match expected signature.");
43 static_assert(std::is_invocable_r_v<void, ExecutionCallback, Grindstone::Renderer::RenderGraphContext&, const Grindstone::Renderer::RenderGraphFrameResources&, ReturnType&>,
"Rendergraph execution callback must match expected signature.");
45 uint32_t passIndex =
static_cast<uint32_t
>(passes.size());
49 pass->type = GpuPassType::Compute;
50 pass->renderGraphBuilder =
this;
51 pass->SetExecutionCallback(executionCallback);
52 pass->passIndex = passIndex;
53 pass->returnData = setupImmediateCallback(*pass);
54 return pass->returnData;
58 Grindstone::StringRef name,
63 void CreatePresentPass(
74 using GetExternalImageCallback = std::function<Grindstone::GraphicsAPI::Image*>;
75 using GetExternalBufferCallback = std::function<Grindstone::GraphicsAPI::Buffer*>;
79 std::vector<Grindstone::UniquePtr<RenderGraphBuilderPass>> passes;
80 std::vector<UnionResourceDescription> resources;
81 ResourceId presentationResourceId = invalidResourceId;