summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorazhirnov <zh1dron@gmail.com>2020-11-12 15:19:35 +0000
committerazhirnov <zh1dron@gmail.com>2020-11-12 15:19:35 +0000
commit0f5eaa1eb5bf6cd85146a29bd988903e22084832 (patch)
tree6698b73bbafec6d0b7843b9af3964738dec48522 /Graphics/GraphicsEngineVulkan
parentMerge branch 'master' into ray_tracing (diff)
downloadDiligentCore-0f5eaa1eb5bf6cd85146a29bd988903e22084832.tar.gz
DiligentCore-0f5eaa1eb5bf6cd85146a29bd988903e22084832.zip
fixed and improved shader binding
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp
index 1b8b3e83..0dd00e6c 100644
--- a/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/DeviceContextVkImpl.cpp
@@ -2969,12 +2969,12 @@ void DeviceContextVkImpl::BuildTLAS(const BuildTLASAttribs& Attribs)
if (Attribs.Update)
{
- if (!pTLASVk->UpdateInstances(Attribs.pInstances, Attribs.InstanceCount, Attribs.BaseContributionToHitGroupIndex, Attribs.HitShadersPerInstance, Attribs.BindingMode))
+ if (!pTLASVk->UpdateInstances(Attribs.pInstances, Attribs.InstanceCount, Attribs.BaseContributionToHitGroupIndex, Attribs.HitGroupStride, Attribs.BindingMode))
return;
}
else
{
- if (!pTLASVk->SetInstanceData(Attribs.pInstances, Attribs.InstanceCount, Attribs.BaseContributionToHitGroupIndex, Attribs.HitShadersPerInstance, Attribs.BindingMode))
+ if (!pTLASVk->SetInstanceData(Attribs.pInstances, Attribs.InstanceCount, Attribs.BaseContributionToHitGroupIndex, Attribs.HitGroupStride, Attribs.BindingMode))
return;
}
@@ -3004,9 +3004,13 @@ void DeviceContextVkImpl::BuildTLAS(const BuildTLASAttribs& Attribs)
vkASInst.instanceShaderBindingTableRecordOffset = InstDesc.ContributionToHitGroupIndex;
vkASInst.mask = Inst.Mask;
vkASInst.flags = InstanceFlagsToVkGeometryInstanceFlags(Inst.Flags);
- vkASInst.accelerationStructureReference = pBLASVk->GetVkDeviceAddress();
+ vkASInst.accelerationStructureReference = 0;
- TransitionOrVerifyBLASState(*pBLASVk, Attribs.BLASTransitionMode, RESOURCE_STATE_BUILD_AS_READ, OpName);
+ if (pBLASVk)
+ {
+ vkASInst.accelerationStructureReference = pBLASVk->GetVkDeviceAddress();
+ TransitionOrVerifyBLASState(*pBLASVk, Attribs.BLASTransitionMode, RESOURCE_STATE_BUILD_AS_READ, OpName);
+ }
}
UpdateBufferRegion(pInstancesVk, Attribs.InstanceBufferOffset, Size, TmpSpace.vkBuffer, TmpSpace.AlignedOffset, Attribs.InstanceBufferTransitionMode);