Refactored Graphics #297
|
@ -265,6 +265,7 @@ namespace SHADE
|
||||||
auto viewSamplerLayout = ssaoStorage->GetViewSamplerLayout();
|
auto viewSamplerLayout = ssaoStorage->GetViewSamplerLayout();
|
||||||
|
|
||||||
ssaoPass->ModifyWriteDescImageComputeResource(SHGraphicsConstants::DescriptorSetIndex::RENDERGRAPH_NODE_COMPUTE_RESOURCE, SHSSAO::DESC_SET_IMAGE_BINDING, { &viewSamplerLayout, 1 });
|
ssaoPass->ModifyWriteDescImageComputeResource(SHGraphicsConstants::DescriptorSetIndex::RENDERGRAPH_NODE_COMPUTE_RESOURCE, SHSSAO::DESC_SET_IMAGE_BINDING, { &viewSamplerLayout, 1 });
|
||||||
|
ssaoPass->SetRenderer (worldRenderer);
|
||||||
|
|
||||||
// Add another pass to blur SSAO
|
// Add another pass to blur SSAO
|
||||||
Handle<SHRenderGraphNodeCompute> ssaoBlurPass = gBufferNode->AddNodeCompute("SSAO Blur Step", ssaoBlurShader, { "SSAO", "SSAO Blur" });
|
Handle<SHRenderGraphNodeCompute> ssaoBlurPass = gBufferNode->AddNodeCompute("SSAO Blur Step", ssaoBlurShader, { "SSAO", "SSAO Blur" });
|
||||||
|
|
|
@ -132,6 +132,11 @@ namespace SHADE
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SHFont::BindDescriptorSet(Handle<SHVkCommandBuffer> commandBuffer, SH_PIPELINE_TYPE pipelineType, uint32_t setIndex) noexcept
|
||||||
|
{
|
||||||
|
commandBuffer->BindDescriptorSet(descSet, SH_PIPELINE_TYPE::GRAPHICS, setIndex, {});
|
||||||
|
}
|
||||||
|
|
||||||
std::unordered_map<msdfgen::unicode_t, uint32_t> SHFont::GetUnicodeIndexing(void) const noexcept
|
std::unordered_map<msdfgen::unicode_t, uint32_t> SHFont::GetUnicodeIndexing(void) const noexcept
|
||||||
{
|
{
|
||||||
return unicodeIndexing;
|
return unicodeIndexing;
|
||||||
|
|
|
@ -57,6 +57,7 @@ namespace SHADE
|
||||||
SHFont (Handle<SHVkLogicalDevice> inLogicalDeviceHdl, SHFontAsset const& asset) noexcept;
|
SHFont (Handle<SHVkLogicalDevice> inLogicalDeviceHdl, SHFontAsset const& asset) noexcept;
|
||||||
void TransferToGPU (Handle<SHVkCommandBuffer> commandBuffer) noexcept;
|
void TransferToGPU (Handle<SHVkCommandBuffer> commandBuffer) noexcept;
|
||||||
void DoPostTransfer (Handle<SHVkDescriptorPool> descPool, Handle<SHVkDescriptorSetLayout> layout) noexcept;
|
void DoPostTransfer (Handle<SHVkDescriptorPool> descPool, Handle<SHVkDescriptorSetLayout> layout) noexcept;
|
||||||
|
void BindDescriptorSet (Handle<SHVkCommandBuffer> commandBuffer, SH_PIPELINE_TYPE pipelineType, uint32_t setIndex) noexcept;
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
|
@ -199,8 +199,8 @@ namespace SHADE
|
||||||
renderer->BindDescriptorSet(cmdBuffer, SH_PIPELINE_TYPE::GRAPHICS, cameraSetIndex, frameIndex);
|
renderer->BindDescriptorSet(cmdBuffer, SH_PIPELINE_TYPE::GRAPHICS, cameraSetIndex, frameIndex);
|
||||||
|
|
||||||
// bind descriptors for font (matrices)
|
// bind descriptors for font (matrices)
|
||||||
cmdBuffer->BindDescriptorSet(fontHandle->GetDescriptorSet(), SH_PIPELINE_TYPE::GRAPHICS, fontSetIndex, {});
|
fontHandle->BindDescriptorSet(cmdBuffer, SH_PIPELINE_TYPE::GRAPHICS, fontSetIndex);
|
||||||
|
|
||||||
// bind VBO (position and indices)
|
// bind VBO (position and indices)
|
||||||
cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::CALCULATED_GLYPH_POSITION, comp.charPositionDataBuffer, 0);
|
cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::CALCULATED_GLYPH_POSITION, comp.charPositionDataBuffer, 0);
|
||||||
cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::GLYPH_INDEX, comp.indexingDataBuffer, 0);
|
cmdBuffer->BindVertexBuffer(SHGraphicsConstants::VertexBufferBindings::GLYPH_INDEX, comp.indexingDataBuffer, 0);
|
||||||
|
|
|
@ -353,14 +353,19 @@ namespace SHADE
|
||||||
|
|
||||||
auto const& descMappings = SHPredefinedData::GetBatchingSystemData().descMappings;
|
auto const& descMappings = SHPredefinedData::GetBatchingSystemData().descMappings;
|
||||||
|
|
||||||
// Execute all subpass computes
|
// We bind these 2 descriptor sets here because they apply to all node computes
|
||||||
for (auto& sbCompute : nodeComputes)
|
if (!nodeComputes.empty())
|
||||||
{
|
{
|
||||||
|
// bind static global data
|
||||||
|
SHGlobalDescriptorSets::BindStaticGlobalData(commandBuffer, SH_PIPELINE_TYPE::COMPUTE, descMappings.GetMappings().at(SHGraphicsConstants::DescriptorSetTypes::STATIC_DATA));
|
||||||
|
|
||||||
// bind lighting data
|
// bind lighting data
|
||||||
SHGlobalDescriptorSets::BindLightingData(commandBuffer, SH_PIPELINE_TYPE::COMPUTE, descMappings.GetMappings().at(SHGraphicsConstants::DescriptorSetTypes::LIGHTS), frameIndex);
|
SHGlobalDescriptorSets::BindLightingData(commandBuffer, SH_PIPELINE_TYPE::COMPUTE, descMappings.GetMappings().at(SHGraphicsConstants::DescriptorSetTypes::LIGHTS), frameIndex);
|
||||||
|
|
||||||
sbCompute->Execute(commandBuffer, frameIndex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Execute all subpass computes
|
||||||
|
for (auto& sbCompute : nodeComputes)
|
||||||
|
sbCompute->Execute(commandBuffer, frameIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
Handle<SHVkPipeline> SHRenderGraphNode::GetOrCreatePipeline(std::pair<Handle<SHVkShaderModule>, Handle<SHVkShaderModule>> const& vsFsPair, Handle<SHSubpass> subpass) noexcept
|
Handle<SHVkPipeline> SHRenderGraphNode::GetOrCreatePipeline(std::pair<Handle<SHVkShaderModule>, Handle<SHVkShaderModule>> const& vsFsPair, Handle<SHSubpass> subpass) noexcept
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "SHRenderGraphStorage.h"
|
#include "SHRenderGraphStorage.h"
|
||||||
#include "SHRenderGraphResource.h"
|
#include "SHRenderGraphResource.h"
|
||||||
#include "Graphics/Commands/SHVkCommandBuffer.h"
|
#include "Graphics/Commands/SHVkCommandBuffer.h"
|
||||||
|
#include "Graphics/MiddleEnd/Interface/SHRenderer.h"
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
@ -23,6 +24,7 @@ namespace SHADE
|
||||||
, numWorkGroupScale {std::clamp(inNumWorkGroupScale, 0.0f, 1.0f)}
|
, numWorkGroupScale {std::clamp(inNumWorkGroupScale, 0.0f, 1.0f)}
|
||||||
, computeResource{}
|
, computeResource{}
|
||||||
, name { std::move(nodeName) }
|
, name { std::move(nodeName) }
|
||||||
|
, renderer{ }
|
||||||
{
|
{
|
||||||
SHPipelineLayoutParams pipelineLayoutParams
|
SHPipelineLayoutParams pipelineLayoutParams
|
||||||
{
|
{
|
||||||
|
@ -94,14 +96,20 @@ namespace SHADE
|
||||||
|
|
||||||
auto const& descMappings = SHPredefinedData::GetRenderGraphNodeComputeData().descMappings;
|
auto const& descMappings = SHPredefinedData::GetRenderGraphNodeComputeData().descMappings;
|
||||||
|
|
||||||
// bind descriptor sets
|
|
||||||
|
// bind render graph resource
|
||||||
cmdBuffer->BindDescriptorSet(graphResourceDescSets[frameIndex], SH_PIPELINE_TYPE::COMPUTE, descMappings.GetMappings().at(SHGraphicsConstants::DescriptorSetTypes::RENDER_GRAPH_RESOURCE), {});
|
cmdBuffer->BindDescriptorSet(graphResourceDescSets[frameIndex], SH_PIPELINE_TYPE::COMPUTE, descMappings.GetMappings().at(SHGraphicsConstants::DescriptorSetTypes::RENDER_GRAPH_RESOURCE), {});
|
||||||
|
|
||||||
|
// bind compute resource
|
||||||
if (computeResource)
|
if (computeResource)
|
||||||
{
|
{
|
||||||
cmdBuffer->BindDescriptorSet(computeResource->descSet, SH_PIPELINE_TYPE::COMPUTE, descMappings.GetMappings().at(SHGraphicsConstants::DescriptorSetTypes::RENDER_GRAPH_NODE_COMPUTE_RESOURCE), computeResource->dynamicOffsets[frameIndex]);
|
cmdBuffer->BindDescriptorSet(computeResource->descSet, SH_PIPELINE_TYPE::COMPUTE, descMappings.GetMappings().at(SHGraphicsConstants::DescriptorSetTypes::RENDER_GRAPH_NODE_COMPUTE_RESOURCE), computeResource->dynamicOffsets[frameIndex]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// bind camera data
|
||||||
|
if (renderer)
|
||||||
|
renderer->BindDescriptorSet (cmdBuffer, SH_PIPELINE_TYPE::COMPUTE, descMappings.GetMappings().at(SHGraphicsConstants::DescriptorSetTypes::CAMERA), frameIndex);
|
||||||
|
|
||||||
// dispatch compute
|
// dispatch compute
|
||||||
cmdBuffer->ComputeDispatch(groupSizeX, groupSizeY, 1);
|
cmdBuffer->ComputeDispatch(groupSizeX, groupSizeY, 1);
|
||||||
|
|
||||||
|
@ -187,6 +195,11 @@ namespace SHADE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SHRenderGraphNodeCompute::SetRenderer(Handle<SHRenderer> inRenderer) noexcept
|
||||||
|
{
|
||||||
|
renderer = inRenderer;
|
||||||
|
}
|
||||||
|
|
||||||
void SHRenderGraphNodeCompute::ModifyWriteDescBufferComputeResource(uint32_t set, uint32_t binding, std::span<Handle<SHVkBuffer>> const& buffers, uint32_t offset, uint32_t range) noexcept
|
void SHRenderGraphNodeCompute::ModifyWriteDescBufferComputeResource(uint32_t set, uint32_t binding, std::span<Handle<SHVkBuffer>> const& buffers, uint32_t offset, uint32_t range) noexcept
|
||||||
{
|
{
|
||||||
computeResource->descSet->ModifyWriteDescBuffer(set, binding, buffers, offset, range);
|
computeResource->descSet->ModifyWriteDescBuffer(set, binding, buffers, offset, range);
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <initializer_list>
|
#include <initializer_list>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
|
#include "Resource/SHHandle.h"
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
@ -19,6 +20,7 @@ namespace SHADE
|
||||||
class SHVkShaderModule;
|
class SHVkShaderModule;
|
||||||
class SHVkCommandBuffer;
|
class SHVkCommandBuffer;
|
||||||
class SHVkBuffer;
|
class SHVkBuffer;
|
||||||
|
class SHRenderer;
|
||||||
|
|
||||||
|
|
||||||
class SHRenderGraphNodeCompute
|
class SHRenderGraphNodeCompute
|
||||||
|
@ -50,11 +52,12 @@ namespace SHADE
|
||||||
//! Compute resources
|
//! Compute resources
|
||||||
Handle<ComputeResource> computeResource;
|
Handle<ComputeResource> computeResource;
|
||||||
|
|
||||||
//!
|
|
||||||
|
|
||||||
//! vector of resources needed by the subpass compute
|
//! vector of resources needed by the subpass compute
|
||||||
std::vector<Handle<SHRenderGraphResource>> resources;
|
std::vector<Handle<SHRenderGraphResource>> resources;
|
||||||
|
|
||||||
|
//! For binding optional camera data to the post compute
|
||||||
|
Handle<SHRenderer> renderer;
|
||||||
|
|
||||||
//! X dimension work group size. Should scale with resource size.
|
//! X dimension work group size. Should scale with resource size.
|
||||||
uint32_t groupSizeX;
|
uint32_t groupSizeX;
|
||||||
|
|
||||||
|
@ -77,6 +80,7 @@ namespace SHADE
|
||||||
void HandleResize (void) noexcept;
|
void HandleResize (void) noexcept;
|
||||||
|
|
||||||
void SetDynamicOffsets (std::span<uint32_t> perFrameSizes) noexcept;
|
void SetDynamicOffsets (std::span<uint32_t> perFrameSizes) noexcept;
|
||||||
|
void SetRenderer (Handle<SHRenderer> inRenderer) noexcept;
|
||||||
|
|
||||||
void ModifyWriteDescBufferComputeResource (uint32_t set, uint32_t binding, std::span<Handle<SHVkBuffer>> const& buffers, uint32_t offset, uint32_t range) noexcept;
|
void ModifyWriteDescBufferComputeResource (uint32_t set, uint32_t binding, std::span<Handle<SHVkBuffer>> const& buffers, uint32_t offset, uint32_t range) noexcept;
|
||||||
void ModifyWriteDescImageComputeResource(uint32_t set, uint32_t binding, std::span<SHVkDescriptorSetGroup::viewSamplerLayout> const& viewSamplerLayouts) noexcept;
|
void ModifyWriteDescImageComputeResource(uint32_t set, uint32_t binding, std::span<SHVkDescriptorSetGroup::viewSamplerLayout> const& viewSamplerLayouts) noexcept;
|
||||||
|
|
Loading…
Reference in New Issue