Browse Source

Lesson 14.1

Godzil 3 years ago
parent
commit
f194785d97
2 changed files with 13 additions and 11 deletions
  1. 1 0
      source/include/triangle.h
  2. 12 11
      source/main.c

+ 1 - 0
source/include/triangle.h

@@ -28,6 +28,7 @@ typedef struct triangle_t
 {
     vec2_t points[3];
     colour_t colour;
+    double averageDepth;
 } triangle_t;
 
 /***********************************************************************************************************************

+ 12 - 11
source/main.c

@@ -166,7 +166,7 @@ void update()
     for(i = 0; i < faceCount; i++)
     {
         triangle_t currentTriangle;
-        vec3_t transformed[3];
+        vec3_t transformedVertices[3];
 
         vec3_t vertices[3] =
         {
@@ -177,25 +177,25 @@ void update()
 
         for(j = 0; j < 3; j++)
         {
-            transformed[j] = vertices[j];
+            transformedVertices[j] = vertices[j];
 
-            transformed[j] = vec3RotateX(transformed[j], mesh.rotation.x);
-            transformed[j] = vec3RotateY(transformed[j], mesh.rotation.y);
-            transformed[j] = vec3RotateZ(transformed[j], mesh.rotation.z);
+            transformedVertices[j] = vec3RotateX(transformedVertices[j], mesh.rotation.x);
+            transformedVertices[j] = vec3RotateY(transformedVertices[j], mesh.rotation.y);
+            transformedVertices[j] = vec3RotateZ(transformedVertices[j], mesh.rotation.z);
 
             transformed[j].z += 5;
         }
 
         if (!doNotCull)
         {
-            vec3_t vectorBA = vec3SubVectors(transformed[1], transformed[0]);
-            vec3_t vectorCA = vec3SubVectors(transformed[2], transformed[0]);
+            vec3_t vectorBA = vec3SubVectors(transformedVertices[1], transformedVertices[0]);
+            vec3_t vectorCA = vec3SubVectors(transformedVertices[2], transformedVertices[0]);
             vec3Normalize(&vectorBA);
             vec3Normalize(&vectorCA);
             vec3_t triangleNormal = vec3Cross(vectorBA, vectorCA);
             vec3Normalize(&triangleNormal);
 
-            vec3_t cameraRay = vec3SubVectors(cameraPosition, transformed[0]);
+            vec3_t cameraRay = vec3SubVectors(cameraPosition, transformedVertices[0]);
             vec3Normalize(&cameraRay);
 
             double cameraDotTriangle = vec3Dot(triangleNormal, cameraRay);
@@ -209,7 +209,7 @@ void update()
 
         for (j = 0 ; j < 3 ; j++)
         {
-            vec2_t projected = perspectivePointProjection(transformed[j]);
+            vec2_t projected = perspectivePointProjection(transformedVertices[j]);
 
             projected.x += (windowWidth / 2);
             projected.y += (windowHeight / 2);
@@ -218,9 +218,10 @@ void update()
         }
 
         currentTriangle.colour = mesh.faces[i].colour;
-
+        currentTriangle.averageDepth = (transformedVertices[0].z +
+                                        transformedVertices[1].z +
+                                        transformedVertices[2].z) / 3.0;
         arrayAdd(projectedTriangles, currentTriangle);
-
     }
 }