diff --git a/src/graphics/render/ModelBatch.cpp b/src/graphics/render/ModelBatch.cpp index 6ade352a8..2e056efc9 100644 --- a/src/graphics/render/ModelBatch.cpp +++ b/src/graphics/render/ModelBatch.cpp @@ -48,14 +48,23 @@ ModelBatch::~ModelBatch() { } void ModelBatch::test(glm::vec3 pos, glm::vec3 size) { + glm::vec3 gpos = combined * glm::vec4(pos, 1.0f); + light_t light = chunks->getLight(gpos.x, gpos.y, gpos.z); + glm::vec4 lights ( + Lightmap::extract(light, 0) / 15.0f, + Lightmap::extract(light, 1) / 15.0f, + Lightmap::extract(light, 2) / 15.0f, + Lightmap::extract(light, 3) / 15.0f + ); + float time = static_cast(Window::time()); pushMatrix(glm::translate(glm::mat4(1.0f), pos)); pushMatrix(glm::rotate(glm::mat4(1.0f), glm::sin(time*7*0.1f), glm::vec3(0,1,0))); pushMatrix(glm::rotate(glm::mat4(1.0f), glm::sin(time*11*0.1f), glm::vec3(1,0,0))); pushMatrix(glm::rotate(glm::mat4(1.0f), glm::sin(time*17*0.1f), glm::vec3(0,0,1))); pushMatrix(glm::translate(glm::mat4(1.0f), glm::vec3(0, glm::sin(time*2), 0))); - box({}, size); - box({1.5f,0,0}, size*0.5f); + box({}, size, lights); + box({1.5f,0,0}, size*0.5f, lights); popMatrix(); popMatrix(); popMatrix(); @@ -63,19 +72,10 @@ void ModelBatch::test(glm::vec3 pos, glm::vec3 size) { popMatrix(); } -void ModelBatch::box(glm::vec3 pos, glm::vec3 size) { +void ModelBatch::box(glm::vec3 pos, glm::vec3 size, glm::vec4 lights) { if (index + 36 < capacity*VERTEX_SIZE) { flush(); } - glm::vec3 gpos = combined * glm::vec4(pos, 1.0f); - light_t light = chunks->getLight(gpos.x, gpos.y, gpos.z); - glm::vec4 lights ( - Lightmap::extract(light, 0) / 15.0f, - Lightmap::extract(light, 1) / 15.0f, - Lightmap::extract(light, 2) / 15.0f, - Lightmap::extract(light, 3) / 15.0f - ); - plane(pos+Z*size, X*size, Y*size, Z, lights); plane(pos-Z*size, -X*size, Y*size, -Z, lights); diff --git a/src/graphics/render/ModelBatch.hpp b/src/graphics/render/ModelBatch.hpp index 8c791fc0d..3028dc0ec 100644 --- a/src/graphics/render/ModelBatch.hpp +++ b/src/graphics/render/ModelBatch.hpp @@ -41,7 +41,7 @@ class ModelBatch { uint32_t integer; } compressed; - compressed.integer = (static_cast(light.r * 255) & 0xff) << 24; + compressed.integer = (static_cast(light.r * 255) & 0xff) << 24; compressed.integer |= (static_cast(light.g * 255) & 0xff) << 16; compressed.integer |= (static_cast(light.b * 255) & 0xff) << 8; compressed.integer |= (static_cast(light.a * 255) & 0xff); @@ -49,12 +49,12 @@ class ModelBatch { buffer[index++] = compressed.floating; } - inline void plane(glm::vec3 pos, glm::vec3 right, glm::vec3 up, glm::vec3 norm, glm::vec4 light) { + inline void plane(glm::vec3 pos, glm::vec3 right, glm::vec3 up, glm::vec3 norm, glm::vec4 lights) { norm = rotation * norm; float d = glm::dot(norm, SUN_VECTOR); d = 0.8f + d * 0.2f; - auto color = light * d; + auto color = lights * d; vertex(pos-right-up, {0,0}, color); vertex(pos+right-up, {1,0}, color); @@ -71,7 +71,7 @@ class ModelBatch { void pushMatrix(glm::mat4 matrix); void popMatrix(); - void box(glm::vec3 pos, glm::vec3 size); + void box(glm::vec3 pos, glm::vec3 size, glm::vec4 lights); void test(glm::vec3 pos, glm::vec3 size); void flush();