- the light storage buffer is not dynamic

This commit is contained in:
Magnus Norddahl 2019-04-28 23:51:09 +02:00
commit 188714dc14
4 changed files with 8 additions and 17 deletions

View file

@ -374,7 +374,7 @@ void VkRenderState::ApplyPushConstants()
if (mMaterial.mMaterial && mMaterial.mMaterial->tex)
mPushConstants.uSpecularMaterial = { mMaterial.mMaterial->tex->Glossiness, mMaterial.mMaterial->tex->SpecularLevel };
mPushConstants.uLightIndex = screen->mLights->BindUBO(mLightIndex);
mPushConstants.uLightIndex = mLightIndex;
mPushConstants.uDataIndex = mDataIndex;
auto fb = GetVulkanFrameBuffer();
@ -474,16 +474,15 @@ void VkRenderState::ApplyMaterial()
void VkRenderState::ApplyDynamicSet()
{
if (mViewpointOffset != mLastViewpointOffset || mLightBufferOffset != mLastLightBufferOffset || mMatricesOffset != mLastMatricesOffset || mStreamDataOffset != mLastStreamDataOffset)
if (mViewpointOffset != mLastViewpointOffset || mMatricesOffset != mLastMatricesOffset || mStreamDataOffset != mLastStreamDataOffset)
{
auto fb = GetVulkanFrameBuffer();
auto passManager = fb->GetRenderPassManager();
uint32_t offsets[4] = { mViewpointOffset, mLightBufferOffset, mMatricesOffset, mStreamDataOffset };
mCommandBuffer->bindDescriptorSet(VK_PIPELINE_BIND_POINT_GRAPHICS, passManager->GetPipelineLayout(mRenderPassKey.NumTextureLayers), 0, passManager->DynamicSet.get(), 4, offsets);
uint32_t offsets[3] = { mViewpointOffset, mMatricesOffset, mStreamDataOffset };
mCommandBuffer->bindDescriptorSet(VK_PIPELINE_BIND_POINT_GRAPHICS, passManager->GetPipelineLayout(mRenderPassKey.NumTextureLayers), 0, passManager->DynamicSet.get(), 3, offsets);
mLastViewpointOffset = mViewpointOffset;
mLastLightBufferOffset = mLightBufferOffset;
mLastMatricesOffset = mMatricesOffset;
mLastStreamDataOffset = mStreamDataOffset;
}
@ -496,11 +495,6 @@ void VkRenderState::Bind(int bindingpoint, uint32_t offset)
mViewpointOffset = offset;
mNeedApply = true;
}
else if (bindingpoint == LIGHTBUF_BINDINGPOINT)
{
mLightBufferOffset = offset;
mNeedApply = true;
}
}
void VkRenderState::BeginFrame()
@ -518,7 +512,6 @@ void VkRenderState::EndRenderPass()
mRenderPassKey = {};
mLastViewpointOffset = 0xffffffff;
mLastLightBufferOffset = 0xffffffff;
mLastVertexBuffer = nullptr;
mLastIndexBuffer = nullptr;
mLastModelMatrixEnabled = true;