No more shared pointers
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
@@ -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
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user