diff --git a/src/pipeline/wmo_loader.cpp b/src/pipeline/wmo_loader.cpp index 8e5acb8..7c1453d 100644 --- a/src/pipeline/wmo_loader.cpp +++ b/src/pipeline/wmo_loader.cpp @@ -428,6 +428,9 @@ bool WMOLoader::loadGroup(const std::vector& groupData, // Read MOGP header uint32_t mogpOffset = offset; group.flags = read(groupData, mogpOffset); + bool isInterior = (group.flags & 0x2000) != 0; + core::Logger::getInstance().info(" Group flags: 0x", std::hex, group.flags, std::dec, + (isInterior ? " (INTERIOR)" : " (exterior)")); group.boundingBoxMin.x = read(groupData, mogpOffset); group.boundingBoxMin.y = read(groupData, mogpOffset); group.boundingBoxMin.z = read(groupData, mogpOffset); @@ -490,11 +493,16 @@ bool WMOLoader::loadGroup(const std::vector& groupData, } else if (subChunkId == 0x4D4F4E52) { // MONR - Normals uint32_t normalCount = subChunkSize / 12; + core::Logger::getInstance().info(" MONR: ", normalCount, " normals for ", group.vertices.size(), " vertices"); for (uint32_t i = 0; i < normalCount && i < group.vertices.size(); i++) { group.vertices[i].normal.x = read(groupData, mogpOffset); group.vertices[i].normal.y = read(groupData, mogpOffset); group.vertices[i].normal.z = read(groupData, mogpOffset); } + if (normalCount > 0 && !group.vertices.empty()) { + const auto& n = group.vertices[0].normal; + core::Logger::getInstance().debug(" First normal: (", n.x, ", ", n.y, ", ", n.z, ")"); + } } else if (subChunkId == 0x4D4F5456) { // MOTV - Texture coords // Update texture coords for existing vertices @@ -511,6 +519,7 @@ bool WMOLoader::loadGroup(const std::vector& groupData, else if (subChunkId == 0x4D4F4356) { // MOCV - Vertex colors // Update vertex colors uint32_t colorCount = subChunkSize / 4; + core::Logger::getInstance().info(" MOCV: ", colorCount, " vertex colors for ", group.vertices.size(), " vertices"); for (uint32_t i = 0; i < colorCount && i < group.vertices.size(); i++) { uint8_t b = read(groupData, mogpOffset); uint8_t g = read(groupData, mogpOffset); @@ -518,6 +527,10 @@ bool WMOLoader::loadGroup(const std::vector& groupData, uint8_t a = read(groupData, mogpOffset); group.vertices[i].color = glm::vec4(r/255.0f, g/255.0f, b/255.0f, a/255.0f); } + if (colorCount > 0 && !group.vertices.empty()) { + const auto& c = group.vertices[0].color; + core::Logger::getInstance().debug(" First color: (", c.r, ", ", c.g, ", ", c.b, ", ", c.a, ")"); + } } else if (subChunkId == 0x4D4F4241) { // MOBA - Batches // SMOBatch structure (24 bytes): diff --git a/src/rendering/wmo_renderer.cpp b/src/rendering/wmo_renderer.cpp index a233119..cba38be 100644 --- a/src/rendering/wmo_renderer.cpp +++ b/src/rendering/wmo_renderer.cpp @@ -803,7 +803,7 @@ void WMORenderer::render(const Camera& camera, const glm::mat4& view, const glm: shader->setUniform("uLightDir", glm::vec3(-0.3f, -0.7f, -0.6f)); // Default sun direction shader->setUniform("uLightColor", glm::vec3(1.5f, 1.4f, 1.3f)); shader->setUniform("uSpecularIntensity", 0.5f); - shader->setUniform("uAmbientColor", glm::vec3(0.4f, 0.4f, 0.5f)); + shader->setUniform("uAmbientColor", glm::vec3(0.55f, 0.55f, 0.6f)); shader->setUniform("uFogColor", fogColor); shader->setUniform("uFogStart", fogStart); shader->setUniform("uFogEnd", fogEnd);