Changeset View
Changeset View
Standalone View
Standalone View
source/renderer/WaterManager.cpp
Show All 34 Lines | |||||
#include "maths/Vector2D.h" | #include "maths/Vector2D.h" | ||||
#include "ps/CLogger.h" | #include "ps/CLogger.h" | ||||
#include "ps/Game.h" | #include "ps/Game.h" | ||||
#include "ps/World.h" | #include "ps/World.h" | ||||
#include "renderer/WaterManager.h" | #include "renderer/WaterManager.h" | ||||
#include "renderer/Renderer.h" | #include "renderer/Renderer.h" | ||||
#include "renderer/RenderingOptions.h" | |||||
#include "simulation2/Simulation2.h" | #include "simulation2/Simulation2.h" | ||||
#include "simulation2/components/ICmpWaterManager.h" | #include "simulation2/components/ICmpWaterManager.h" | ||||
#include "simulation2/components/ICmpRangeManager.h" | #include "simulation2/components/ICmpRangeManager.h" | ||||
/////////////////////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////////////////////// | ||||
// WaterManager implementation | // WaterManager implementation | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | WaterManager::WaterManager() | ||||
m_RepeatPeriod = 16.0f; | m_RepeatPeriod = 16.0f; | ||||
m_DistanceHeightmap = NULL; | m_DistanceHeightmap = NULL; | ||||
m_BlurredNormalMap = NULL; | m_BlurredNormalMap = NULL; | ||||
m_WindStrength = NULL; | m_WindStrength = NULL; | ||||
m_ShoreWaves_VBIndices = NULL; | m_ShoreWaves_VBIndices = NULL; | ||||
m_WaterEffects = true; | m_WaterEffects = true; | ||||
historic_bruno: I don't understand the removal of an assignment here. | |||||
m_WaterFancyEffects = false; | m_WaterFancyEffects = false; | ||||
m_WaterRealDepth = false; | m_WaterRealDepth = false; | ||||
m_WaterRefraction = false; | m_WaterRefraction = false; | ||||
m_WaterReflection = false; | m_WaterReflection = false; | ||||
m_WaterShadows = false; | m_WaterShadows = false; | ||||
m_WaterType = L"ocean"; | m_WaterType = L"ocean"; | ||||
m_NeedsReloading = false; | m_NeedsReloading = false; | ||||
▲ Show 20 Lines • Show All 189 Lines • ▼ Show 20 Lines | #else | ||||
pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_ReflFboDepthTexture, 0); | pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_ReflFboDepthTexture, 0); | ||||
ogl_WarnIfError(); | ogl_WarnIfError(); | ||||
GLenum status = pglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); | GLenum status = pglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); | ||||
if (status != GL_FRAMEBUFFER_COMPLETE_EXT) | if (status != GL_FRAMEBUFFER_COMPLETE_EXT) | ||||
{ | { | ||||
LOGWARNING("Reflection framebuffer object incomplete: 0x%04X", status); | LOGWARNING("Reflection framebuffer object incomplete: 0x%04X", status); | ||||
g_Renderer.m_Options.m_WaterReflection = false; | g_RenderingOptions.SetWaterReflection(false); | ||||
UpdateQuality(); | |||||
} | } | ||||
m_RefractionFbo = 0; | m_RefractionFbo = 0; | ||||
pglGenFramebuffersEXT(1, &m_RefractionFbo); | pglGenFramebuffersEXT(1, &m_RefractionFbo); | ||||
pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_RefractionFbo); | pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_RefractionFbo); | ||||
pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, m_RefractionTexture, 0); | pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, m_RefractionTexture, 0); | ||||
pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_RefrFboDepthTexture, 0); | pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_RefrFboDepthTexture, 0); | ||||
ogl_WarnIfError(); | ogl_WarnIfError(); | ||||
status = pglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); | status = pglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); | ||||
if (status != GL_FRAMEBUFFER_COMPLETE_EXT) | if (status != GL_FRAMEBUFFER_COMPLETE_EXT) | ||||
{ | { | ||||
LOGWARNING("Refraction framebuffer object incomplete: 0x%04X", status); | LOGWARNING("Refraction framebuffer object incomplete: 0x%04X", status); | ||||
g_Renderer.m_Options.m_WaterRefraction = false; | g_RenderingOptions.SetWaterRefraction(false); | ||||
UpdateQuality(); | |||||
} | } | ||||
pglGenFramebuffersEXT(1, &m_FancyEffectsFBO); | pglGenFramebuffersEXT(1, &m_FancyEffectsFBO); | ||||
pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_FancyEffectsFBO); | pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_FancyEffectsFBO); | ||||
pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, m_FancyTextureNormal, 0); | pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, m_FancyTextureNormal, 0); | ||||
pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_2D, m_FancyTextureOther, 0); | pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_2D, m_FancyTextureOther, 0); | ||||
pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_FancyTextureDepth, 0); | pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_FancyTextureDepth, 0); | ||||
ogl_WarnIfError(); | ogl_WarnIfError(); | ||||
status = pglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); | status = pglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); | ||||
if (status != GL_FRAMEBUFFER_COMPLETE_EXT) | if (status != GL_FRAMEBUFFER_COMPLETE_EXT) | ||||
{ | { | ||||
LOGWARNING("Fancy Effects framebuffer object incomplete: 0x%04X", status); | LOGWARNING("Fancy Effects framebuffer object incomplete: 0x%04X", status); | ||||
g_Renderer.m_Options.m_WaterRefraction = false; | g_RenderingOptions.SetWaterRefraction(false); | ||||
UpdateQuality(); | |||||
} | } | ||||
pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, currentFbo); | pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, currentFbo); | ||||
// Enable rendering, now that we've succeeded this far | // Enable rendering, now that we've succeeded this far | ||||
m_RenderWater = true; | m_RenderWater = true; | ||||
#endif | #endif | ||||
return 0; | return 0; | ||||
▲ Show 20 Lines • Show All 760 Lines • ▼ Show 20 Lines | void WaterManager::SetMapSize(size_t size) | ||||
SAFE_ARRAY_DELETE(m_BlurredNormalMap); | SAFE_ARRAY_DELETE(m_BlurredNormalMap); | ||||
SAFE_ARRAY_DELETE(m_WindStrength); | SAFE_ARRAY_DELETE(m_WindStrength); | ||||
} | } | ||||
//////////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////////// | ||||
// This will set the bools properly | // This will set the bools properly | ||||
void WaterManager::UpdateQuality() | void WaterManager::UpdateQuality() | ||||
{ | { | ||||
if (g_Renderer.GetOptionBool(CRenderer::OPT_WATEREFFECTS) != m_WaterEffects) | if (g_RenderingOptions.GetWaterEffects() != m_WaterEffects) | ||||
{ | { | ||||
m_WaterEffects = g_Renderer.GetOptionBool(CRenderer::OPT_WATEREFFECTS); | m_WaterEffects = g_RenderingOptions.GetWaterEffects(); | ||||
m_NeedsReloading = true; | m_NeedsReloading = true; | ||||
} | } | ||||
if (g_Renderer.GetOptionBool(CRenderer::OPT_WATERFANCYEFFECTS) != m_WaterFancyEffects) { | if (g_RenderingOptions.GetWaterFancyEffects() != m_WaterFancyEffects) { | ||||
m_WaterFancyEffects = g_Renderer.GetOptionBool(CRenderer::OPT_WATERFANCYEFFECTS); | m_WaterFancyEffects = g_RenderingOptions.GetWaterFancyEffects(); | ||||
m_NeedsReloading = true; | m_NeedsReloading = true; | ||||
} | } | ||||
if (g_Renderer.GetOptionBool(CRenderer::OPT_WATERREALDEPTH) != m_WaterRealDepth) { | if (g_RenderingOptions.GetWaterRealDepth() != m_WaterRealDepth) { | ||||
m_WaterRealDepth = g_Renderer.GetOptionBool(CRenderer::OPT_WATERREALDEPTH); | m_WaterRealDepth = g_RenderingOptions.GetWaterRealDepth(); | ||||
m_NeedsReloading = true; | m_NeedsReloading = true; | ||||
} | } | ||||
if (g_Renderer.GetOptionBool(CRenderer::OPT_WATERREFRACTION) != m_WaterRefraction) { | if (g_RenderingOptions.GetWaterRefraction() != m_WaterRefraction) { | ||||
m_WaterRefraction = g_Renderer.GetOptionBool(CRenderer::OPT_WATERREFRACTION); | m_WaterRefraction = g_RenderingOptions.GetWaterRefraction(); | ||||
m_NeedsReloading = true; | m_NeedsReloading = true; | ||||
} | } | ||||
if (g_Renderer.GetOptionBool(CRenderer::OPT_WATERREFLECTION) != m_WaterReflection) { | if (g_RenderingOptions.GetWaterReflection() != m_WaterReflection) { | ||||
m_WaterReflection = g_Renderer.GetOptionBool(CRenderer::OPT_WATERREFLECTION); | m_WaterReflection = g_RenderingOptions.GetWaterReflection(); | ||||
m_NeedsReloading = true; | m_NeedsReloading = true; | ||||
} | } | ||||
if (g_Renderer.GetOptionBool(CRenderer::OPT_SHADOWSONWATER) != m_WaterShadows) { | if (g_RenderingOptions.GetWaterShadows() != m_WaterShadows) { | ||||
m_WaterShadows = g_Renderer.GetOptionBool(CRenderer::OPT_SHADOWSONWATER); | m_WaterShadows = g_RenderingOptions.GetWaterShadows(); | ||||
m_NeedsReloading = true; | m_NeedsReloading = true; | ||||
} | } | ||||
} | } | ||||
bool WaterManager::WillRenderFancyWater() | bool WaterManager::WillRenderFancyWater() | ||||
{ | { | ||||
return m_RenderWater && m_WaterEffects && g_Renderer.GetCapabilities().m_PrettyWater; | return m_RenderWater && g_RenderingOptions.GetWaterEffects() && g_Renderer.GetCapabilities().m_PrettyWater; | ||||
} | } |
Wildfire Games · Phabricator
I don't understand the removal of an assignment here.