1
0
forked from mirrors/0ad

Fixes water foam texture size after scale.

This commit is contained in:
Vladislav Belov
2024-10-07 19:26:48 +02:00
committed by Vladislav Belov
parent 3eb1da6e5c
commit 4f7f2e056c
3 changed files with 14 additions and 7 deletions
+2
View File
@@ -88,6 +88,8 @@ public:
void ResolveMultisampleFramebuffer(
Renderer::Backend::IDeviceCommandContext* deviceCommandContext);
float GetScale() const { return m_Scale; }
private:
void CreateMultisampleBuffer();
void DestroyMultisampleBuffer();
+5 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2023 Wildfire Games.
/* Copyright (C) 2024 Wildfire Games.
* This file is part of 0 A.D.
*
* 0 A.D. is free software: you can redistribute it and/or modify
@@ -43,6 +43,7 @@
#include "renderer/backend/PipelineState.h"
#include "renderer/DecalRData.h"
#include "renderer/PatchRData.h"
#include "renderer/PostprocManager.h"
#include "renderer/Renderer.h"
#include "renderer/RenderingOptions.h"
#include "renderer/SceneRenderer.h"
@@ -606,10 +607,11 @@ bool TerrainRenderer::RenderFancyWater(
lightEnv.m_FogFactor, lightEnv.m_FogMax);
deviceCommandContext->SetUniform(
fancyWaterShader->GetBindingSlot(str_time), static_cast<float>(time));
const float scale{g_Renderer.GetPostprocManager().IsEnabled()
? g_Renderer.GetPostprocManager().GetScale() : 1.0f};
deviceCommandContext->SetUniform(
fancyWaterShader->GetBindingSlot(str_screenSize),
static_cast<float>(g_Renderer.GetWidth()),
static_cast<float>(g_Renderer.GetHeight()));
g_Renderer.GetWidth() * scale, g_Renderer.GetHeight() * scale);
if (waterManager.m_WaterType == L"clap")
{
+7 -4
View File
@@ -30,6 +30,7 @@
#include "ps/Game.h"
#include "ps/World.h"
#include "renderer/backend/IDevice.h"
#include "renderer/PostprocManager.h"
#include "renderer/Renderer.h"
#include "renderer/RenderingOptions.h"
#include "renderer/SceneRenderer.h"
@@ -320,8 +321,10 @@ void WaterManager::RecreateOrLoadTexturesIfNeeded()
}
}
const uint32_t newWidth = static_cast<uint32_t>(g_Renderer.GetWidth());
const uint32_t newHeight = static_cast<uint32_t>(g_Renderer.GetHeight());
const float scale{g_Renderer.GetPostprocManager().IsEnabled()
? g_Renderer.GetPostprocManager().GetScale() : 1.0f};
const uint32_t newWidth{static_cast<uint32_t>(g_Renderer.GetWidth() * scale)};
const uint32_t newHeight{static_cast<uint32_t>(g_Renderer.GetHeight() * scale)};
if (m_FancyTexture && (m_FancyTexture->GetWidth() != newWidth || m_FancyTexture->GetHeight() != newHeight))
{
m_FancyEffectsFramebuffer.reset();
@@ -339,14 +342,14 @@ void WaterManager::RecreateOrLoadTexturesIfNeeded()
m_FancyTexture = m_Device->CreateTexture2D("WaterFancyTexture",
Renderer::Backend::ITexture::Usage::SAMPLED |
Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT,
Renderer::Backend::Format::R8G8B8A8_UNORM, g_Renderer.GetWidth(), g_Renderer.GetHeight(),
Renderer::Backend::Format::R8G8B8A8_UNORM, newWidth, newHeight,
Renderer::Backend::Sampler::MakeDefaultSampler(
Renderer::Backend::Sampler::Filter::LINEAR,
Renderer::Backend::Sampler::AddressMode::REPEAT));
m_FancyTextureDepth = m_Device->CreateTexture2D("WaterFancyDepthTexture",
Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT,
depthFormat, g_Renderer.GetWidth(), g_Renderer.GetHeight(),
depthFormat, newWidth, newHeight,
Renderer::Backend::Sampler::MakeDefaultSampler(
Renderer::Backend::Sampler::Filter::LINEAR,
Renderer::Backend::Sampler::AddressMode::REPEAT));