WIP multiple probes support

This commit is contained in:
RaveYard 2025-02-20 20:10:39 +01:00 committed by Magnus Norddahl
commit 2dd7ad8eb2
11 changed files with 153 additions and 11 deletions

View file

@ -420,7 +420,7 @@ void VkTextureManager::CreatePrefiltermap(int size, int count, TArray<uint16_t>&
.Execute(cmdbuffer);
int offset = 0;
for (int i = 0; i < 6; ++i)
for (int i = 0; i < count; ++i)
{
for (int level = 0; level < miplevels; level++)
{

View file

@ -321,13 +321,18 @@ void VulkanRenderDevice::RenderTextureView(FCanvasTexture* tex, std::function<vo
tex->SetUpdated(true);
}
void VulkanRenderDevice::RenderEnvironmentMap(std::function<void(IntRect& bounds, int side)> renderFunc)
void VulkanRenderDevice::RenderEnvironmentMap(std::function<void(IntRect& bounds, int side)> renderFunc, TArray<uint16_t>& irradianceMap, TArray<uint16_t>& prefilterMap)
{
mLightprober->RenderEnvironmentMap(std::move(renderFunc));
TArray<uint16_t> irradianceMap = mLightprober->GenerateIrradianceMap();
TArray<uint16_t> prefilterMap = mLightprober->GeneratePrefilterMap();
mTextureManager->CreateIrradiancemap(32, 6, std::move(irradianceMap));
mTextureManager->CreatePrefiltermap(128, 6, std::move(prefilterMap));
irradianceMap = mLightprober->GenerateIrradianceMap();
prefilterMap = mLightprober->GeneratePrefilterMap();
}
void VulkanRenderDevice::UploadEnvironmentMaps(int cubemapCount, TArray<uint16_t>&& irradianceMaps, TArray<uint16_t>&& prefilterMaps)
{
mTextureManager->CreateIrradiancemap(32, 6 * cubemapCount, std::move(irradianceMaps));
mTextureManager->CreatePrefiltermap(128, 6 * cubemapCount, std::move(prefilterMaps));
}
void VulkanRenderDevice::PostProcessScene(bool swscene, int fixedcm, float flash, const std::function<void()> &afterBloomDrawEndScene2D)

View file

@ -104,7 +104,8 @@ public:
private:
void RenderTextureView(FCanvasTexture* tex, std::function<void(IntRect &)> renderFunc) override;
void RenderEnvironmentMap(std::function<void(IntRect& bounds, int side)> renderFunc) override;
void RenderEnvironmentMap(std::function<void(IntRect& bounds, int side)> renderFunc, TArray<uint16_t>& irradianceMap, TArray<uint16_t>& prefilterMap) override;
void UploadEnvironmentMaps(int cubemapCount, TArray<uint16_t>&& irradianceMaps, TArray<uint16_t>&& prefilterMaps) override;
void PrintStartupLog();
void CopyScreenToBuffer(int w, int h, uint8_t *data) override;