No more shared pointers

This commit is contained in:
Dynamitos
2023-11-01 23:12:30 +01:00
parent 5a9cb13e74
commit 4746c0f838
69 changed files with 524 additions and 681 deletions
+3 -3
View File
@@ -36,8 +36,8 @@ BasePass::BasePass(Gfx::PGraphics graphics, PScene scene)
viewLayout = graphics->createDescriptorLayout("ViewLayout");
viewLayout->addDescriptorBinding(0, Gfx::SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
uniformInitializer.resourceData.size = sizeof(ViewParameter);
uniformInitializer.resourceData.data = (uint8*)&viewParams;
uniformInitializer.sourceData.size = sizeof(ViewParameter);
uniformInitializer.sourceData.data = (uint8*)&viewParams;
uniformInitializer.bDynamic = true;
viewParamBuffer = graphics->createUniformBuffer(uniformInitializer);
viewLayout->create();
@@ -62,7 +62,7 @@ BasePass::~BasePass()
void BasePass::beginFrame(const Component::Camera& cam)
{
BulkResourceData uniformUpdate;
DataSource uniformUpdate;
viewParams.viewMatrix = cam.getViewMatrix();
viewParams.projectionMatrix = viewport->getProjectionMatrix();
+7 -7
View File
@@ -22,21 +22,21 @@ private:
Array<Gfx::PDescriptorSet> descriptorSets;
PCameraActor source;
Gfx::PPipelineLayout basePassLayout;
Gfx::OPipelineLayout basePassLayout;
// Set 0: Light environment
static constexpr uint32 INDEX_LIGHT_ENV = 0;
Gfx::PShaderBuffer oLightIndexList;
Gfx::PTexture oLightGrid;
Gfx::PDescriptorLayout lightLayout;
Gfx::OShaderBuffer oLightIndexList;
Gfx::OTexture oLightGrid;
Gfx::ODescriptorLayout lightLayout;
// Set 1: viewParameter
static constexpr uint32 INDEX_VIEW_PARAMS = 1;
Gfx::PDescriptorLayout viewLayout;
Gfx::PUniformBuffer viewParamBuffer;
Gfx::ODescriptorLayout viewLayout;
Gfx::OUniformBuffer viewParamBuffer;
// Set 2: materials, generated
static constexpr uint32 INDEX_MATERIAL = 2;
// Set 3: primitive scene data
static constexpr uint32 INDEX_SCENE_DATA = 3;
Gfx::PDescriptorLayout sceneLayout;
Gfx::ODescriptorLayout sceneLayout;
};
DEFINE_REF(BasePass)
} // namespace Seele
+3 -3
View File
@@ -28,7 +28,7 @@ DebugPass::~DebugPass()
void DebugPass::beginFrame(const Component::Camera& cam)
{
BulkResourceData uniformUpdate;
DataSource uniformUpdate;
viewParams.viewMatrix = cam.getViewMatrix();
viewParams.projectionMatrix = viewport->getProjectionMatrix();
@@ -43,7 +43,7 @@ void DebugPass::beginFrame(const Component::Camera& cam)
descriptorSet->writeChanges();
VertexBufferCreateInfo vertexBufferInfo = {
.resourceData = {
.sourceData = {
.size = sizeof(DebugVertex) * passData.vertices.size(),
.data = (uint8*)passData.vertices.data(),
},
@@ -75,7 +75,7 @@ void DebugPass::endFrame()
void DebugPass::publishOutputs()
{
UniformBufferCreateInfo viewCreateInfo = {
.resourceData = BulkResourceData {
.sourceData = DataSource {
.size = sizeof(ViewParameter),
.data = nullptr,
},
@@ -19,8 +19,8 @@ DepthPrepass::DepthPrepass(Gfx::PGraphics graphics, PScene scene)
viewLayout = graphics->createDescriptorLayout("ViewLayout");
viewLayout->addDescriptorBinding(0, Gfx::SE_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
uniformInitializer.resourceData.size = sizeof(ViewParameter);
uniformInitializer.resourceData.data = (uint8*)&viewParams;
uniformInitializer.sourceData.size = sizeof(ViewParameter);
uniformInitializer.sourceData.data = (uint8*)&viewParams;
uniformInitializer.bDynamic = true;
viewParamBuffer = graphics->createUniformBuffer(uniformInitializer);
viewLayout->create();
@@ -33,7 +33,7 @@ DepthPrepass::~DepthPrepass()
void DepthPrepass::beginFrame(const Component::Camera& cam)
{
BulkResourceData uniformUpdate;
DataSource uniformUpdate;
viewParams.viewMatrix = cam.getViewMatrix();
viewParams.projectionMatrix = viewport->getProjectionMatrix();
@@ -70,7 +70,7 @@ void DepthPrepass::render()
// VertexData => per meshtype
// SceneData => per material instance
Gfx::PRenderCommand command = graphics->createRenderCommand("DepthRender");
Gfx::PPipelineLayout layout = graphics->createPipelineLayout(depthPrepassLayout);
Gfx::OPipelineLayout layout = graphics->createPipelineLayout(depthPrepassLayout);
layout->addDescriptorLayout(INDEX_MATERIAL, materialData.material->getDescriptorLayout());
layout->addDescriptorLayout(INDEX_VERTEX_DATA, vertexData->getVertexDataLayout());
layout->addDescriptorLayout(INDEX_SCENE_DATA, vertexData->getInstanceDataLayout());
@@ -21,18 +21,18 @@ private:
Array<Gfx::PDescriptorSet> descriptorSets;
Gfx::PPipelineLayout depthPrepassLayout;
Gfx::OPipelineLayout depthPrepassLayout;
// Set 0: viewParameter
static constexpr uint32 INDEX_VIEW_PARAMS = 0;
Gfx::PDescriptorLayout viewLayout;
Gfx::PUniformBuffer viewParamBuffer;
Gfx::ODescriptorLayout viewLayout;
Gfx::OUniformBuffer viewParamBuffer;
// Set 1: materials, generated
static constexpr uint32 INDEX_MATERIAL = 1;
// Set 2: vertices, from VertexData
static constexpr uint32 INDEX_VERTEX_DATA = 2;
// Set 3: mesh data, either index buffer or meshlet data
static constexpr uint32 INDEX_SCENE_DATA = 3;
Gfx::PDescriptorLayout sceneDataLayout;
Gfx::ODescriptorLayout sceneDataLayout;
};
DEFINE_REF(DepthPrepass)
} // namespace Seele
@@ -22,7 +22,7 @@ void LightCullingPass::beginFrame(const Component::Camera& cam)
uint32_t viewportWidth = viewport->getSizeX();
uint32_t viewportHeight = viewport->getSizeY();
BulkResourceData uniformUpdate;
DataSource uniformUpdate;
viewParams.viewMatrix = cam.getViewMatrix();
viewParams.projectionMatrix = viewport->getProjectionMatrix();
viewParams.cameraPosition = Vector4(cam.getCameraPosition(), 1);
@@ -31,7 +31,7 @@ void LightCullingPass::beginFrame(const Component::Camera& cam)
uniformUpdate.data = (uint8*)&viewParams;
viewParamsBuffer->updateContents(uniformUpdate);
BulkResourceData counterReset;
DataSource counterReset;
uint32 reset = 0;
counterReset.data = (uint8*)&reset;
counterReset.size = sizeof(uint32);
@@ -161,7 +161,7 @@ void LightCullingPass::publishOutputs()
uint32 counterReset = 0;
ShaderBufferCreateInfo structInfo =
{
.resourceData = {
.sourceData = {
.size = sizeof(uint32),
.data = (uint8*)&counterReset,
.owner = Gfx::QueueType::COMPUTE,
@@ -172,7 +172,7 @@ void LightCullingPass::publishOutputs()
oLightIndexCounter = graphics->createShaderBuffer(structInfo);
tLightIndexCounter = graphics->createShaderBuffer(structInfo);
structInfo = {
.resourceData = {
.sourceData = {
.size = (uint32)sizeof(uint32)
* dispatchParams.numThreadGroups.x
* dispatchParams.numThreadGroups.y
@@ -248,23 +248,23 @@ void LightCullingPass::setupFrustums()
pipelineInfo.pipelineLayout = frustumLayout;
frustumPipeline = graphics->createComputePipeline(pipelineInfo);
BulkResourceData resourceInfo;
DataSource resourceInfo;
UniformBufferCreateInfo uniformInfo;
resourceInfo.size = sizeof(ViewParameter);
resourceInfo.data = (uint8*)&viewParams;
resourceInfo.owner = Gfx::QueueType::COMPUTE;
uniformInfo.resourceData = resourceInfo;
uniformInfo.sourceData = resourceInfo;
uniformInfo.bDynamic = false;
viewParamsBuffer = graphics->createUniformBuffer(uniformInfo);
resourceInfo.size = sizeof(DispatchParams);
resourceInfo.data = (uint8*)&dispatchParams;
uniformInfo.resourceData = resourceInfo;
uniformInfo.sourceData = resourceInfo;
uniformInfo.bDynamic = false;
dispatchParamsBuffer = graphics->createUniformBuffer(uniformInfo);
ShaderBufferCreateInfo structuredInfo = {
.resourceData = {
.sourceData = {
.size = sizeof(Frustum) * numThreads.x * numThreads.y * numThreads.z,
.data = nullptr,
},
@@ -70,7 +70,7 @@ SkyboxRenderPass::SkyboxRenderPass(Gfx::PGraphics graphics, PScene scene)
};
VertexBufferCreateInfo vertexBufferInfo = {
.resourceData = {
.sourceData = {
.size = sizeof(Vector) * vertices.size(),
.data = (uint8*)vertices.data(),
},
@@ -86,7 +86,7 @@ SkyboxRenderPass::~SkyboxRenderPass()
void SkyboxRenderPass::beginFrame(const Component::Camera& cam)
{
BulkResourceData uniformUpdate;
DataSource uniformUpdate;
viewParams.viewMatrix = cam.getViewMatrix();
viewParams.projectionMatrix = viewport->getProjectionMatrix();
@@ -127,7 +127,7 @@ void SkyboxRenderPass::endFrame()
void SkyboxRenderPass::publishOutputs()
{
UniformBufferCreateInfo viewCreateInfo = {
.resourceData = BulkResourceData {
.sourceData = DataSource {
.size = sizeof(ViewParameter),
.data = nullptr,
},
+3 -3
View File
@@ -43,7 +43,7 @@ void TextPass::beginFrame(const Component::Camera&)
x += (glyph.advance >> 6) * render.scale;
}
VertexBufferCreateInfo vbInfo = {
.resourceData = {
.sourceData = {
.size = static_cast<uint32>(instanceData.size() * sizeof(GlyphInstanceData)),
.data = reinterpret_cast<uint8*>(instanceData.data()),
},
@@ -60,7 +60,7 @@ void TextPass::beginFrame(const Component::Camera&)
};
}
auto proj = viewport->getProjectionMatrix();
BulkResourceData projectionUpdate = {
DataSource projectionUpdate = {
.size = sizeof(Matrix4),
.data = (uint8*)&proj,
};
@@ -156,7 +156,7 @@ void TextPass::createRenderPass()
textureArrayLayout->create();
projectionBuffer = graphics->createUniformBuffer({
.resourceData = {
.sourceData = {
.size = sizeof(Matrix4),
.data = nullptr,
},
+3 -3
View File
@@ -18,7 +18,7 @@ UIPass::~UIPass()
void UIPass::beginFrame(const Component::Camera&)
{
VertexBufferCreateInfo info = {
.resourceData = {
.sourceData = {
.size = (uint32)(sizeof(UI::RenderElementStyle) * renderElements.size()),
.data = (uint8*)renderElements.data()
},
@@ -148,7 +148,7 @@ void UIPass::createRenderPass()
Matrix4 projectionMatrix = glm::ortho(0, 1, 1, 0);
UniformBufferCreateInfo info = {
.resourceData = {
.sourceData = {
.size = sizeof(Matrix4),
.data = (uint8*)&projectionMatrix,
},
@@ -158,7 +158,7 @@ void UIPass::createRenderPass()
Gfx::PSamplerState backgroundSampler = graphics->createSamplerState({});
info = {
.resourceData = {
.sourceData = {
.size = sizeof(uint32),
.data = nullptr
},
+13 -13
View File
@@ -18,22 +18,22 @@ public:
virtual void publishOutputs() override;
virtual void createRenderPass() override;
private:
Gfx::PRenderTargetAttachment renderTarget;
Gfx::PTexture2D colorBuffer;
Gfx::PRenderTargetAttachment depthAttachment;
Gfx::PTexture2D depthBuffer;
Gfx::ORenderTargetAttachment renderTarget;
Gfx::OTexture2D colorBuffer;
Gfx::ORenderTargetAttachment depthAttachment;
Gfx::OTexture2D depthBuffer;
Gfx::PDescriptorLayout descriptorLayout;
Gfx::PDescriptorSet descriptorSet;
Gfx::ODescriptorLayout descriptorLayout;
Gfx::ODescriptorSet descriptorSet;
Gfx::PUniformBuffer numTexturesBuffer;
Gfx::PVertexBuffer elementBuffer;
Gfx::OUniformBuffer numTexturesBuffer;
Gfx::OVertexBuffer elementBuffer;
Gfx::PVertexDeclaration declaration;
Gfx::PVertexShader vertexShader;
Gfx::PFragmentShader fragmentShader;
Gfx::PPipelineLayout pipelineLayout;
Gfx::PGraphicsPipeline pipeline;
Gfx::OVertexDeclaration declaration;
Gfx::OVertexShader vertexShader;
Gfx::OFragmentShader fragmentShader;
Gfx::OPipelineLayout pipelineLayout;
Gfx::OGraphicsPipeline pipeline;
Array<UI::RenderElementStyle> renderElements;
Array<Gfx::PTexture> usedTextures;