@@ -244,10 +244,12 @@ int main()
244
244
params.subresourceRange .layerCount = 1u ;
245
245
return driver->createGPUImageView (std::move (params));
246
246
};
247
- auto visbufferView = createImageView (createScreenSizedImage (EF_R32G32B32A32_UINT));
247
+ auto depthBufferView = createImageView (createScreenSizedImage (EF_D32_SFLOAT));
248
+ auto visBufferView = createImageView (createScreenSizedImage (EF_R32G32B32A32_UINT));
248
249
249
- auto visbuffer = driver->addFrameBuffer ();
250
- visbuffer->attach (EFAP_COLOR_ATTACHMENT0,smart_refctd_ptr (visbufferView));
250
+ auto visBuffer = driver->addFrameBuffer ();
251
+ visBuffer->attach (EFAP_DEPTH_ATTACHMENT,smart_refctd_ptr (depthBufferView));
252
+ visBuffer->attach (EFAP_COLOR_ATTACHMENT0,smart_refctd_ptr (visBufferView));
251
253
auto fb = driver->addFrameBuffer ();
252
254
fb->attach (EFAP_COLOR_ATTACHMENT0,createImageView (smart_refctd_ptr (framebuffer)));
253
255
@@ -314,7 +316,7 @@ int main()
314
316
}
315
317
{
316
318
IGPUDescriptorSet::SDescriptorInfo infos[2 ];
317
- infos[0 ].desc = core::smart_refctd_ptr (visbufferView );
319
+ infos[0 ].desc = core::smart_refctd_ptr (visBufferView );
318
320
// infos[0].image.imageLayout = ?;
319
321
infos[0 ].image .sampler = nullptr ; // used immutable in the layout
320
322
infos[1 ].desc = createImageView (std::move (framebuffer),EF_R8G8B8A8_UNORM);
@@ -598,6 +600,7 @@ int main()
598
600
driver->updateDescriptorSets (writesVT.size (),writesVT.data (),0u ,nullptr );
599
601
}
600
602
smart_refctd_ptr<IGPUDescriptorSetLayout> vgDSLayout;
603
+ std::string extraCode;
601
604
// msvc is incredibly dumb and complains about type mismatches in code sections guarded by if constexpr
602
605
std::conditional_t <useSSBO,GPUMeshPacker::DSLayoutParamsSSBO,GPUMeshPacker::DSLayoutParamsUTB> tmp;
603
606
[&](auto & layoutParams) -> void
@@ -657,15 +660,20 @@ int main()
657
660
infos->buffer .size = batchDataSSBO->getSize ();
658
661
infos->desc = std::move (batchDataSSBO);
659
662
infos++;
663
+
664
+ constexpr uint32_t vgDescriptorSetIx = 1u ;
660
665
if constexpr (useSSBO)
666
+ {
667
+ extraCode = gpump->getGLSLForSSBO (vgDescriptorSetIx,layoutParams);
661
668
gpump->getDescriptorSetWritesForSSBO (writes,infos,sceneData.vgDS .get (),layoutParams);
669
+ }
662
670
else
671
+ {
672
+ extraCode = gpump->getGLSLForUTB (vgDescriptorSetIx, layoutParams);
663
673
gpump->getDescriptorSetWritesForUTB (writes,infos,sceneData.vgDS .get (),layoutParams);
674
+ }
664
675
driver->updateDescriptorSets (writeCount,writesVG.data (),0u ,nullptr );
665
676
}(tmp);
666
-
667
- //
668
- std::string extraCode = useSSBO ? gpump->getGLSLForSSBO ():gpump->getGLSLForUTB ();
669
677
// TODO: sprintf(fragPrelude.data(), FRAGMENT_SHADER_OVERRIDES, sceneData.vt->getFloatViews().size(), sceneData.vt->getGLSLFunctionsIncludePath().c_str());
670
678
auto overrideShaderJustAfterVersionDirective = [am,driver,extraCode](const char * path)
671
679
{
@@ -757,7 +765,7 @@ int main()
757
765
758
766
// TODO: Cull MDIs
759
767
760
- driver->setRenderTarget (visbuffer );
768
+ driver->setRenderTarget (visBuffer );
761
769
driver->clearZBuffer ();
762
770
const uint32_t invalidObjectCode[4 ] = {~0u ,0u ,0u ,0u };
763
771
driver->clearColorBuffer (EFAP_COLOR_ATTACHMENT0,invalidObjectCode);
0 commit comments