Update Normal calcul

This commit is contained in:
Troispoils 2024-02-29 17:09:27 +01:00
parent 3a7d169b30
commit 2b62d3b9e4
2 changed files with 8 additions and 5 deletions

View file

@ -64,8 +64,8 @@ namespace LandblockExtraction.LandBlockExtractor {
}
private Vector2 GenerateBasicUV(int x, int y) {
float u = (float)x / (BlockSize - 1) * 16;
float v = (float)y / (BlockSize - 1) * 16;
float u = (float)x / (BlockSize - 1) * 8;
float v = (float)y / (BlockSize - 1) * 8;
return new Vector2(u, v);
}
@ -79,25 +79,28 @@ namespace LandblockExtraction.LandBlockExtractor {
}
// Parcourt tous les indices et calcule les normales pour chaque triangle
for (int i = 0; i < blockStruct.indices.Length; i += 3) {
for (int i = 0; i < blockStruct.indices.Length; i += 6) {
int index1 = blockStruct.indices[i];
int index2 = blockStruct.indices[i + 1];
int index3 = blockStruct.indices[i + 2];
int index4 = blockStruct.indices[i + 5];
Vector3 vertex1 = blockStruct.verticesStruct.position[index1];
Vector3 vertex2 = blockStruct.verticesStruct.position[index2];
Vector3 vertex3 = blockStruct.verticesStruct.position[index3];
Vector3 vertex4 = blockStruct.verticesStruct.position[index4];
// Calcule la normale du triangle
/*Vector3 edge1 = vertex2 - vertex1;
Vector3 edge2 = vertex3 - vertex1;
Vector3 normal = Vector3.Cross(edge1, edge2);
normal = Vector3.Normalize(normal);*/
var normal = MathOperations.CalculateTriangleNormal(vertex1, vertex2, vertex3);
var normal = MathOperations.CalculateQuadNormal(vertex1, vertex2, vertex3, vertex4);
// Ajoute la normale du triangle aux normales des sommets du triangle
normals[index1] += normal;
normals[index2] += normal;
normals[index3] += normal;
normals[index4] += normal;
}
// Normalise toutes les normales de sommets pour qu'elles soient de longueur unitaire

View file

@ -26,7 +26,7 @@ void main()
float inclineFactor = abs(norm.y);
vec4 finalColor = mix(color0, color1, inclineFactor);
vec4 finalColor = mix(color0, color1, norm.y);
vec3 lightDir = normalize(lightPos - FragPos);
float diff = max(dot(norm, lightDir), 0.0);