adding directional light actor

This commit is contained in:
Dynamitos
2023-03-09 17:39:57 +01:00
parent 2607c28b98
commit b79525c1a6
14 changed files with 144 additions and 50 deletions
+5 -9
View File
@@ -154,10 +154,10 @@ void BasePass::render()
Gfx::SE_ACCESS_SHADER_WRITE_BIT, Gfx::SE_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
Gfx::SE_ACCESS_SHADER_READ_BIT, Gfx::SE_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(0, directLightBuffer);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(1, numDirLightBuffer);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(2, pointLightBuffer);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(3, numPointLightBuffer);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(0, passData.lightEnv.directionalLights);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(1, passData.lightEnv.numDirectional);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(2, passData.lightEnv.pointLights);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(3, passData.lightEnv.numPoints);
descriptorSets[INDEX_LIGHT_ENV]->updateBuffer(4, oLightIndexList);
descriptorSets[INDEX_LIGHT_ENV]->updateTexture(5, oLightGrid);
descriptorSets[INDEX_LIGHT_ENV]->writeChanges();
@@ -186,11 +186,7 @@ void BasePass::publishOutputs()
}
void BasePass::createRenderPass()
{
directLightBuffer = resources->requestBuffer("DIRECTIONAL_LIGHTS");
pointLightBuffer = resources->requestBuffer("POINT_LIGHTS");
numDirLightBuffer = resources->requestUniform("NUM_DIRECTIONAL_LIGHTS");
numPointLightBuffer = resources->requestUniform("NUM_POINT_LIGHTS");
{
Gfx::PRenderTargetAttachment depthAttachment = resources->requestRenderTarget("DEPTHPREPASS_DEPTH");
depthAttachment->loadOp = Gfx::SE_ATTACHMENT_LOAD_OP_LOAD;
colorAttachment->loadOp = Gfx::SE_ATTACHMENT_LOAD_OP_CLEAR;
+1 -4
View File
@@ -30,6 +30,7 @@ struct BasePassData
{
Array<MeshBatch> staticDrawList;
Gfx::PStructuredBuffer sceneDataBuffer;
LightEnv lightEnv;
};
class BasePass : public RenderPass<BasePassData>
{
@@ -54,10 +55,6 @@ private:
Gfx::PPipelineLayout basePassLayout;
// Set 0: Light environment
static constexpr uint32 INDEX_LIGHT_ENV = 0;
Gfx::PStructuredBuffer directLightBuffer;
Gfx::PUniformBuffer numDirLightBuffer;
Gfx::PStructuredBuffer pointLightBuffer;
Gfx::PUniformBuffer numPointLightBuffer;
Gfx::PStructuredBuffer oLightIndexList;
Gfx::PTexture oLightGrid;
Gfx::PDescriptorLayout lightLayout;
@@ -188,11 +188,6 @@ void LightCullingPass::publishOutputs()
resources->registerBufferOutput("LIGHTCULLING_OLIGHTLIST", oLightIndexList);
resources->registerBufferOutput("LIGHTCULLING_TLIGHTLIST", tLightIndexList);
resources->registerBufferOutput("DIRECTIONAL_LIGHTS", passData.lightEnv.directionalLights);
resources->registerUniformOutput("NUM_DIRECTIONAL_LIGHTS", passData.lightEnv.numDirectional);
resources->registerBufferOutput("POINT_LIGHTS", passData.lightEnv.pointLights);
resources->registerUniformOutput("NUM_POINT_LIGHTS", passData.lightEnv.numPoints);
TextureCreateInfo textureInfo = {
.width = dispatchParams.numThreadGroups.x,
.height = dispatchParams.numThreadGroups.y,