forked from mirrors/0ad
Fixes water foam texture size after scale.
This commit is contained in:
committed by
Vladislav Belov
parent
3eb1da6e5c
commit
4f7f2e056c
@@ -88,6 +88,8 @@ public:
|
||||
void ResolveMultisampleFramebuffer(
|
||||
Renderer::Backend::IDeviceCommandContext* deviceCommandContext);
|
||||
|
||||
float GetScale() const { return m_Scale; }
|
||||
|
||||
private:
|
||||
void CreateMultisampleBuffer();
|
||||
void DestroyMultisampleBuffer();
|
||||
|
||||
@@ -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")
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user