1
0
forked from 0ad/0ad

Fix a non-fatal GL error, fix me forgetting to commit a file, remove the "3D" waviness setting as it was mostly redundant with HQ.

This was SVN commit r12822.
This commit is contained in:
wraitii 2012-11-05 12:14:04 +00:00
parent 1e3c885f45
commit 76676b1e38
13 changed files with 61 additions and 75 deletions

View File

@ -42,7 +42,6 @@ bpp = 0
; System settings:
waternormals = true
waterbinormals = true
waterrealdepth = true
waterfoam = false
watercoastalwaves = false

View File

@ -300,7 +300,7 @@
<object name="settingsDialogPanel"
style="StoneDialog"
type="image"
size="50%-180 50%-225 50%+180 50%+250"
size="50%-180 50%-225 50%+180 50%+225"
hidden="true"
>
<object type="text" style="TitleText" size="50%-96 -16 50%+96 16">Settings</object>
@ -324,84 +324,77 @@
</object>
<!-- Settings / Water Normals -->
<object size="0 60 100%-80 85" type="text" style="RightLabelText" ghost="true">Water - 3D Waviness</object>
<object size="0 60 100%-80 85" type="text" style="RightLabelText" ghost="true">Water - HQ Waviness</object>
<object name="waterNormalCheckox" size="100%-56 65 100%-30 90" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.waternormal) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.waternormal = this.checked;</action>
</object>
<!-- Settings / Water Binormals -->
<object size="0 85 100%-80 110" type="text" style="RightLabelText" ghost="true">Water - HQ Waviness</object>
<object name="waterBinormalCheckox" size="100%-56 90 100%-30 115" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.waterbinormal) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.waterbinormal = this.checked;</action>
</object>
<!-- Settings / Real Depth -->
<object size="0 110 100%-80 135" type="text" style="RightLabelText" ghost="true">Water - Use Actual Depth</object>
<object name="waterRealDepthCheckbox" size="100%-56 115 100%-30 140" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 85 100%-80 110" type="text" style="RightLabelText" ghost="true">Water - Use Actual Depth</object>
<object name="waterRealDepthCheckbox" size="100%-56 90 100%-30 115" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.waterrealdepth) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.waterrealdepth = this.checked; </action>
</object>
<!-- Settings / Reflection -->
<object size="0 135 100%-80 160" type="text" style="RightLabelText" ghost="true">Water - Enable Reflections</object>
<object name="waterReflectionCheckbox" size="100%-56 140 100%-30 165" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 110 100%-80 135" type="text" style="RightLabelText" ghost="true">Water - Enable Reflections</object>
<object name="waterReflectionCheckbox" size="100%-56 115 100%-30 140" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.waterreflection) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.waterreflection = this.checked; </action>
</object>
<!-- Settings / Refraction -->
<object size="0 160 100%-80 185" type="text" style="RightLabelText" ghost="true">Water - Enable Refraction</object>
<object name="waterRefractionCheckbox" size="100%-56 165 100%-30 190" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 135 100%-80 160" type="text" style="RightLabelText" ghost="true">Water - Enable Refraction</object>
<object name="waterRefractionCheckbox" size="100%-56 140 100%-30 165" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.waterrefraction) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.waterrefraction = this.checked; </action>
</object>
<!-- Settings / Foam -->
<object size="0 185 100%-80 210" type="text" style="RightLabelText" ghost="true">Water - Enable Shore Foam</object>
<object name="waterFoamCheckbox" size="100%-56 190 100%-30 215" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 160 100%-80 185" type="text" style="RightLabelText" ghost="true">Water - Enable Shore Foam</object>
<object name="waterFoamCheckbox" size="100%-56 165 100%-30 190" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.waterfoam) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.waterfoam = this.checked; </action>
</object>
<!-- Settings / Waves -->
<object size="0 210 100%-80 235" type="text" style="RightLabelText" ghost="true">Water - Enable Shore Waves</object>
<object name="waterCoastalWavesCheckbox" size="100%-56 215 100%-30 240" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 185 100%-80 210" type="text" style="RightLabelText" ghost="true">Water - Enable Shore Waves</object>
<object name="waterCoastalWavesCheckbox" size="100%-56 190 100%-30 215" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.watercoastalwaves) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.watercoastalwaves = this.checked; </action>
</object>
<!-- Settings / Shadows -->
<object size="0 235 100%-80 260" type="text" style="RightLabelText" ghost="true">Water - Use Surface Shadows</object>
<object name="waterShadowsCheckbox" size="100%-56 240 100%-30 265" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 210 100%-80 235" type="text" style="RightLabelText" ghost="true">Water - Use Surface Shadows</object>
<object name="waterShadowsCheckbox" size="100%-56 215 100%-30 240" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.watershadow) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.watershadow = this.checked; </action>
</object>
<!-- Settings / Particles -->
<object size="0 260 100%-80 285" type="text" style="RightLabelText" ghost="true">Enable Particles</object>
<object name="particlesCheckbox" size="100%-56 265 100%-30 290" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 235 100%-80 260" type="text" style="RightLabelText" ghost="true">Enable Particles</object>
<object name="particlesCheckbox" size="100%-56 240 100%-30 265" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.particles) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.particles = this.checked;</action>
</object>
<!-- Settings / Unit Silhouettes -->
<object size="0 285 100%-80 310" type="text" style="RightLabelText" ghost="true">Enable Unit Silhouettes</object>
<object name="silhouettesCheckbox" size="100%-56 290 100%-30 315" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 260 100%-80 285" type="text" style="RightLabelText" ghost="true">Enable Unit Silhouettes</object>
<object name="silhouettesCheckbox" size="100%-56 265 100%-30 290" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Load">if (renderer.silhouettes) this.checked = true; else this.checked = false;</action>
<action on="Press">renderer.silhouettes = this.checked;</action>
</object>
<!-- Settings / Music-->
<object size="0 310 100%-80 335" type="text" style="RightLabelText" ghost="true">Enable Music</object>
<object size="100%-56 315 100%-30 340" type="checkbox" style="StoneCrossBox" checked="true">
<object size="0 285 100%-80 310" type="text" style="RightLabelText" ghost="true">Enable Music</object>
<object size="100%-56 290 100%-30 315" type="checkbox" style="StoneCrossBox" checked="true">
<action on="Press">if (this.checked) global.music.start(); else global.music.stop();</action>
</object>
<!-- Settings / Dev Overlay -->
<object size="0 335 100%-80 360" type="text" style="RightLabelText" ghost="true">Developer Overlay</object>
<object size="100%-56 340 100%-30 365" type="checkbox" style="StoneCrossBox" checked="false">
<object size="0 310 100%-80 335" type="text" style="RightLabelText" ghost="true">Developer Overlay</object>
<object size="100%-56 315 100%-30 340" type="checkbox" style="StoneCrossBox" checked="false">
<action on="Press">toggleDeveloperOverlay();</action>
</object>
</object>

View File

@ -24,10 +24,8 @@ varying vec3 worldPos;
varying float waterDepth;
uniform sampler2D normalMap;
uniform sampler2D normalMap2;
#if USE_BINORMALS
uniform sampler2D normalMap2;
#endif
#if USE_REFLECTION
uniform sampler2D reflectionMap;
#endif
@ -118,10 +116,8 @@ void main()
vec3 ww = texture2D(normalMap, (gl_TexCoord[0].st) * mix(2.0,0.8,waviness/10.0) +gl_TexCoord[0].zw).xzy;
#if USE_NORMALS
#if USE_BINORMALS
vec3 ww2 = texture2D(normalMap2, (gl_TexCoord[0].st) * mix(2.0,0.8,waviness/10.0) +gl_TexCoord[0].zw).xzy;
ww = mix(ww, ww2, mod(time * 60.0, 8.0) / 8.0);
#endif
vec3 ww2 = texture2D(normalMap2, (gl_TexCoord[0].st) * mix(2.0,0.8,waviness/10.0) +gl_TexCoord[0].zw).xzy;
ww = mix(ww, ww2, mod(time * 60.0, 8.0) / 8.0);
#if USE_WAVES
vec3 waves = texture2D(waveTex, gl_FragCoord.xy/screenSize).rbg - vec3(0.5,0.5,0.5);

View File

@ -40,7 +40,6 @@ bool g_Shadows = false;
bool g_ShadowPCF = false;
bool g_WaterNormal = false;
bool g_WaterBinormal = false;
bool g_WaterRealDepth = false;
bool g_WaterFoam = false;
bool g_WaterCoastalWaves = false;
@ -91,9 +90,6 @@ static void LoadGlobals()
CFG_GET_USER_VAL("shadowpcf", Bool, g_ShadowPCF);
CFG_GET_USER_VAL("waternormals",Bool, g_WaterNormal);
CFG_GET_USER_VAL("waterbinormals",Bool, g_WaterBinormal);
if (g_WaterBinormal && !g_WaterNormal)
g_WaterBinormal = false;
CFG_GET_USER_VAL("waterrealdepth",Bool, g_WaterRealDepth);
CFG_GET_USER_VAL("waterfoam",Bool, g_WaterFoam);
CFG_GET_USER_VAL("watercoastalwaves",Bool, g_WaterCoastalWaves);

View File

@ -52,8 +52,6 @@ extern bool g_Shadows;
// Use real normals for ocean-wave rendering, instead of applying them as a flat texture.
extern bool g_WaterNormal;
// Use interpolated normals, smoother. Requires g_WaterNormal.
extern bool g_WaterBinormal;
// Use real depth for water rendering.
extern bool g_WaterRealDepth;
// Show foam near the shores depending on waviness.

View File

@ -576,7 +576,6 @@ static void InitRenderer()
g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWS, g_Shadows);
g_Renderer.SetOptionBool(CRenderer::OPT_WATERNORMAL, g_WaterNormal);
g_Renderer.SetOptionBool(CRenderer::OPT_WATERBINORMAL, g_WaterBinormal);
g_Renderer.SetOptionBool(CRenderer::OPT_WATERREALDEPTH, g_WaterRealDepth);
g_Renderer.SetOptionBool(CRenderer::OPT_WATERFOAM, g_WaterFoam);
g_Renderer.SetOptionBool(CRenderer::OPT_WATERCOASTALWAVES, g_WaterCoastalWaves);

View File

@ -124,13 +124,7 @@ void SetDisableShadowPCF(void* UNUSED(cbdata), bool disabled)
void SetDisableFancyWater(void* UNUSED(cbdata), bool disabled)
{
if (!IsOverridden("waternormals"))
{
g_WaterNormal = !disabled;
if (!g_WaterNormal)
g_WaterBinormal = false;
}
if (!IsOverridden("waterbinormals"))
g_WaterBinormal = !disabled;
if (!IsOverridden("waterrealdepth"))
g_WaterRealDepth = !disabled;
if (!IsOverridden("waterfoam"))

View File

@ -469,7 +469,6 @@ CRenderer::CRenderer()
AddLocalProperty(L"particles", &m_Options.m_Particles, false);
AddLocalProperty(L"waternormal", &m_Options.m_WaterNormal, false);
AddLocalProperty(L"waterbinormal", &m_Options.m_WaterBinormal, false);
AddLocalProperty(L"waterrealdepth", &m_Options.m_WaterRealDepth, false);
AddLocalProperty(L"waterreflection", &m_Options.m_WaterReflection, false);
AddLocalProperty(L"waterrefraction", &m_Options.m_WaterRefraction, false);
@ -691,9 +690,6 @@ void CRenderer::SetOptionBool(enum Option opt,bool value)
case OPT_WATERNORMAL:
m_Options.m_WaterNormal = value;
break;
case OPT_WATERBINORMAL:
m_Options.m_WaterBinormal = value;
break;
case OPT_WATERREALDEPTH:
m_Options.m_WaterRealDepth = value;
break;
@ -742,8 +738,6 @@ bool CRenderer::GetOptionBool(enum Option opt) const
return m_Options.m_Shadows;
case OPT_WATERNORMAL:
return m_Options.m_WaterNormal;
case OPT_WATERBINORMAL:
return m_Options.m_WaterBinormal;
case OPT_WATERREALDEPTH:
return m_Options.m_WaterRealDepth;
case OPT_WATERFOAM:
@ -1487,10 +1481,27 @@ void CRenderer::RenderSubmissions()
PROFILE3_GPU("water scissor");
SScreenRect dirty;
dirty.x1 = std::min(reflectionScissor.x1, refractionScissor.x1);
dirty.y1 = std::min(reflectionScissor.y1, refractionScissor.y1);
dirty.x2 = std::max(reflectionScissor.x2, refractionScissor.x2);
dirty.y2 = std::max(reflectionScissor.y2, refractionScissor.y2);
if (m_Options.m_WaterRefraction && m_Options.m_WaterReflection)
{
dirty.x1 = reflectionScissor.x1;
dirty.y1 = reflectionScissor.y1;
dirty.x2 = reflectionScissor.x2;
dirty.y2 = reflectionScissor.y2;
}
else if (m_Options.m_WaterRefraction)
{
dirty.x1 = refractionScissor.x1;
dirty.y1 = refractionScissor.y1;
dirty.x2 = refractionScissor.x2;
dirty.y2 = refractionScissor.y2;
}
else
{
dirty.x1 = reflectionScissor.x1;
dirty.y1 = reflectionScissor.y1;
dirty.x2 = reflectionScissor.x2;
dirty.y2 = reflectionScissor.y2;
}
if (dirty.x1 < dirty.x2 && dirty.y1 < dirty.y2)
{
glEnable(GL_SCISSOR_TEST);

View File

@ -81,7 +81,6 @@ public:
OPT_NOVBO,
OPT_SHADOWS,
OPT_WATERNORMAL,
OPT_WATERBINORMAL,
OPT_WATERREALDEPTH,
OPT_WATERFOAM,
OPT_WATERCOASTALWAVES,
@ -132,7 +131,6 @@ public:
bool m_Shadows;
bool m_WaterNormal;
bool m_WaterBinormal;
bool m_WaterRealDepth;
bool m_WaterFoam;
bool m_WaterCoastalWaves;

View File

@ -659,8 +659,6 @@ bool TerrainRenderer::RenderFancyWater(const CShaderDefines& context, ShadowMap*
{
if(WaterMgr->m_WaterNormal)
defines.Add("USE_NORMALS","1");
if(WaterMgr->m_WaterBinormal)
defines.Add("USE_BINORMALS","1");
if(WaterMgr->m_WaterRealDepth)
defines.Add("USE_REAL_DEPTH","1");
if(WaterMgr->m_WaterFoam)
@ -823,8 +821,8 @@ bool TerrainRenderer::RenderFancyWater(const CShaderDefines& context, ShadowMap*
CVector3D camPos = camera.m_Orientation.GetTranslation();
m->fancyWaterShader->BindTexture("normalMap", WaterMgr->m_NormalMap[curTex]);
if (WaterMgr->m_WaterBinormal)
m->fancyWaterShader->BindTexture("normalMap2", WaterMgr->m_NormalMap[nexTex]);
m->fancyWaterShader->BindTexture("normalMap2", WaterMgr->m_NormalMap[nexTex]);
if (WaterMgr->m_WaterFoam || WaterMgr->m_WaterCoastalWaves)
{
m->fancyWaterShader->BindTexture("Foam", WaterMgr->m_Foam);

View File

@ -79,7 +79,6 @@ WaterManager::WaterManager()
m_OtherInfoTex = NULL;
m_WaterNormal = false;
m_WaterBinormal = false;
m_WaterRealDepth = false;
m_WaterFoam = false;
m_WaterCoastalWaves = false;
@ -462,7 +461,7 @@ void WaterManager::CreateSuperfancyInfo()
// okaaaaaay. Got a square. Check for proximity.
for (unsigned long i = 0; i < waveSquares.size(); i++)
{
if ( CVector2D(waveSquares[i]-squarePos).LengthSquared() < 100) {
if ( CVector2D(waveSquares[i]-squarePos).LengthSquared() < 80) {
enter = 0;
break;
}
@ -551,10 +550,6 @@ void WaterManager::updateQuality()
m_WaterNormal = g_Renderer.GetOptionBool(CRenderer::OPT_WATERNORMAL);
m_NeedsReloading = true;
}
if (g_Renderer.GetOptionBool(CRenderer::OPT_WATERBINORMAL) != m_WaterBinormal) {
m_WaterBinormal = g_Renderer.GetOptionBool(CRenderer::OPT_WATERBINORMAL);
m_NeedsReloading = true;
}
if (g_Renderer.GetOptionBool(CRenderer::OPT_WATERREALDEPTH) != m_WaterRealDepth) {
m_WaterRealDepth = g_Renderer.GetOptionBool(CRenderer::OPT_WATERREALDEPTH);
m_NeedsReloading = true;
@ -587,8 +582,6 @@ bool WaterManager::WillRenderFancyWater()
{
if (!g_Renderer.GetCapabilities().m_FragmentShader)
return false;
if (g_Renderer.GetRenderPath() == 1)
return false;
if (!m_RenderWater)
return false;
return true;

View File

@ -68,7 +68,6 @@ public:
// Those variables register the current quality level. If there is a change, I have to recompile the shader.
bool m_WaterNormal;
bool m_WaterBinormal;
bool m_WaterRealDepth;
bool m_WaterFoam;
bool m_WaterCoastalWaves;

View File

@ -33,6 +33,7 @@ public:
{
componentManager.SubscribeToMessageType(MT_Interpolate);
componentManager.SubscribeToMessageType(MT_RenderSubmit);
componentManager.SubscribeToMessageType(MT_TerrainChanged);
}
DEFAULT_COMPONENT_ALLOCATOR(WaterManager)
@ -85,6 +86,17 @@ public:
g_Renderer.GetWaterManager()->m_WaterHeight = m_WaterHeight.ToFloat();
break;
}
case MT_TerrainChanged:
{
// Tell the renderer to redraw the map.
if (CRenderer::IsInitialised())
{
g_Renderer.GetWaterManager()->m_NeedsFullReloading = true;
g_Renderer.GetWaterManager()->m_NeedsReloading = true;
g_Renderer.GetWaterManager()->m_TerrainChangeThisTurn = true;
}
break;
}
}
}