Custom models lights fix

This commit is contained in:
MihailRis 2024-01-09 13:24:45 +03:00
parent 72d589d39e
commit 484c2b85cf
2 changed files with 16 additions and 7 deletions

View File

@ -153,11 +153,20 @@ void BlocksRenderer::tetragonicFace(const vec3& coord, const vec3& p1,
const vec3& Y,
const vec3& Z,
const UVRegion& texreg,
const vec4& tint) {
vertex(coord + (p1.x - 0.5f) * X + (p1.y - 0.5f) * Y + (p1.z - 0.5f) * Z, texreg.u1, texreg.v1, tint);
vertex(coord + (p2.x - 0.5f) * X + (p2.y - 0.5f) * Y + (p2.z - 0.5f) * Z, texreg.u2, texreg.v1, tint);
vertex(coord + (p3.x - 0.5f) * X + (p3.y - 0.5f) * Y + (p3.z - 0.5f) * Z, texreg.u2, texreg.v2, tint);
vertex(coord + (p4.x - 0.5f) * X + (p4.y - 0.5f) * Y + (p4.z - 0.5f) * Z, texreg.u1, texreg.v2, tint);
bool lights) {
glm::vec3 dir = glm::cross(p2 - p1, p3 - p1);
glm::vec3 normal = glm::normalize(dir);
glm::vec4 tintx(1.0f);
if (lights) {
float d = glm::dot(normal, SUN_VECTOR);
d = 0.7f + d * 0.3f;
tintx *= d;
tintx *= pickLight(coord);
}
vertex(coord + (p1.x - 0.5f) * X + (p1.y - 0.5f) * Y + (p1.z - 0.5f) * Z, texreg.u1, texreg.v1, tintx);
vertex(coord + (p2.x - 0.5f) * X + (p2.y - 0.5f) * Y + (p2.z - 0.5f) * Z, texreg.u2, texreg.v1, tintx);
vertex(coord + (p3.x - 0.5f) * X + (p3.y - 0.5f) * Y + (p3.z - 0.5f) * Z, texreg.u2, texreg.v2, tintx);
vertex(coord + (p4.x - 0.5f) * X + (p4.y - 0.5f) * Y + (p4.z - 0.5f) * Z, texreg.u1, texreg.v2, tintx);
index(0, 1, 3, 1, 2, 3);
}
@ -268,7 +277,7 @@ void BlocksRenderer::blockCustomModel(const ivec3& icoord,
block->modelExtraPoints[i * 4 + 2],
block->modelExtraPoints[i * 4 + 3],
X, Y, Z,
block->modelUVs[block->modelBoxes.size()*6 + i], vec4(tint));
block->modelUVs[block->modelBoxes.size()*6 + i], lights);
}
}

View File

@ -68,7 +68,7 @@ class BlocksRenderer {
const glm::vec3& Y,
const glm::vec3& Z,
const UVRegion& texreg,
const glm::vec4& tint);
bool lights);
void blockCube(int x, int y, int z, const UVRegion(&faces)[6], const Block* block, ubyte states, bool lights);
void blockAABB(const glm::ivec3& coord,