Moved a bunch of global data from Graphics System to new class
New class in SHGraphicsGlobalData
This commit is contained in:
parent
77330511ee
commit
d9213fe35d
|
@ -0,0 +1,103 @@
|
|||
#include "SHpch.h"
|
||||
#include "SHGraphicsGlobalData.h"
|
||||
#include "Graphics/Devices/SHVkLogicalDevice.h"
|
||||
#include "Graphics/Pipeline/SHPipelineState.h"
|
||||
#include "Graphics/Descriptors/SHVkDescriptorSetLayout.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
|
||||
void SHGraphicsGlobalData::InitDescSetLayouts(Handle<SHVkLogicalDevice> logicalDevice) noexcept
|
||||
{
|
||||
SHVkDescriptorSetLayout::Binding genericDataBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eUniformBufferDynamic,
|
||||
.Stage = vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment | vk::ShaderStageFlagBits::eCompute,
|
||||
.BindPoint = 0,
|
||||
.DescriptorCount = 1,
|
||||
};
|
||||
|
||||
SHVkDescriptorSetLayout::Binding texturesBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eCombinedImageSampler,
|
||||
.Stage = vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment | vk::ShaderStageFlagBits::eCompute,
|
||||
.BindPoint = 1,
|
||||
.DescriptorCount = 2000, // we can have up to 2000 textures for now
|
||||
.flags = vk::DescriptorBindingFlagBits::eVariableDescriptorCount,
|
||||
};
|
||||
|
||||
// For global data (generic data and textures)
|
||||
Handle<SHVkDescriptorSetLayout> staticGlobalLayout = logicalDevice->CreateDescriptorSetLayout({ genericDataBinding, texturesBinding });
|
||||
|
||||
SHVkDescriptorSetLayout::Binding lightBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eStorageBufferDynamic,
|
||||
.Stage = vk::ShaderStageFlagBits::eFragment,
|
||||
.BindPoint = 0,
|
||||
.DescriptorCount = 1,
|
||||
};
|
||||
|
||||
// For Dynamic global data (lights)
|
||||
Handle<SHVkDescriptorSetLayout> dynamicGlobalLayout = logicalDevice->CreateDescriptorSetLayout({ lightBinding });
|
||||
|
||||
SHVkDescriptorSetLayout::Binding cameraDataBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eUniformBufferDynamic,
|
||||
.Stage = vk::ShaderStageFlagBits::eVertex,
|
||||
.BindPoint = 0,
|
||||
.DescriptorCount = 1,
|
||||
};
|
||||
|
||||
// For High frequency global data (camera)
|
||||
Handle<SHVkDescriptorSetLayout> cameraDataGlobalLayout = logicalDevice->CreateDescriptorSetLayout({ cameraDataBinding });
|
||||
|
||||
SHVkDescriptorSetLayout::Binding materialDataBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eStorageBufferDynamic,
|
||||
.Stage = vk::ShaderStageFlagBits::eFragment,
|
||||
.BindPoint = 0,
|
||||
.DescriptorCount = 1,
|
||||
};
|
||||
|
||||
// For High frequency global data (camera)
|
||||
Handle<SHVkDescriptorSetLayout> materialDataPerInstanceLayout = logicalDevice->CreateDescriptorSetLayout({ materialDataBinding });
|
||||
|
||||
globalDescSetLayouts.push_back(staticGlobalLayout);
|
||||
globalDescSetLayouts.push_back(dynamicGlobalLayout);
|
||||
globalDescSetLayouts.push_back(cameraDataGlobalLayout);
|
||||
globalDescSetLayouts.push_back(materialDataPerInstanceLayout);
|
||||
}
|
||||
|
||||
|
||||
void SHGraphicsGlobalData::InitGlobalDescSets(Handle<SHVkLogicalDevice> logicalDevice) noexcept
|
||||
{
|
||||
//globalDescSets = logicalDevice->set
|
||||
}
|
||||
|
||||
void SHGraphicsGlobalData::InitDefaultVertexInputState(void) noexcept
|
||||
{
|
||||
defaultVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_3D) }); // positions at binding 0
|
||||
defaultVertexInputState.AddBinding(false, false, { SHVertexAttribute(SHAttribFormat::FLOAT_2D) }); // UVs at binding 1
|
||||
defaultVertexInputState.AddBinding(false, false, {SHVertexAttribute(SHAttribFormat::FLOAT_3D)}); // Normals at binding 2
|
||||
defaultVertexInputState.AddBinding(false, false, {SHVertexAttribute(SHAttribFormat::FLOAT_3D)}); // Tangents at binding 3
|
||||
defaultVertexInputState.AddBinding(true, true, {SHVertexAttribute(SHAttribFormat::MAT_4D)}); // Transform at binding 4 - 7 (4 slots)
|
||||
}
|
||||
|
||||
void SHGraphicsGlobalData::Init(Handle<SHVkLogicalDevice> logicalDevice) noexcept
|
||||
{
|
||||
InitDescSetLayouts(logicalDevice);
|
||||
InitDefaultVertexInputState();
|
||||
}
|
||||
|
||||
std::vector<Handle<SHVkDescriptorSetLayout>> const& SHGraphicsGlobalData::GetDescSetLayouts(void) const noexcept
|
||||
{
|
||||
return globalDescSetLayouts;
|
||||
}
|
||||
|
||||
|
||||
SHVertexInputState const& SHGraphicsGlobalData::GetDefaultViState(void) const noexcept
|
||||
{
|
||||
return defaultVertexInputState;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
#pragma once
|
||||
|
||||
#include "SH_API.h"
|
||||
#include "Graphics/Pipeline/SHPipelineState.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
class SHVkLogicalDevice;
|
||||
class SHVkDescriptorSetLayout;
|
||||
|
||||
class SH_API SHGraphicsGlobalData
|
||||
{
|
||||
private:
|
||||
//! Global descriptor set layouts. Used to allocate descriptor sets
|
||||
std::vector<Handle<SHVkDescriptorSetLayout>> globalDescSetLayouts;
|
||||
|
||||
//! Global Descriptor sets
|
||||
Handle<SHVkDescriptorSetGroup> globalDescSets;
|
||||
|
||||
//! Default vertex input state (used by everything).
|
||||
SHVertexInputState defaultVertexInputState;
|
||||
|
||||
void InitDescSetLayouts (Handle<SHVkLogicalDevice> logicalDevice) noexcept;
|
||||
void InitGlobalDescSets (Handle<SHVkLogicalDevice> logicalDevice) noexcept;
|
||||
void InitDefaultVertexInputState(void) noexcept;
|
||||
public:
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* PUBLIC MEMBER FUNCTIONS */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
void Init (Handle<SHVkLogicalDevice> logicalDevice) noexcept;
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* SETTERS AND GETTERS */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
std::vector<Handle<SHVkDescriptorSetLayout>> const& GetDescSetLayouts (void) const noexcept;
|
||||
SHVertexInputState const& GetDefaultViState (void) const noexcept;
|
||||
};
|
||||
}
|
|
@ -28,6 +28,7 @@ of DigiPen Institute of Technology is prohibited.
|
|||
#include "Graphics/MiddleEnd/Interface/SHRenderable.h"
|
||||
#include "Graphics/MiddleEnd/Batching/SHSuperBatch.h"
|
||||
#include "SHGraphicsConstants.h"
|
||||
#include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
|
@ -100,10 +101,11 @@ namespace SHADE
|
|||
- Render graph in renderers
|
||||
- Render graph command buffer semaphores
|
||||
- Default vertex input state
|
||||
- Global descriptor set layouts
|
||||
- Global data
|
||||
/*-----------------------------------------------------------------------*/
|
||||
ConfigureGlobalDescLayouts();
|
||||
ConfigureDefaultVertexInputState();
|
||||
|
||||
globalData = resourceManager.Create<SHGraphicsGlobalData>();
|
||||
globalData->Init(device);
|
||||
|
||||
// Set Up Cameras
|
||||
screenCamera = resourceManager.Create<SHCamera>();
|
||||
|
@ -120,7 +122,7 @@ namespace SHADE
|
|||
auto worldRenderGraph = resourceManager.Create<SHRenderGraph>();
|
||||
|
||||
// Initialize world render graph
|
||||
worldRenderGraph->Init(device, swapchain, &defaultVertexInputState, &globalDescSetLayouts);
|
||||
worldRenderGraph->Init(device, swapchain, globalData);
|
||||
//worldRenderGraph->AddResource("Position", SH_ATT_DESC_TYPE::COLOR, windowDims.first, windowDims.second, vk::Format::eR16G16B16A16Sfloat);
|
||||
//worldRenderGraph->AddResource("Normals", SH_ATT_DESC_TYPE::COLOR, windowDims.first, windowDims.second, vk::Format::eR16G16B16A16Sfloat);
|
||||
//worldRenderGraph->AddResource("Composite", SH_ATT_DESC_TYPE::COLOR, windowDims.first, windowDims.second, vk::Format::eR16G16B16A16Sfloat);
|
||||
|
@ -420,76 +422,6 @@ namespace SHADE
|
|||
window = wind;
|
||||
}
|
||||
|
||||
void SHGraphicsSystem::ConfigureGlobalDescLayouts(void) noexcept
|
||||
{
|
||||
SHVkDescriptorSetLayout::Binding genericDataBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eUniformBufferDynamic,
|
||||
.Stage = vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment | vk::ShaderStageFlagBits::eCompute,
|
||||
.BindPoint = 0,
|
||||
.DescriptorCount = 1,
|
||||
};
|
||||
|
||||
SHVkDescriptorSetLayout::Binding texturesBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eCombinedImageSampler,
|
||||
.Stage = vk::ShaderStageFlagBits::eVertex | vk::ShaderStageFlagBits::eFragment | vk::ShaderStageFlagBits::eCompute,
|
||||
.BindPoint = 1,
|
||||
.DescriptorCount = 2000, // we can have up to 2000 textures for now
|
||||
.flags = vk::DescriptorBindingFlagBits::eVariableDescriptorCount,
|
||||
};
|
||||
|
||||
// For global data (generic data and textures)
|
||||
Handle<SHVkDescriptorSetLayout> staticGlobalLayout = device->CreateDescriptorSetLayout({genericDataBinding, texturesBinding});
|
||||
|
||||
SHVkDescriptorSetLayout::Binding lightBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eStorageBufferDynamic,
|
||||
.Stage = vk::ShaderStageFlagBits::eFragment,
|
||||
.BindPoint = 0,
|
||||
.DescriptorCount = 1,
|
||||
};
|
||||
|
||||
// For Dynamic global data (lights)
|
||||
Handle<SHVkDescriptorSetLayout> dynamicGlobalLayout = device->CreateDescriptorSetLayout({ lightBinding });
|
||||
|
||||
SHVkDescriptorSetLayout::Binding cameraDataBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eUniformBufferDynamic,
|
||||
.Stage = vk::ShaderStageFlagBits::eVertex,
|
||||
.BindPoint = 0,
|
||||
.DescriptorCount = 1,
|
||||
};
|
||||
|
||||
// For High frequency global data (camera)
|
||||
Handle<SHVkDescriptorSetLayout> cameraDataGlobalLayout = device->CreateDescriptorSetLayout({ cameraDataBinding });
|
||||
|
||||
SHVkDescriptorSetLayout::Binding materialDataBinding
|
||||
{
|
||||
.Type = vk::DescriptorType::eStorageBufferDynamic,
|
||||
.Stage = vk::ShaderStageFlagBits::eFragment,
|
||||
.BindPoint = 0,
|
||||
.DescriptorCount = 1,
|
||||
};
|
||||
|
||||
// For High frequency global data (camera)
|
||||
Handle<SHVkDescriptorSetLayout> materialDataPerInstanceLayout = device->CreateDescriptorSetLayout({ materialDataBinding });
|
||||
|
||||
globalDescSetLayouts.push_back(staticGlobalLayout);
|
||||
globalDescSetLayouts.push_back(dynamicGlobalLayout);
|
||||
globalDescSetLayouts.push_back(cameraDataGlobalLayout);
|
||||
globalDescSetLayouts.push_back(materialDataPerInstanceLayout);
|
||||
}
|
||||
|
||||
void SHGraphicsSystem::ConfigureDefaultVertexInputState(void) noexcept
|
||||
{
|
||||
defaultVertexInputState.AddBinding(false, false, {SHVertexAttribute(SHAttribFormat::FLOAT_3D)}); // positions at binding 0
|
||||
defaultVertexInputState.AddBinding(false, false, {SHVertexAttribute(SHAttribFormat::FLOAT_2D)}); // UVs at binding 1
|
||||
//defaultVertexInputState.AddBinding(false, false, {SHVertexAttribute(SHAttribFormat::FLOAT_3D)}); // Normals at binding 2
|
||||
//defaultVertexInputState.AddBinding(false, false, {SHVertexAttribute(SHAttribFormat::FLOAT_3D)}); // Tangents at binding 3
|
||||
//defaultVertexInputState.AddBinding(true, true, {SHVertexAttribute(SHAttribFormat::MAT_4D)}); // Transform at binding 4 - 7 (4 slots)
|
||||
}
|
||||
|
||||
void SHGraphicsSystem::BeginRoutine::Execute(double) noexcept
|
||||
{
|
||||
reinterpret_cast<SHGraphicsSystem*>(system)->BeginRender();
|
||||
|
|
|
@ -223,11 +223,12 @@ namespace SHADE
|
|||
// Not Owned Resources
|
||||
SHWindow* window;
|
||||
|
||||
// Global descriptor set layouts
|
||||
std::vector<Handle<SHVkDescriptorSetLayout>> globalDescSetLayouts;
|
||||
// global data (descriptor sets as well)
|
||||
Handle<SHGraphicsGlobalData> globalData;
|
||||
|
||||
// Middle End Resources
|
||||
ResourceManager resourceManager;
|
||||
SHMeshLibrary meshLibrary;
|
||||
ResourceManager resourceManager;
|
||||
SHMeshLibrary meshLibrary;
|
||||
// Viewports
|
||||
Handle<SHViewport> defaultViewport; // Whole screen
|
||||
std::vector<Handle<SHViewport>> viewports; // Additional viewports
|
||||
|
@ -243,21 +244,11 @@ namespace SHADE
|
|||
Handle<SHCamera> worldCamera;
|
||||
Handle<SHCamera> screenCamera;
|
||||
|
||||
// Default vertex input state (used by everything).
|
||||
SHVertexInputState defaultVertexInputState;
|
||||
|
||||
// TODO: Temporary only until resource library from Xiao Qi is implemented
|
||||
SHShaderSourceLibrary shaderSourceLibrary;
|
||||
SHShaderModuleLibrary shaderModuleLibrary;
|
||||
|
||||
// Temp Materials
|
||||
Handle<SHMaterial> defaultMaterial;
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
/* Private member functions */
|
||||
/*-----------------------------------------------------------------------------*/
|
||||
void ConfigureGlobalDescLayouts (void) noexcept;
|
||||
void ConfigureDefaultVertexInputState (void) noexcept;
|
||||
};
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
#include "SHpch.h"
|
||||
#include "SHPipelineLibrary.h"
|
||||
#include "Graphics/Devices/SHVkLogicalDevice.h"
|
||||
#include "Graphics/MiddleEnd/GlobalData/SHGraphicsGlobalData.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
|
@ -10,7 +11,7 @@ namespace SHADE
|
|||
SHPipelineLayoutParams params
|
||||
{
|
||||
.shaderModules = {vsFsPair.first, vsFsPair.second},
|
||||
.globalDescSetLayouts = *globalDescSetLayouts
|
||||
.globalDescSetLayouts = globalData->GetDescSetLayouts()
|
||||
};
|
||||
|
||||
// Create the pipeline layout
|
||||
|
@ -18,7 +19,7 @@ namespace SHADE
|
|||
|
||||
// Create the pipeline and configure the default vertex input state
|
||||
auto newPipeline = logicalDevice->CreatePipeline(pipelineLayout, nullptr, renderpass, subpass, SH_PIPELINE_TYPE::GRAPHICS);
|
||||
newPipeline->GetPipelineState().SetVertexInputState(*vertexInputState);
|
||||
newPipeline->GetPipelineState().SetVertexInputState(globalData->GetDefaultViState());
|
||||
|
||||
// Actually construct the pipeline
|
||||
newPipeline->ConstructPipeline();
|
||||
|
@ -29,11 +30,10 @@ namespace SHADE
|
|||
return newPipeline;
|
||||
}
|
||||
|
||||
void SHPipelineLibrary::Init(Handle<SHVkLogicalDevice> device, SHVertexInputState const* viState, std::vector<Handle<SHVkDescriptorSetLayout>> const* globalLayouts) noexcept
|
||||
void SHPipelineLibrary::Init(Handle<SHVkLogicalDevice> device, Handle<SHGraphicsGlobalData> inGlobalData) noexcept
|
||||
{
|
||||
logicalDevice = device;
|
||||
vertexInputState = viState;
|
||||
globalDescSetLayouts = globalLayouts;
|
||||
globalData = inGlobalData;
|
||||
}
|
||||
|
||||
Handle<SHVkPipeline> SHPipelineLibrary::GetDrawPipline(std::pair<Handle<SHVkShaderModule>, Handle<SHVkShaderModule>> const& vsFsPair) noexcept
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace SHADE
|
|||
class SHVkDescriptorSetLayouts;
|
||||
class SHVkPipeline;
|
||||
class SHSubpass;
|
||||
|
||||
class SHGraphicsGlobalData;
|
||||
|
||||
// Pipeline library is a PURELY MIDDLE END SYSTEM. It is responsible for only creating pipelines from shaders and caching
|
||||
// them so that they don't need to be recreated again.
|
||||
|
@ -25,14 +25,13 @@ namespace SHADE
|
|||
//! a map of pipelines that are hashed using a pair of shader module handles
|
||||
std::unordered_map<std::pair<Handle<SHVkShaderModule>, Handle<SHVkShaderModule>>, Handle<SHVkPipeline>> pipelines;
|
||||
|
||||
//! Default vertex input state for pipeline creation
|
||||
SHVertexInputState const* vertexInputState;
|
||||
// Global data
|
||||
Handle<SHGraphicsGlobalData> globalData;
|
||||
|
||||
std::vector<Handle<SHVkDescriptorSetLayout>> const* globalDescSetLayouts;
|
||||
|
||||
|
||||
public:
|
||||
void Init (Handle<SHVkLogicalDevice> device, SHVertexInputState const* viState, std::vector<Handle<SHVkDescriptorSetLayout>> const* globalLayouts) noexcept;
|
||||
void Init (Handle<SHVkLogicalDevice> device, Handle<SHGraphicsGlobalData> inGlobalData) noexcept;
|
||||
|
||||
// Draw pipeline functions. used only when creating pipelines for drawing using a vertex and fragment shader
|
||||
Handle<SHVkPipeline> CreateDrawPipeline (
|
||||
|
|
|
@ -446,7 +446,7 @@ namespace SHADE
|
|||
|
||||
*/
|
||||
/***************************************************************************/
|
||||
SHRenderGraphNode::SHRenderGraphNode(ResourceManager& rm, Handle<SHVkLogicalDevice> const& logicalDevice, Handle<SHVkSwapchain> const& swapchain, std::vector<Handle<SHRenderGraphResource>> attRes, std::vector<Handle<SHRenderGraphNode>> predecessors, std::unordered_map<std::string, Handle<SHRenderGraphResource>> const* resources, SHVertexInputState const* defaultViState, std::vector<Handle<SHVkDescriptorSetLayout>> const* globalLayouts) noexcept
|
||||
SHRenderGraphNode::SHRenderGraphNode(ResourceManager& rm, Handle<SHVkLogicalDevice> const& logicalDevice, Handle<SHVkSwapchain> const& swapchain, std::vector<Handle<SHRenderGraphResource>> attRes, std::vector<Handle<SHRenderGraphNode>> predecessors, std::unordered_map<std::string, Handle<SHRenderGraphResource>> const* resources, Handle<SHGraphicsGlobalData> globalData) noexcept
|
||||
: logicalDeviceHdl{ logicalDevice }
|
||||
, renderpass{}
|
||||
, framebuffers{}
|
||||
|
@ -461,7 +461,7 @@ namespace SHADE
|
|||
, ptrToResources{ resources }
|
||||
{
|
||||
// pipeline library initialization
|
||||
pipelineLibrary.Init(logicalDeviceHdl, defaultViState, globalLayouts);
|
||||
pipelineLibrary.Init(logicalDeviceHdl, globalData);
|
||||
|
||||
attachmentDescriptions.resize(attResources.size());
|
||||
|
||||
|
@ -969,12 +969,11 @@ namespace SHADE
|
|||
|
||||
*/
|
||||
/***************************************************************************/
|
||||
void SHRenderGraph::Init(Handle<SHVkLogicalDevice> const& logicalDevice, Handle<SHVkSwapchain> const& swapchain, SHVertexInputState const* defaultViState, std::vector<Handle<SHVkDescriptorSetLayout>> const* globalLayouts) noexcept
|
||||
void SHRenderGraph::Init(Handle<SHVkLogicalDevice> const& logicalDevice, Handle<SHVkSwapchain> const& swapchain, Handle<SHGraphicsGlobalData> inGlobalData) noexcept
|
||||
{
|
||||
logicalDeviceHdl = logicalDevice;
|
||||
swapchainHdl = swapchain;
|
||||
vertexInputState = defaultViState;
|
||||
globalDescSetLayouts = globalLayouts;
|
||||
globalData = inGlobalData;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
@ -1052,7 +1051,7 @@ namespace SHADE
|
|||
}
|
||||
}
|
||||
|
||||
nodes.emplace_back(resourceManager.Create<SHRenderGraphNode>(resourceManager, logicalDeviceHdl, swapchainHdl, std::move(resources), std::move(predecessors), &graphResources, vertexInputState, globalDescSetLayouts));
|
||||
nodes.emplace_back(resourceManager.Create<SHRenderGraphNode>(resourceManager, logicalDeviceHdl, swapchainHdl, std::move(resources), std::move(predecessors), &graphResources, globalData));
|
||||
nodeIndexing.emplace(nodeName, static_cast<uint32_t>(nodes.size()) - 1u);
|
||||
return nodes.at(nodeIndexing[nodeName]);
|
||||
}
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
#include "SH_API.h"
|
||||
#include "Graphics/MiddleEnd/Pipeline/SHPipelineLibrary.h"
|
||||
#include "Graphics/MiddleEnd/Batching/SHSuperBatch.h"
|
||||
#include "../MiddleEnd/Batching/SHBatcher.h"
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include "../MiddleEnd/Batching/SHBatcher.h"
|
||||
|
||||
namespace SHADE
|
||||
{
|
||||
|
@ -22,6 +22,7 @@ namespace SHADE
|
|||
class SHVkCommandPool;
|
||||
class SHVkCommandBuffer;
|
||||
class SHRenderGraphNode;
|
||||
class SHGraphicsGlobalData;
|
||||
|
||||
// Used for attachment description creation for renderpass node
|
||||
enum class SH_ATT_DESC_TYPE
|
||||
|
@ -218,7 +219,7 @@ namespace SHADE
|
|||
/*-----------------------------------------------------------------------*/
|
||||
/* CTORS AND DTORS */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
SHRenderGraphNode (ResourceManager& rm, Handle<SHVkLogicalDevice> const& logicalDevice, Handle<SHVkSwapchain> const& swapchain, std::vector<Handle<SHRenderGraphResource>> attRes, std::vector<Handle<SHRenderGraphNode>> predecessors, std::unordered_map<std::string, Handle<SHRenderGraphResource>> const* resources, SHVertexInputState const* defaultViState, std::vector<Handle<SHVkDescriptorSetLayout>> const* globalLayouts) noexcept;
|
||||
SHRenderGraphNode (ResourceManager& rm, Handle<SHVkLogicalDevice> const& logicalDevice, Handle<SHVkSwapchain> const& swapchain, std::vector<Handle<SHRenderGraphResource>> attRes, std::vector<Handle<SHRenderGraphNode>> predecessors, std::unordered_map<std::string, Handle<SHRenderGraphResource>> const* resources, Handle<SHGraphicsGlobalData> globalData) noexcept;
|
||||
SHRenderGraphNode(SHRenderGraphNode&& rhs) noexcept;
|
||||
SHRenderGraphNode& operator= (SHRenderGraphNode&& rhs) noexcept;
|
||||
|
||||
|
@ -277,11 +278,8 @@ namespace SHADE
|
|||
//! Command buffers for the render graph
|
||||
std::vector<Handle<SHVkCommandBuffer>> commandBuffers;
|
||||
|
||||
//! Default vertex input state for pipeline creation
|
||||
SHVertexInputState const* vertexInputState;
|
||||
|
||||
//! Global descriptor set layouts to use for pipeline creation
|
||||
std::vector<Handle<SHVkDescriptorSetLayout>> const* globalDescSetLayouts;
|
||||
//! Handle to global data
|
||||
Handle<SHGraphicsGlobalData> globalData;
|
||||
|
||||
public:
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
@ -292,7 +290,7 @@ namespace SHADE
|
|||
/*-----------------------------------------------------------------------*/
|
||||
/* PUBLIC MEMBER FUNCTIONS */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
void Init (Handle<SHVkLogicalDevice> const& logicalDevice, Handle<SHVkSwapchain> const& swapchain, SHVertexInputState const* defaultViState, std::vector<Handle<SHVkDescriptorSetLayout>> const* globalLayouts) noexcept;
|
||||
void Init (Handle<SHVkLogicalDevice> const& logicalDevice, Handle<SHVkSwapchain> const& swapchain, Handle<SHGraphicsGlobalData> inGlobalData) noexcept;
|
||||
void AddResource (std::string resourceName, SH_ATT_DESC_TYPE type, uint32_t w = static_cast<uint32_t>(-1), uint32_t h = static_cast<uint32_t>(-1), vk::Format format = vk::Format::eB8G8R8A8Unorm, uint8_t levels = 1, vk::ImageCreateFlagBits createFlags = {});
|
||||
Handle<SHRenderGraphNode> AddNode (std::string nodeName, std::initializer_list<std::string> resourceNames, std::initializer_list<std::string> predecessorNodes) noexcept;
|
||||
void Generate (void) noexcept;
|
||||
|
|
Loading…
Reference in New Issue