Changeset View
Changeset View
Standalone View
Standalone View
source/renderer/WaterManager.cpp
Show First 20 Lines • Show All 212 Lines • ▼ Show 20 Lines | m_ReflectionTexture = backendDevice->CreateTexture2D("WaterReflectionTexture", | ||||
Renderer::Backend::Format::R8G8B8A8_UNORM, m_RefTextureSize, m_RefTextureSize, | Renderer::Backend::Format::R8G8B8A8_UNORM, m_RefTextureSize, m_RefTextureSize, | ||||
Renderer::Backend::Sampler::MakeDefaultSampler( | Renderer::Backend::Sampler::MakeDefaultSampler( | ||||
Renderer::Backend::Sampler::Filter::LINEAR, | Renderer::Backend::Sampler::Filter::LINEAR, | ||||
Renderer::Backend::Sampler::AddressMode::MIRRORED_REPEAT)); | Renderer::Backend::Sampler::AddressMode::MIRRORED_REPEAT)); | ||||
m_ReflFboDepthTexture = backendDevice->CreateTexture2D("WaterReflectionDepthTexture", | m_ReflFboDepthTexture = backendDevice->CreateTexture2D("WaterReflectionDepthTexture", | ||||
Renderer::Backend::ITexture::Usage::SAMPLED | | Renderer::Backend::ITexture::Usage::SAMPLED | | ||||
Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, | Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, | ||||
Renderer::Backend::Format::D32, m_RefTextureSize, m_RefTextureSize, | Renderer::Backend::Format::D24, m_RefTextureSize, m_RefTextureSize, | ||||
Renderer::Backend::Sampler::MakeDefaultSampler( | Renderer::Backend::Sampler::MakeDefaultSampler( | ||||
Renderer::Backend::Sampler::Filter::NEAREST, | Renderer::Backend::Sampler::Filter::NEAREST, | ||||
Renderer::Backend::Sampler::AddressMode::REPEAT)); | Renderer::Backend::Sampler::AddressMode::REPEAT)); | ||||
m_ReflectionFramebuffer = backendDevice->CreateFramebuffer("ReflectionFramebuffer", | m_ReflectionFramebuffer = backendDevice->CreateFramebuffer("ReflectionFramebuffer", | ||||
m_ReflectionTexture.get(), m_ReflFboDepthTexture.get(), CColor(0.5f, 0.5f, 1.0f, 0.0f)); | m_ReflectionTexture.get(), | ||||
Renderer::Backend::AttachmentLoadOp::CLEAR, | |||||
Renderer::Backend::AttachmentStoreOp::STORE, | |||||
CColor(0.5f, 0.5f, 1.0f, 0.0f), m_ReflFboDepthTexture.get(), | |||||
Renderer::Backend::AttachmentLoadOp::CLEAR, | |||||
Renderer::Backend::AttachmentStoreOp::STORE); | |||||
if (!m_ReflectionFramebuffer) | if (!m_ReflectionFramebuffer) | ||||
{ | { | ||||
g_RenderingOptions.SetWaterReflection(false); | g_RenderingOptions.SetWaterReflection(false); | ||||
UpdateQuality(); | UpdateQuality(); | ||||
} | } | ||||
} | } | ||||
// Create refraction textures. | // Create refraction textures. | ||||
const bool needsRefractionTextures = | const bool needsRefractionTextures = | ||||
g_RenderingOptions.GetWaterEffects() && | g_RenderingOptions.GetWaterEffects() && | ||||
g_RenderingOptions.GetWaterRefraction(); | g_RenderingOptions.GetWaterRefraction(); | ||||
if (needsRefractionTextures && !m_RefractionTexture) | if (needsRefractionTextures && !m_RefractionTexture) | ||||
{ | { | ||||
m_RefractionTexture = backendDevice->CreateTexture2D("WaterRefractionTexture", | m_RefractionTexture = backendDevice->CreateTexture2D("WaterRefractionTexture", | ||||
Renderer::Backend::ITexture::Usage::SAMPLED | | Renderer::Backend::ITexture::Usage::SAMPLED | | ||||
Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT, | Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT, | ||||
Renderer::Backend::Format::R8G8B8A8_UNORM, m_RefTextureSize, m_RefTextureSize, | Renderer::Backend::Format::R8G8B8A8_UNORM, m_RefTextureSize, m_RefTextureSize, | ||||
Renderer::Backend::Sampler::MakeDefaultSampler( | Renderer::Backend::Sampler::MakeDefaultSampler( | ||||
Renderer::Backend::Sampler::Filter::LINEAR, | Renderer::Backend::Sampler::Filter::LINEAR, | ||||
Renderer::Backend::Sampler::AddressMode::MIRRORED_REPEAT)); | Renderer::Backend::Sampler::AddressMode::MIRRORED_REPEAT)); | ||||
m_RefrFboDepthTexture = backendDevice->CreateTexture2D("WaterRefractionDepthTexture", | m_RefrFboDepthTexture = backendDevice->CreateTexture2D("WaterRefractionDepthTexture", | ||||
Renderer::Backend::ITexture::Usage::SAMPLED | | Renderer::Backend::ITexture::Usage::SAMPLED | | ||||
Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, | Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, | ||||
Renderer::Backend::Format::D32, m_RefTextureSize, m_RefTextureSize, | Renderer::Backend::Format::D24, m_RefTextureSize, m_RefTextureSize, | ||||
phosit: why did you change that? | |||||
Done Inline ActionsWe already use it for other depth textures. vladislavbelov: We already use it for other depth textures. | |||||
Renderer::Backend::Sampler::MakeDefaultSampler( | Renderer::Backend::Sampler::MakeDefaultSampler( | ||||
Renderer::Backend::Sampler::Filter::NEAREST, | Renderer::Backend::Sampler::Filter::NEAREST, | ||||
Renderer::Backend::Sampler::AddressMode::REPEAT)); | Renderer::Backend::Sampler::AddressMode::REPEAT)); | ||||
m_RefractionFramebuffer = backendDevice->CreateFramebuffer("RefractionFramebuffer", | m_RefractionFramebuffer = backendDevice->CreateFramebuffer("RefractionFramebuffer", | ||||
m_RefractionTexture.get(), m_RefrFboDepthTexture.get(), CColor(1.0f, 0.0f, 0.0f, 0.0f)); | m_RefractionTexture.get(), | ||||
Renderer::Backend::AttachmentLoadOp::CLEAR, | |||||
Renderer::Backend::AttachmentStoreOp::STORE, | |||||
CColor(1.0f, 0.0f, 0.0f, 0.0f), m_RefrFboDepthTexture.get(), | |||||
Renderer::Backend::AttachmentLoadOp::CLEAR, | |||||
Renderer::Backend::AttachmentStoreOp::STORE); | |||||
if (!m_RefractionFramebuffer) | if (!m_RefractionFramebuffer) | ||||
{ | { | ||||
g_RenderingOptions.SetWaterRefraction(false); | g_RenderingOptions.SetWaterRefraction(false); | ||||
UpdateQuality(); | UpdateQuality(); | ||||
} | } | ||||
} | } | ||||
const uint32_t newWidth = static_cast<uint32_t>(g_Renderer.GetWidth()); | const uint32_t newWidth = static_cast<uint32_t>(g_Renderer.GetWidth()); | ||||
Show All 16 Lines | m_FancyTexture = backendDevice->CreateTexture2D("WaterFancyTexture", | ||||
Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT, | Renderer::Backend::ITexture::Usage::COLOR_ATTACHMENT, | ||||
Renderer::Backend::Format::R8G8B8A8_UNORM, g_Renderer.GetWidth(), g_Renderer.GetHeight(), | Renderer::Backend::Format::R8G8B8A8_UNORM, g_Renderer.GetWidth(), g_Renderer.GetHeight(), | ||||
Renderer::Backend::Sampler::MakeDefaultSampler( | Renderer::Backend::Sampler::MakeDefaultSampler( | ||||
Renderer::Backend::Sampler::Filter::LINEAR, | Renderer::Backend::Sampler::Filter::LINEAR, | ||||
Renderer::Backend::Sampler::AddressMode::REPEAT)); | Renderer::Backend::Sampler::AddressMode::REPEAT)); | ||||
m_FancyTextureDepth = backendDevice->CreateTexture2D("WaterFancyDepthTexture", | m_FancyTextureDepth = backendDevice->CreateTexture2D("WaterFancyDepthTexture", | ||||
Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, | Renderer::Backend::ITexture::Usage::DEPTH_STENCIL_ATTACHMENT, | ||||
Renderer::Backend::Format::D32, g_Renderer.GetWidth(), g_Renderer.GetHeight(), | Renderer::Backend::Format::D24, g_Renderer.GetWidth(), g_Renderer.GetHeight(), | ||||
Renderer::Backend::Sampler::MakeDefaultSampler( | Renderer::Backend::Sampler::MakeDefaultSampler( | ||||
Renderer::Backend::Sampler::Filter::LINEAR, | Renderer::Backend::Sampler::Filter::LINEAR, | ||||
Renderer::Backend::Sampler::AddressMode::REPEAT)); | Renderer::Backend::Sampler::AddressMode::REPEAT)); | ||||
m_FancyEffectsFramebuffer = backendDevice->CreateFramebuffer("FancyEffectsFramebuffer", | m_FancyEffectsFramebuffer = backendDevice->CreateFramebuffer("FancyEffectsFramebuffer", | ||||
m_FancyTexture.get(), m_FancyTextureDepth.get()); | m_FancyTexture.get(), | ||||
Renderer::Backend::AttachmentLoadOp::CLEAR, | |||||
Renderer::Backend::AttachmentStoreOp::STORE, | |||||
CColor(0.0f, 0.0f, 0.0f, 0.0f), m_FancyTextureDepth.get(), | |||||
Renderer::Backend::AttachmentLoadOp::CLEAR, | |||||
Renderer::Backend::AttachmentStoreOp::DONT_CARE); | |||||
if (!m_FancyEffectsFramebuffer) | if (!m_FancyEffectsFramebuffer) | ||||
{ | { | ||||
g_RenderingOptions.SetWaterRefraction(false); | g_RenderingOptions.SetWaterRefraction(false); | ||||
UpdateQuality(); | UpdateQuality(); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 499 Lines • ▼ Show 20 Lines | void WaterManager::RenderWaves( | ||||
m_WaveTex->UploadBackendTextureIfNeeded(deviceCommandContext); | m_WaveTex->UploadBackendTextureIfNeeded(deviceCommandContext); | ||||
m_FoamTex->UploadBackendTextureIfNeeded(deviceCommandContext); | m_FoamTex->UploadBackendTextureIfNeeded(deviceCommandContext); | ||||
GPU_SCOPED_LABEL(deviceCommandContext, "Render Waves"); | GPU_SCOPED_LABEL(deviceCommandContext, "Render Waves"); | ||||
deviceCommandContext->SetGraphicsPipelineState( | deviceCommandContext->SetGraphicsPipelineState( | ||||
Renderer::Backend::MakeDefaultGraphicsPipelineStateDesc()); | Renderer::Backend::MakeDefaultGraphicsPipelineStateDesc()); | ||||
deviceCommandContext->BeginFramebufferPass(m_FancyEffectsFramebuffer.get()); | deviceCommandContext->BeginFramebufferPass(m_FancyEffectsFramebuffer.get()); | ||||
deviceCommandContext->ClearFramebuffer(); | |||||
CShaderTechniquePtr tech = g_Renderer.GetShaderManager().LoadEffect(str_water_waves); | CShaderTechniquePtr tech = g_Renderer.GetShaderManager().LoadEffect(str_water_waves); | ||||
deviceCommandContext->SetGraphicsPipelineState( | deviceCommandContext->SetGraphicsPipelineState( | ||||
tech->GetGraphicsPipelineStateDesc()); | tech->GetGraphicsPipelineStateDesc()); | ||||
deviceCommandContext->BeginPass(); | deviceCommandContext->BeginPass(); | ||||
Renderer::Backend::IShaderProgram* shader = tech->GetShader(); | Renderer::Backend::IShaderProgram* shader = tech->GetShader(); | ||||
deviceCommandContext->SetTexture( | deviceCommandContext->SetTexture( | ||||
▲ Show 20 Lines • Show All 266 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
why did you change that?