Refactor ShaderBuffer
This commit is contained in:
@@ -29,7 +29,7 @@ DECLARE_REF(CameraActor)
|
||||
struct BasePassData
|
||||
{
|
||||
Array<MeshBatch> staticDrawList;
|
||||
Gfx::PStructuredBuffer sceneDataBuffer;
|
||||
Gfx::PShaderBuffer sceneDataBuffer;
|
||||
LightEnv lightEnv;
|
||||
};
|
||||
class BasePass : public RenderPass<BasePassData>
|
||||
@@ -55,7 +55,7 @@ private:
|
||||
Gfx::PPipelineLayout basePassLayout;
|
||||
// Set 0: Light environment
|
||||
static constexpr uint32 INDEX_LIGHT_ENV = 0;
|
||||
Gfx::PStructuredBuffer oLightIndexList;
|
||||
Gfx::PShaderBuffer oLightIndexList;
|
||||
Gfx::PTexture oLightGrid;
|
||||
Gfx::PDescriptorLayout lightLayout;
|
||||
// Set 1: viewParameter
|
||||
|
||||
@@ -26,7 +26,7 @@ DEFINE_REF(DepthPrepassMeshProcessor)
|
||||
struct DepthPrepassData
|
||||
{
|
||||
Array<MeshBatch> staticDrawList;
|
||||
Gfx::PStructuredBuffer sceneDataBuffer;
|
||||
Gfx::PShaderBuffer sceneDataBuffer;
|
||||
};
|
||||
class DepthPrepass : public RenderPass<DepthPrepassData>
|
||||
{
|
||||
|
||||
@@ -159,7 +159,7 @@ void LightCullingPass::publishOutputs()
|
||||
cullingPipeline = graphics->createComputePipeline(pipelineInfo);
|
||||
|
||||
uint32 counterReset = 0;
|
||||
StructuredBufferCreateInfo structInfo =
|
||||
ShaderBufferCreateInfo structInfo =
|
||||
{
|
||||
.resourceData = {
|
||||
.size = sizeof(uint32),
|
||||
@@ -169,8 +169,8 @@ void LightCullingPass::publishOutputs()
|
||||
.stride = sizeof(uint32),
|
||||
.bDynamic = true,
|
||||
};
|
||||
oLightIndexCounter = graphics->createStructuredBuffer(structInfo);
|
||||
tLightIndexCounter = graphics->createStructuredBuffer(structInfo);
|
||||
oLightIndexCounter = graphics->createShaderBuffer(structInfo);
|
||||
tLightIndexCounter = graphics->createShaderBuffer(structInfo);
|
||||
structInfo = {
|
||||
.resourceData = {
|
||||
.size = (uint32)sizeof(uint32)
|
||||
@@ -183,8 +183,8 @@ void LightCullingPass::publishOutputs()
|
||||
.stride = sizeof(uint32),
|
||||
.bDynamic = false,
|
||||
};
|
||||
oLightIndexList = graphics->createStructuredBuffer(structInfo);
|
||||
tLightIndexList = graphics->createStructuredBuffer(structInfo);
|
||||
oLightIndexList = graphics->createShaderBuffer(structInfo);
|
||||
tLightIndexList = graphics->createShaderBuffer(structInfo);
|
||||
resources->registerBufferOutput("LIGHTCULLING_OLIGHTLIST", oLightIndexList);
|
||||
resources->registerBufferOutput("LIGHTCULLING_TLIGHTLIST", tLightIndexList);
|
||||
|
||||
@@ -263,7 +263,7 @@ void LightCullingPass::setupFrustums()
|
||||
uniformInfo.bDynamic = false;
|
||||
dispatchParamsBuffer = graphics->createUniformBuffer(uniformInfo);
|
||||
|
||||
StructuredBufferCreateInfo structuredInfo = {
|
||||
ShaderBufferCreateInfo structuredInfo = {
|
||||
.resourceData = {
|
||||
.size = sizeof(Frustum) * numThreads.x * numThreads.y * numThreads.z,
|
||||
.data = nullptr,
|
||||
@@ -271,7 +271,7 @@ void LightCullingPass::setupFrustums()
|
||||
.stride = sizeof(Frustum),
|
||||
.bDynamic = false,
|
||||
};
|
||||
frustumBuffer = graphics->createStructuredBuffer(structuredInfo);
|
||||
frustumBuffer = graphics->createShaderBuffer(structuredInfo);
|
||||
|
||||
frustumDescriptorSet = frustumDescriptorLayout->allocateDescriptorSet();
|
||||
frustumDescriptorSet->updateBuffer(0, viewParamsBuffer);
|
||||
|
||||
@@ -44,7 +44,7 @@ private:
|
||||
Plane planes[4];
|
||||
};
|
||||
|
||||
Gfx::PStructuredBuffer frustumBuffer;
|
||||
Gfx::PShaderBuffer frustumBuffer;
|
||||
Gfx::PUniformBuffer dispatchParamsBuffer;
|
||||
Gfx::PUniformBuffer viewParamsBuffer;
|
||||
Gfx::PDescriptorSet frustumDescriptorSet;
|
||||
@@ -53,11 +53,11 @@ private:
|
||||
Gfx::PComputePipeline frustumPipeline;
|
||||
|
||||
Gfx::PTexture2D depthAttachment;
|
||||
Gfx::PStructuredBuffer frustums;
|
||||
Gfx::PStructuredBuffer oLightIndexCounter;
|
||||
Gfx::PStructuredBuffer tLightIndexCounter;
|
||||
Gfx::PStructuredBuffer oLightIndexList;
|
||||
Gfx::PStructuredBuffer tLightIndexList;
|
||||
Gfx::PShaderBuffer frustums;
|
||||
Gfx::PShaderBuffer oLightIndexCounter;
|
||||
Gfx::PShaderBuffer tLightIndexCounter;
|
||||
Gfx::PShaderBuffer oLightIndexList;
|
||||
Gfx::PShaderBuffer tLightIndexList;
|
||||
Gfx::PTexture2D oLightGrid;
|
||||
Gfx::PTexture2D tLightGrid;
|
||||
Gfx::PDescriptorSet lightEnvDescriptorSet;
|
||||
|
||||
@@ -32,7 +32,7 @@ Gfx::PTexture RenderGraphResources::requestTexture(const std::string& outputName
|
||||
return registeredTextures[outputName];
|
||||
}
|
||||
|
||||
Gfx::PStructuredBuffer RenderGraphResources::requestBuffer(const std::string& outputName)
|
||||
Gfx::PShaderBuffer RenderGraphResources::requestBuffer(const std::string& outputName)
|
||||
{
|
||||
if(registeredBuffers.find(outputName) == registeredBuffers.end())
|
||||
{
|
||||
@@ -62,7 +62,7 @@ void RenderGraphResources::registerTextureOutput(const std::string& outputName,
|
||||
registeredTextures[outputName] = texture;
|
||||
}
|
||||
|
||||
void RenderGraphResources::registerBufferOutput(const std::string& outputName, Gfx::PStructuredBuffer buffer)
|
||||
void RenderGraphResources::registerBufferOutput(const std::string& outputName, Gfx::PShaderBuffer buffer)
|
||||
{
|
||||
registeredBuffers[outputName] = buffer;
|
||||
}
|
||||
|
||||
@@ -13,16 +13,16 @@ public:
|
||||
~RenderGraphResources();
|
||||
Gfx::PRenderTargetAttachment requestRenderTarget(const std::string& outputName);
|
||||
Gfx::PTexture requestTexture(const std::string& outputName);
|
||||
Gfx::PStructuredBuffer requestBuffer(const std::string& outputName);
|
||||
Gfx::PShaderBuffer requestBuffer(const std::string& outputName);
|
||||
Gfx::PUniformBuffer requestUniform(const std::string& outputName);
|
||||
void registerRenderPassOutput(const std::string& outputName, Gfx::PRenderTargetAttachment attachment);
|
||||
void registerTextureOutput(const std::string& outputName, Gfx::PTexture buffer);
|
||||
void registerBufferOutput(const std::string& outputName, Gfx::PStructuredBuffer buffer);
|
||||
void registerBufferOutput(const std::string& outputName, Gfx::PShaderBuffer buffer);
|
||||
void registerUniformOutput(const std::string& outputName, Gfx::PUniformBuffer buffer);
|
||||
protected:
|
||||
Map<std::string, Gfx::PRenderTargetAttachment> registeredAttachments;
|
||||
Map<std::string, Gfx::PTexture> registeredTextures;
|
||||
Map<std::string, Gfx::PStructuredBuffer> registeredBuffers;
|
||||
Map<std::string, Gfx::PShaderBuffer> registeredBuffers;
|
||||
Map<std::string, Gfx::PUniformBuffer> registeredUniforms;
|
||||
};
|
||||
DEFINE_REF(RenderGraphResources)
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Seele
|
||||
{
|
||||
DECLARE_NAME_REF(Gfx, Texture2D)
|
||||
DECLARE_NAME_REF(Gfx, RenderTargetAttachment)
|
||||
DECLARE_NAME_REF(Gfx, StructuredBuffer)
|
||||
DECLARE_NAME_REF(Gfx, ShaderBuffer)
|
||||
struct TextRender
|
||||
{
|
||||
std::string text;
|
||||
|
||||
Reference in New Issue
Block a user