From 3760771ee5e56e1cdf55d8d96deb0469ab586230 Mon Sep 17 00:00:00 2001 From: Armin Burgmeier Date: Sat, 11 Jul 2009 12:36:53 +0200 Subject: [PATCH] Read material alpha components in the way clonk needs them --- planet/Worlds.c4f/Outset.c4s/Scenario.txt | 1 + standard/src/StdGL.cpp | 2 -- standard/src/StdMesh.cpp | 2 +- standard/src/StdMeshMaterial.cpp | 21 ++++++++++++--------- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/planet/Worlds.c4f/Outset.c4s/Scenario.txt b/planet/Worlds.c4f/Outset.c4s/Scenario.txt index c448eab34..a4d074c63 100755 --- a/planet/Worlds.c4f/Outset.c4s/Scenario.txt +++ b/planet/Worlds.c4f/Outset.c4s/Scenario.txt @@ -72,6 +72,7 @@ Liquid=Water-Smooth LiquidLevel=20,30,0,100 Layers=Rock=7;Rock=7;Gold=7;Granite=4;Water=5;Earth-earth=50;Earth-earth_dry=50 SkyScrollMode=2 +Animals=MONS=3 [Weather] Climate=40,10,0,100 diff --git a/standard/src/StdGL.cpp b/standard/src/StdGL.cpp index f471fbe03..aec891d04 100644 --- a/standard/src/StdGL.cpp +++ b/standard/src/StdGL.cpp @@ -314,7 +314,6 @@ void CStdGL::PerformMesh(StdMeshInstance &instance, float tx, float ty, float tw glPushMatrix(); glEnable(GL_DEPTH_TEST); glEnable(GL_NORMALIZE); - glDisable(GL_BLEND); // TODO: Invert alpha instead in material loader glEnable(GL_LIGHTING); // TODO: Zoom, ClrMod, ... @@ -375,7 +374,6 @@ void CStdGL::PerformMesh(StdMeshInstance &instance, float tx, float ty, float tw glDisable(GL_LIGHTING); glDisable(GL_DEPTH_TEST); glDisable(GL_NORMALIZE); - glEnable(GL_BLEND); glPopMatrix(); // TODO: glScissor, so that we only clear the area the mesh covered. diff --git a/standard/src/StdMesh.cpp b/standard/src/StdMesh.cpp index a1ba3f1f6..37233a7e5 100644 --- a/standard/src/StdMesh.cpp +++ b/standard/src/StdMesh.cpp @@ -22,7 +22,7 @@ StdMeshError::StdMeshError(const StdStrBuf& message, const char* file, unsigned int line) { - Buf.Format("%s[%u]: %s", file, line, message.getData()); + Buf.Format("%s:%u: %s", file, line, message.getData()); } // Helper class to load things from an XML file with error checking diff --git a/standard/src/StdMeshMaterial.cpp b/standard/src/StdMeshMaterial.cpp index 7700751ec..1aecb7475 100644 --- a/standard/src/StdMeshMaterial.cpp +++ b/standard/src/StdMeshMaterial.cpp @@ -22,7 +22,7 @@ StdMeshMaterialError::StdMeshMaterialError(const StdStrBuf& message, const char* file, unsigned int line) { - Buf.Format("%s[%u]: %s", file, line, message.getData()); + Buf.Format("%s:%u: %s", file, line, message.getData()); } enum Token @@ -253,10 +253,10 @@ void StdMeshMaterialTextureUnit::Load(StdMeshMaterialParserCtx& ctx) StdMeshMaterialPass::StdMeshMaterialPass() { - Ambient[0] = Ambient[1] = Ambient[2] = Ambient[3] = 1.0f; - Diffuse[0] = Diffuse[1] = Diffuse[2] = Diffuse[3] = 1.0f; - Specular[0] = Specular[1] = Specular[2] = Specular[3] = 0.0f; - Emissive[0] = Emissive[1] = Emissive[2] = Emissive[3] = 0.0f; + Ambient[0] = Ambient[1] = Ambient[2] = 1.0f; Ambient[3] = 0.0f; + Diffuse[0] = Diffuse[1] = Diffuse[2] = 1.0f; Diffuse[3] = 0.0f; + Specular[0] = Specular[1] = Specular[2] = 0.0f; Specular[3] = 1.0f; + Emissive[0] = Emissive[1] = Emissive[2] = 0.0f; Emissive[3] = 1.0f; Shininess = 0.0f; } @@ -278,14 +278,16 @@ void StdMeshMaterialPass::Load(StdMeshMaterialParserCtx& ctx) Ambient[0] = ctx.AdvanceFloat(); Ambient[1] = ctx.AdvanceFloat(); Ambient[2] = ctx.AdvanceFloat(); - ctx.AdvanceFloatOptional(Ambient[3]); + if(ctx.AdvanceFloatOptional(Ambient[3])) + Ambient[3] = 1 - Ambient[3]; } else if(token_name == "diffuse") { Diffuse[0] = ctx.AdvanceFloat(); Diffuse[1] = ctx.AdvanceFloat(); Diffuse[2] = ctx.AdvanceFloat(); - ctx.AdvanceFloatOptional(Diffuse[3]); + if(ctx.AdvanceFloatOptional(Diffuse[3])) + Diffuse[3] = 1 - Diffuse[3]; } else if(token_name == "specular") { @@ -299,7 +301,7 @@ void StdMeshMaterialPass::Load(StdMeshMaterialParserCtx& ctx) float shininess; if(ctx.AdvanceFloatOptional(shininess)) { - Specular[3] = specular3; + Specular[3] = 1 - specular3; Shininess = shininess; } else @@ -312,7 +314,8 @@ void StdMeshMaterialPass::Load(StdMeshMaterialParserCtx& ctx) Emissive[0] = ctx.AdvanceFloat(); Emissive[1] = ctx.AdvanceFloat(); Emissive[2] = ctx.AdvanceFloat(); - ctx.AdvanceFloatOptional(Emissive[3]); + if(ctx.AdvanceFloatOptional(Emissive[3])) + Emissive[3] = 1 - Emissive[3]; } else ctx.ErrorUnexpectedIdentifier(token_name);