Fix tangent and bitangent generation

This commit is contained in:
Peder Bergebakken Sundt 2019-03-16 16:32:13 +01:00
parent 3141f6aca0
commit 5f705ff11c
2 changed files with 17 additions and 16 deletions

View File

@ -167,7 +167,6 @@ void initGame(GLFWwindow* window, CommandLineOptions gameOptions) {
textNode->isIlluminated = false; textNode->isIlluminated = false;
textNode->isInverted = true; textNode->isInverted = true;
getTimeDeltaSeconds(); getTimeDeltaSeconds();
std::cout << "Ready. Click to start!" << std::endl; std::cout << "Ready. Click to start!" << std::endl;

View File

@ -64,27 +64,29 @@ void addTangents(uint vaoID, Mesh& mesh) {
vec2 deltaUV1 = uv2 - uv1; vec2 deltaUV1 = uv2 - uv1;
vec2 deltaUV2 = uv3 - uv1; vec2 deltaUV2 = uv3 - uv1;
float f = 1.0f / (deltaUV1.x * deltaUV2.y - deltaUV2.x * deltaUV1.y); float f = -1.0f / (deltaUV1.x * deltaUV2.y - deltaUV2.x * deltaUV1.y);
vec3 tangent, bitangent; vec3 tangent{
tangent.x = f * (deltaUV2.y * edge1.x - deltaUV1.y * edge2.x); f * (deltaUV2.y * edge1.x - deltaUV1.y * edge2.x),
tangent.y = f * (deltaUV2.y * edge1.y - deltaUV1.y * edge2.y); f * (deltaUV2.y * edge1.y - deltaUV1.y * edge2.y),
tangent.z = f * (deltaUV2.y * edge1.z - deltaUV1.y * edge2.z); f * (deltaUV2.y * edge1.z - deltaUV1.y * edge2.z),
};
bitangent.x = f * (-deltaUV2.x * edge1.x + deltaUV1.x * edge2.x); vec3 bitangent{
bitangent.y = f * (-deltaUV2.x * edge1.y + deltaUV1.x * edge2.y); f * (-deltaUV2.x * edge1.x + deltaUV1.x * edge2.x),
bitangent.z = f * (-deltaUV2.x * edge1.z + deltaUV1.x * edge2.z); f * (-deltaUV2.x * edge1.y + deltaUV1.x * edge2.y),
f * (-deltaUV2.x * edge1.z + deltaUV1.x * edge2.z),
};
tangent = glm::normalize(tangent); tangent = glm::normalize(tangent);
bitangent = glm::normalize(bitangent); bitangent = glm::normalize(bitangent);
// handedness // handedness
tangents[i+0] = -tangent; tangents[mesh.indices[i+0]] = tangent;
tangents[i+1] = -tangent; tangents[mesh.indices[i+1]] = tangent;
tangents[i+2] = -tangent; tangents[mesh.indices[i+2]] = tangent;
bitangents[i+0] = -bitangent; bitangents[mesh.indices[i+0]] = bitangent;
bitangents[i+1] = -bitangent; bitangents[mesh.indices[i+1]] = bitangent;
bitangents[i+2] = -bitangent; bitangents[mesh.indices[i+2]] = bitangent;
} }
glBindVertexArray(vaoID); glBindVertexArray(vaoID);