Changeset View
Changeset View
Standalone View
Standalone View
source/graphics/LOSTexture.cpp
Show All 16 Lines | |||||
#include "precompiled.h" | #include "precompiled.h" | ||||
#include "LOSTexture.h" | #include "LOSTexture.h" | ||||
#include "graphics/ShaderManager.h" | #include "graphics/ShaderManager.h" | ||||
#include "lib/bits.h" | #include "lib/bits.h" | ||||
#include "lib/config2.h" | #include "lib/config2.h" | ||||
#include "lib/timer.h" | |||||
#include "maths/MathUtil.h" | |||||
#include "ps/CLogger.h" | #include "ps/CLogger.h" | ||||
#include "ps/CStrInternStatic.h" | #include "ps/CStrInternStatic.h" | ||||
#include "ps/Game.h" | #include "ps/Game.h" | ||||
#include "ps/Profile.h" | #include "ps/Profile.h" | ||||
#include "renderer/backend/IDevice.h" | #include "renderer/backend/IDevice.h" | ||||
#include "renderer/Renderer.h" | #include "renderer/Renderer.h" | ||||
#include "renderer/RenderingOptions.h" | #include "renderer/RenderingOptions.h" | ||||
#include "renderer/TimeManager.h" | #include "renderer/TimeManager.h" | ||||
▲ Show 20 Lines • Show All 94 Lines • ▼ Show 20 Lines | if (!skipSmoothLOS && !m_ShaderInitialized) | ||||
DeleteTexture(); | DeleteTexture(); | ||||
ConstructTexture(deviceCommandContext); | ConstructTexture(deviceCommandContext); | ||||
m_Dirty = true; | m_Dirty = true; | ||||
} | } | ||||
if (m_Dirty) | if (m_Dirty) | ||||
{ | { | ||||
RecomputeTexture(deviceCommandContext); | RecomputeTexture(deviceCommandContext); | ||||
m_LastTextureRecomputeTime = timer_Time(); | |||||
m_WhichTexture = 1u - m_WhichTexture; | |||||
m_Dirty = false; | m_Dirty = false; | ||||
} | } | ||||
if (skipSmoothLOS) | if (skipSmoothLOS) | ||||
return; | return; | ||||
GPU_SCOPED_LABEL(deviceCommandContext, "Render LOS texture"); | GPU_SCOPED_LABEL(deviceCommandContext, "Render LOS texture"); | ||||
deviceCommandContext->SetFramebuffer(m_SmoothFramebuffers[m_WhichTexture].get()); | deviceCommandContext->SetFramebuffer(m_SmoothFramebuffers[m_WhichTexture].get()); | ||||
deviceCommandContext->SetGraphicsPipelineState( | deviceCommandContext->SetGraphicsPipelineState( | ||||
m_SmoothTech->GetGraphicsPipelineStateDesc()); | m_SmoothTech->GetGraphicsPipelineStateDesc()); | ||||
deviceCommandContext->BeginPass(); | deviceCommandContext->BeginPass(); | ||||
Renderer::Backend::IShaderProgram* shader = m_SmoothTech->GetShader(); | Renderer::Backend::IShaderProgram* shader = m_SmoothTech->GetShader(); | ||||
deviceCommandContext->SetTexture( | deviceCommandContext->SetTexture( | ||||
shader->GetBindingSlot(str_losTex1), m_Texture.get()); | shader->GetBindingSlot(str_losTex1), m_Texture.get()); | ||||
deviceCommandContext->SetTexture( | deviceCommandContext->SetTexture( | ||||
shader->GetBindingSlot(str_losTex2), m_SmoothTextures[m_WhichTexture].get()); | shader->GetBindingSlot(str_losTex2), m_SmoothTextures[1u - m_WhichTexture].get()); | ||||
deviceCommandContext->SetUniform( | const float delta = Clamp<float>( | ||||
shader->GetBindingSlot(str_delta), | (timer_Time() - m_LastTextureRecomputeTime) * 2.0f, 0.0f, 1.0f); | ||||
static_cast<float>(g_Renderer.GetTimeManager().GetFrameDelta() * 4.0f)); | deviceCommandContext->SetUniform(shader->GetBindingSlot(str_delta), delta); | ||||
const SViewPort oldVp = g_Renderer.GetViewport(); | const SViewPort oldVp = g_Renderer.GetViewport(); | ||||
const SViewPort vp = | const SViewPort vp = | ||||
{ | { | ||||
0, 0, | 0, 0, | ||||
static_cast<int>(m_Texture->GetWidth()), | static_cast<int>(m_Texture->GetWidth()), | ||||
static_cast<int>(m_Texture->GetHeight()) | static_cast<int>(m_Texture->GetHeight()) | ||||
}; | }; | ||||
Show All 37 Lines | void CLOSTexture::InterpolateLOS(Renderer::Backend::IDeviceCommandContext* deviceCommandContext) | ||||
deviceCommandContext->Draw(0, 6); | deviceCommandContext->Draw(0, 6); | ||||
g_Renderer.SetViewport(oldVp); | g_Renderer.SetViewport(oldVp); | ||||
deviceCommandContext->EndPass(); | deviceCommandContext->EndPass(); | ||||
deviceCommandContext->SetFramebuffer( | deviceCommandContext->SetFramebuffer( | ||||
deviceCommandContext->GetDevice()->GetCurrentBackbuffer()); | deviceCommandContext->GetDevice()->GetCurrentBackbuffer()); | ||||
m_WhichTexture = 1u - m_WhichTexture; | |||||
} | } | ||||
Renderer::Backend::ITexture* CLOSTexture::GetTexture() | Renderer::Backend::ITexture* CLOSTexture::GetTexture() | ||||
{ | { | ||||
ENSURE(!m_Dirty); | ENSURE(!m_Dirty); | ||||
return m_Texture.get(); | return m_Texture.get(); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 250 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator