diff --git a/src/common/rendering/vulkan/descriptorsets/vk_descriptorset.cpp b/src/common/rendering/vulkan/descriptorsets/vk_descriptorset.cpp index 168346534..d2fdef02a 100644 --- a/src/common/rendering/vulkan/descriptorsets/vk_descriptorset.cpp +++ b/src/common/rendering/vulkan/descriptorsets/vk_descriptorset.cpp @@ -441,8 +441,19 @@ int VkDescriptorSetManager::GetLightProbeTextureIndex(int probeIndex) if (LightProbes[probeIndex] == -1) { - LightProbes[probeIndex] = AddBindlessTextureIndex(fb->GetTextureManager()->Irradiancemaps[probeIndex].View.get(), fb->GetSamplerManager()->IrradiancemapSampler.get()); - AddBindlessTextureIndex(fb->GetTextureManager()->Prefiltermaps[probeIndex].View.get(), fb->GetSamplerManager()->PrefiltermapSampler.get()); + auto textures = fb->GetTextureManager(); + + // Seems we might be rendering a probe before we have data for it + if (textures->Irradiancemaps.size() > (size_t)probeIndex && textures->Irradiancemaps[probeIndex].View && + textures->Prefiltermaps.size() > (size_t)probeIndex && textures->Prefiltermaps[probeIndex].View) + { + LightProbes[probeIndex] = AddBindlessTextureIndex(textures->Irradiancemaps[probeIndex].View.get(), fb->GetSamplerManager()->IrradiancemapSampler.get()); + AddBindlessTextureIndex(textures->Prefiltermaps[probeIndex].View.get(), fb->GetSamplerManager()->PrefiltermapSampler.get()); + } + else + { + return 0; + } } return LightProbes[probeIndex]; diff --git a/src/common/rendering/vulkan/textures/vk_texture.cpp b/src/common/rendering/vulkan/textures/vk_texture.cpp index a9791442f..1606ea5dc 100644 --- a/src/common/rendering/vulkan/textures/vk_texture.cpp +++ b/src/common/rendering/vulkan/textures/vk_texture.cpp @@ -418,7 +418,7 @@ void VkTextureManager::UploadIrradiancemap(int cubeCount, const TArray { int createStart = Irradiancemaps.size(); if (Irradiancemaps.size() <= (size_t)cubeCount) - Irradiancemaps.resize(cubeCount + 1); + Irradiancemaps.resize(cubeCount); int w = IrradiancemapSize; int h = IrradiancemapSize; @@ -497,7 +497,7 @@ void VkTextureManager::UploadPrefiltermap(int cubeCount, const TArray& { int createStart = Prefiltermaps.size(); if (Prefiltermaps.size() <= (size_t)cubeCount) - Prefiltermaps.resize(cubeCount + 1); + Prefiltermaps.resize(cubeCount); int w = PrefiltermapSize; int h = PrefiltermapSize;