1
0
forked from 0ad/0ad

Fix random maps for my water changes. Fix the replay mode after I had broken it. Fix an occasional crash (that might have crashed Atlas, need someone to check).

Improve debugging slightly in case of framebuffer errors. Fix a few
style issues.

This was SVN commit r15486.
This commit is contained in:
wraitii 2014-07-04 09:03:21 +00:00
parent 326290463e
commit 991d5bbd63
33 changed files with 34 additions and 85 deletions

View File

@ -455,7 +455,6 @@ setWaterColour(0, 0.501961, 1);
setWaterTint(0.501961, 1, 1);
setWaterWaviness(10);
setWaterMurkiness(0.49);
setWaterReflectionTintStrength(0.0);
setFogFactor(0.3);
setFogThickness(0.25);

View File

@ -441,10 +441,8 @@ setSunRotation(randFloat(0, TWO_PI));
setSunElevation(randFloat(PI/ 5, PI / 3));
setWaterColour(0.0, 0.047, 0.286); // dark majestic blue
setWaterTint(0.471, 0.776, 0.863); // light blue
setWaterReflectionTint(0.0, 0.047, 0.286);
setWaterMurkiness(0.82);
setWaterWaviness(2);
setWaterReflectionTintStrength(0.15);
// Export map data
ExportMap();

View File

@ -720,10 +720,8 @@ setSunRotation(randFloat(0, TWO_PI));
setSunElevation(randFloat(PI/ 5, PI / 3));
setWaterColour(0.0, 0.047, 0.286); // dark majestic blue
setWaterTint(0.471, 0.776, 0.863); // light blue
setWaterReflectionTint(0.0, 0.047, 0.286);
setWaterMurkiness(0.72);
setWaterWaviness(3);
setWaterReflectionTintStrength(0.15);
// Export map data

View File

@ -394,10 +394,8 @@ createStragglerTrees(types, avoidClasses(clWater, 1, clForest, 1, clHill, 1, clP
setSkySet("cirrus");
setWaterColour(0.447, 0.412, 0.322); // muddy brown
setWaterTint(0.447, 0.412, 0.322); // muddy brown
setWaterReflectionTint(0.447, 0.412, 0.322); // muddy brown
setWaterMurkiness(1.0);
setWaterWaviness(2.0);
setWaterReflectionTintStrength(0.677);
setFogThickness(0.25);
setFogFactor(0.4);

View File

@ -396,7 +396,6 @@ setWaterColour(0, 0.501961, 1);
setWaterTint(0.501961, 1, 1);
setWaterWaviness(10);
setWaterMurkiness(0.49);
setWaterReflectionTintStrength(0.0);
setFogFactor(0.3);
setFogThickness(0.25);

View File

@ -622,9 +622,7 @@ setTerrainAmbientColour(0.564706,0.543726,0.419608);
setUnitsAmbientColour(0.53,0.55,0.45);
setWaterColour(0.2,0.294,0.49);
setWaterTint(0.208, 0.659, 0.925);
setWaterReflectionTint(0.2, 0.6, 0.9);
setWaterMurkiness(0.72);
setWaterReflectionTintStrength(0.1);
setWaterWaviness(4.5);
// Export map data
ExportMap();

View File

@ -578,9 +578,7 @@ createObjectGroups(group, 0,
setSkySet("sunny");
setWaterColour(0.2,0.294,0.49);
setWaterTint(0.208, 0.659, 0.925);
setWaterReflectionTint(0.2, 0.6, 0.9);
setWaterMurkiness(0.72);
setWaterReflectionTintStrength(0.1);
setWaterWaviness(3.5);
// Export map data

View File

@ -496,10 +496,8 @@ createStragglerTrees(types, avoidClasses(clWater, 1, clForest, 1, clHill, 1, clP
setSkySet("cirrus");
setWaterColour(0.114, 0.192, 0.463);
setWaterTint(0.255, 0.361, 0.651);
setWaterReflectionTint(0.255, 0.361, 0.651);
setWaterWaviness(10);
setWaterMurkiness(0.83);
setWaterReflectionTintStrength(0.05);
setFogThickness(0.35);
setFogFactor(0.55);

View File

@ -386,10 +386,8 @@ createStragglerTrees(types, avoidClasses(clWater, 1, clForest, 1, clHill, 1, clP
setSkySet("sunny");
setWaterColour(0.157, 0.149, 0.443);
setWaterTint(0.443,0.42,0.824);
setWaterReflectionTint(0.863,0.667,0.608);
setWaterWaviness(2.5);
setWaterMurkiness(0.83);
setWaterReflectionTintStrength(0.35);
setFogFactor(0.35);
setFogThickness(0.22);

View File

@ -438,10 +438,8 @@ createStragglerTrees(types, [avoidClasses(clWater, 1, clForest, 1, clHill, 1, cl
setSkySet("cumulus");
setWaterColour(0.443,0.412,0.322);
setWaterTint(0.647,0.82,0.949);
setWaterReflectionTint(0.286,0.58,0.855);
setWaterWaviness(10);
setWaterMurkiness(0.70);
setWaterReflectionTintStrength(0.25);
setFogFactor(0.3);
setFogThickness(0.25);

View File

@ -555,10 +555,8 @@ createObjectGroups(group, 0,
setSkySet("cirrus");
setWaterColour(0.114, 0.192, 0.463);
setWaterTint(0.255, 0.361, 0.651);
setWaterReflectionTint(0.255, 0.361, 0.651);
setWaterWaviness(5.5);
setWaterMurkiness(0.83);
setWaterReflectionTintStrength(0.05);
// Export map data
ExportMap();

View File

@ -474,10 +474,8 @@ setSunElevation(PI/ 3);
setWaterColour(0.524,0.734,0.839);
setWaterTint(0.369,0.765,0.745);
setWaterReflectionTint(1,1,1);
setWaterWaviness(1.5);
setWaterMurkiness(0.35);
setWaterReflectionTintStrength(0.0);
setFogFactor(0.4);
setFogThickness(0.2);

View File

@ -635,10 +635,8 @@ createObjectGroups(group, 0,
setSkySet("sunny");
setWaterColour(0.024,0.212,0.024);
setWaterTint(0.133, 0.725,0.855);
setWaterReflectionTint(0.31,0.769,0.894);
setWaterWaviness(3);
setWaterMurkiness(0.8);
setWaterReflectionTintStrength(0.1);
// Export map data
ExportMap();

View File

@ -513,10 +513,8 @@ createObjectGroups(group, 0,
setSkySet("cirrus");
setWaterColour(0.443,0.412,0.322);
setWaterTint(0.647,0.82,0.949);
setWaterReflectionTint(0.286,0.58,0.855);
setWaterWaviness(2.5);
setWaterMurkiness(0.80);
setWaterReflectionTintStrength(0.25);
// Export map data
ExportMap();

View File

@ -470,10 +470,8 @@ createObjectGroups(group, 0,
setWaterColour(0, 0.227, 0.843);
setWaterTint(0, 0.545, 0.859);
setWaterReflectionTint(1, 1, 1);
setWaterWaviness(1);
setWaterMurkiness(0.75);
setWaterReflectionTintStrength(0.0);
// Export map data
ExportMap();

View File

@ -411,10 +411,8 @@ setSunElevation(PI/ 6);
setWaterColour(0.3, 0.347, 0.386); // dark majestic blue
setWaterTint(0.171, 0.236, 0.263); // light blue
setWaterReflectionTint(0.0, 0.047, 0.086);
setWaterMurkiness(0.82);
setWaterWaviness(3);
setWaterReflectionTintStrength(0.15);
setFogFactor(0.95);
setFogThickness(0.09);

View File

@ -436,10 +436,8 @@ setSunRotation(PI/3);
setSunElevation(0.5);
setWaterColour(0, 0.227, 0.843);
setWaterTint(0, 0.545, 0.859);
setWaterReflectionTint(1, 1, 1);
setWaterWaviness(1);
setWaterMurkiness(0.5);
setWaterReflectionTintStrength(0.0);
setTerrainAmbientColour(0.45, 0.5, 0.6);
setUnitsAmbientColour(0.501961, 0.501961, 0.501961);

View File

@ -506,10 +506,8 @@ setSkySet("sunny");
setSunColour(0.917, 0.828, 0.734);
setWaterColour(0.263,0.314,0.631);
setWaterTint(0.133, 0.725,0.855);
setWaterReflectionTint(0.31,0.769,0.894);
setWaterWaviness(3);
setWaterMurkiness(0.8);
setWaterReflectionTintStrength(0.1);
setTerrainAmbientColour(0.57, 0.58, 0.55);
setUnitsAmbientColour(0.447059, 0.509804, 0.54902);

View File

@ -797,10 +797,8 @@ setSunRotation(randFloat(0, TWO_PI));
setUnitsAmbientColour(0.4,0.4,0.4);
setWaterColour(0.114, 0.192, 0.463);
setWaterTint(0.255, 0.361, 0.651);
setWaterReflectionTint(0.255, 0.361, 0.651);
setWaterWaviness(5.5);
setWaterMurkiness(0.83);
setWaterReflectionTintStrength(0.05);
//}
// Export map data

View File

@ -471,10 +471,8 @@ createObjectGroups(group, 0,
setSkySet("cirrus");
setWaterColour(0.753,0.635,0.345); // muddy brown
setWaterTint(0.161,0.514,0.635); // clear blue for blueness
setWaterReflectionTint(0.561,0.435,0.196); // muddy brown
setWaterMurkiness(0.8);
setWaterWaviness(0.8);
setWaterReflectionTintStrength(0.4);
setFogThickness(0.25);
setFogFactor(0.6);

View File

@ -49,6 +49,12 @@ function setWaterColour(r, g, b)
g_Environment.Water.WaterBody.Colour = { "r" : r, "g" : g, "b" : b, "a" : 0};
}
// Set water tint RGB (0,1)
function setWaterTint(r, g, b)
{
g_Environment.Water.WaterBody.Tint = { "r" : r, "g" : g, "b" : b, "a" : 0};
}
// Set water height
function setWaterHeight(h)
{
@ -68,25 +74,18 @@ function setWaterMurkiness(m)
g_Environment.Water.WaterBody.Murkiness = m;
}
// Set water tint RGB (0,1)
function setWaterTint(r, g, b)
// Set water type
function setWaterType(m)
{
g_Environment.Water.WaterBody.Tint = { "r" : r, "g" : g, "b" : b, "a" : 0};
g_Environment.Water.WaterBody.Type = m;
}
// Set water reflection tint RGB (0,1)
function setWaterReflectionTint(r, g, b)
// Set wind angle for water (thus direction of waves)
function setWindAngle(m)
{
g_Environment.Water.WaterBody.WaterReflectionTint = { "r" : r, "g" : g, "b" : b, "a" : 0};
g_Environment.Water.WaterBody.WindAngle = m;
}
// Set water reflection tint strength (0,1)
function setWaterReflectionTintStrength(s)
{
g_Environment.Water.WaterBody.WaterReflectionTintStrength = s;
}
// Set fog factor (0,1)
function setFogFactor(s)
{

View File

@ -12,14 +12,13 @@ var g_Environment = {
UnitsAmbientColour: {r: 0.501961, g: 0.501961, b: 0.501961, a: 0},
Water: {
WaterBody: {
Type: "default",
Type: "ocean",
Colour: {r: 0.3, g: 0.35, b: 0.7, a: 0},
Tint: {r: 0.28, g: 0.3, b: 0.59, a: 0},
Height: 5,
Waviness: 8,
Murkiness: 0.45,
Tint: {r: 0.28, g: 0.3, b: 0.59, a: 0},
ReflectionTint: {r: 0.28, g: 0.3, b: 0.59, a: 0},
ReflectionTintStrength: 0.0
WindAngle: 0.0
}
},
Fog: {

File diff suppressed because one or more lines are too long

View File

@ -363,10 +363,8 @@ setSkySet("sunny");
setSunColour(0.746, 0.718, 0.539);
setWaterColour(0, 0.227, 0.843);
setWaterTint(0, 0.545, 0.859);
setWaterReflectionTint(1, 1, 1);
setWaterWaviness(1);
setWaterMurkiness(0.5);
setWaterReflectionTintStrength(0.0);
// Export map data
ExportMap();

View File

@ -558,10 +558,8 @@ setSunRotation(randFloat(0, TWO_PI));
setSunElevation(randFloat(PI/ 5, PI / 4));
setWaterColour(0.478,0.42,0.384); // greyish
setWaterTint(0.58,0.22,0.067); // reddish
setWaterReflectionTint(0.502,0.286,0.267); // reddish
setWaterMurkiness(0.87);
setWaterWaviness(0.5);
setWaterReflectionTintStrength(0.35);
// Export map data

View File

@ -26,8 +26,6 @@ setFogThickness(0.19);
// water
setWaterColour(0.501961, 0.501961, 0.501961);
setWaterTint(0.25098, 0.501961, 0.501961);
setWaterReflectionTint(0.501961, 0.501961, 0.25098);
setWaterReflectionTintStrength(0.4);
setWaterWaviness(0.3);
setWaterMurkiness(0.75);

View File

@ -415,9 +415,7 @@ setSunRotation(randFloat(0, TWO_PI));
setSunColour(0.746, 0.718, 0.539);
setWaterColour(0.292, 0.347, 0.691);
setWaterTint(0.550, 0.543, 0.437);
setWaterReflectionTint(0.562, 0.511, 0.425);
setWaterMurkiness(0.83);
setWaterReflectionTintStrength(0.377);
setFogColor(0.8, 0.76, 0.61);
setFogThickness(0.2);

View File

@ -606,10 +606,8 @@ setSkySet("sunny");
setSunColour(0.711, 0.746, 0.574);
setWaterColour(0.541,0.506,0.416);
setWaterTint(0.694,0.592,0.522);
setWaterReflectionTint(0.447,0.369,0.31);
setWaterMurkiness(1);
setWaterWaviness(2.5);
setWaterReflectionTintStrength(0.55);
// Export map data
ExportMap();

View File

@ -249,7 +249,7 @@ void CMapWriter::WriteXML(const VfsPath& filename,
XML_Element("Water");
{
XML_Element("WaterBody");
CmpPtr<ICmpWaterManager> cmpWaterManager(*pSimulation2, SYSTEM_ENTITY);
CmpPtr<ICmpWaterManager> cmpWaterManager(sim, SYSTEM_ENTITY);
ENSURE(cmpWaterManager);
XML_Setting("Type", pWaterMan->m_WaterType);
{

View File

@ -167,8 +167,8 @@ void CGame::RegisterInit(const CScriptValRooted& attribs, const std::string& sav
m_World->RegisterInit(mapFile, settings, m_PlayerID);
}
RegMemFun(g_Renderer.GetSingletonPtr()->GetWaterManager(), &WaterManager::LoadWaterTextures, L"LoadWaterTextures", 80);
if (m_GameView)
RegMemFun(g_Renderer.GetSingletonPtr()->GetWaterManager(), &WaterManager::LoadWaterTextures, L"LoadWaterTextures", 80);
if (m_IsSavedGame)
RegMemFun(this, &CGame::LoadInitialState, L"Loading game", 1000);

View File

@ -1505,15 +1505,6 @@ void CRenderer::RenderSubmissions(const CBoundingBoxAligned& waterScissor)
dirty.x2 = std::max(dirty.x2, refractionScissor.x2);
dirty.y2 = std::max(dirty.y2, refractionScissor.y2);
}
/*if (dirty.x1 < dirty.x2 && dirty.y1 < dirty.y2)
{
glEnable(GL_SCISSOR_TEST);
glScissor(dirty.x1, dirty.y1, dirty.x2 - dirty.x1, dirty.y2 - dirty.y1);
glClearColor(m_ClearColor[0], m_ClearColor[1], m_ClearColor[2], m_ClearColor[3]);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
glDisable(GL_SCISSOR_TEST);
}*/
}
}

View File

@ -190,13 +190,17 @@ int WaterManager::LoadWaterTextures()
pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_ReflectionFbo);
pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, m_ReflectionTexture, 0);
pglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_FboDepthTexture, 0);
if (glGetError() != 0)
debug_warn(L"WaterManager.cpp::Refraction FBO failed to create");
m_RefractionFbo = 0;
pglGenFramebuffersEXT(1, &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_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, m_FboDepthTexture, 0);
if (glGetError() != 0)
debug_warn(L"WaterManager.cpp::Refraction FBO failed to create");
pglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
// Enable rendering, now that we've succeeded this far
@ -400,12 +404,12 @@ void WaterManager::RecomputeWindStrength()
// Draw on map. This is pretty slow.
//float width = 3.0f;
float length = 21.0f * (1.0f-baseLevel);
float length = 1.2f;//21.0f * (1.0f-baseLevel);
for (float y = 0; y < length; y += 0.6f)
//for (float x = -width*(y+1)/(length+1); x < width*(y+1)/(length+1); x += 0.5f)
{
int index = (j - y * windDir.Y)*m_MapSize + (i - y * windDir.X);
int index = clamp(j - y * windDir.Y,0.0f,(float)(m_MapSize-1))*m_MapSize + clamp(i - y * windDir.X,0.0f,(float)(m_MapSize-1));
m_WindStrength[index] = (0.5f+baseLevel*0.5f) * (1.0f-y/length) + y/length * 1.0f;
}
}

View File

@ -95,9 +95,12 @@ public:
virtual void RecomputeWaterData()
{
g_Renderer.GetWaterManager()->RecomputeBlurredNormalMap();
g_Renderer.GetWaterManager()->RecomputeDistanceHeightmap();
g_Renderer.GetWaterManager()->RecomputeWindStrength();
if (CRenderer::IsInitialised())
{
g_Renderer.GetWaterManager()->RecomputeBlurredNormalMap();
g_Renderer.GetWaterManager()->RecomputeDistanceHeightmap();
g_Renderer.GetWaterManager()->RecomputeWindStrength();
}
// Tell the terrain it'll need to recompute its cached render data
GetSimContext().GetTerrain().MakeDirty(RENDERDATA_UPDATE_VERTICES);
@ -110,7 +113,8 @@ public:
// Tell the terrain it'll need to recompute its cached render data
GetSimContext().GetTerrain().MakeDirty(RENDERDATA_UPDATE_VERTICES);
g_Renderer.GetWaterManager()->m_WaterHeight = h.ToFloat();
if (CRenderer::IsInitialised())
g_Renderer.GetWaterManager()->m_WaterHeight = h.ToFloat();
CMessageWaterChanged msg;
GetSimContext().GetComponentManager().BroadcastMessage(msg);