update ModelBatch.box semantics

This commit is contained in:
MihailRis 2024-06-21 01:43:26 +03:00
parent a53dc7e0df
commit 916d1c1408
2 changed files with 23 additions and 23 deletions

View File

@ -48,25 +48,6 @@ ModelBatch::~ModelBatch() {
}
void ModelBatch::test(glm::vec3 pos, glm::vec3 size) {
float time = static_cast<float>(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);
popMatrix();
popMatrix();
popMatrix();
popMatrix();
popMatrix();
}
void ModelBatch::box(glm::vec3 pos, glm::vec3 size) {
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 (
@ -76,6 +57,25 @@ void ModelBatch::box(glm::vec3 pos, glm::vec3 size) {
Lightmap::extract(light, 3) / 15.0f
);
float time = static_cast<float>(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, lights);
box({1.5f,0,0}, size*0.5f, lights);
popMatrix();
popMatrix();
popMatrix();
popMatrix();
popMatrix();
}
void ModelBatch::box(glm::vec3 pos, glm::vec3 size, glm::vec4 lights) {
if (index + 36 < capacity*VERTEX_SIZE) {
flush();
}
plane(pos+Z*size, X*size, Y*size, Z, lights);
plane(pos-Z*size, -X*size, Y*size, -Z, lights);

View File

@ -41,7 +41,7 @@ class ModelBatch {
uint32_t integer;
} compressed;
compressed.integer = (static_cast<uint32_t>(light.r * 255) & 0xff) << 24;
compressed.integer = (static_cast<uint32_t>(light.r * 255) & 0xff) << 24;
compressed.integer |= (static_cast<uint32_t>(light.g * 255) & 0xff) << 16;
compressed.integer |= (static_cast<uint32_t>(light.b * 255) & 0xff) << 8;
compressed.integer |= (static_cast<uint32_t>(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 @@ public:
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();