|
@@ -66,7 +66,7 @@ void SoftwareRenderer::drawTriangularMesh(Mesh* triMesh){
|
|
|
Vector3 normalPrim[3];
|
|
Vector3 normalPrim[3];
|
|
|
|
|
|
|
|
//Initializing shader
|
|
//Initializing shader
|
|
|
- FlatShader shader;
|
|
|
|
|
|
|
+ GouraudShader shader;
|
|
|
|
|
|
|
|
//Basic light direction
|
|
//Basic light direction
|
|
|
|
|
|
|
@@ -79,10 +79,7 @@ void SoftwareRenderer::drawTriangularMesh(Mesh* triMesh){
|
|
|
//printf("\nCurrent Face: %d\n",j);
|
|
//printf("\nCurrent Face: %d\n",j);
|
|
|
Vector3 f = (*vIndices)[j];
|
|
Vector3 f = (*vIndices)[j];
|
|
|
Vector3 n = (*nIndices)[j];
|
|
Vector3 n = (*nIndices)[j];
|
|
|
- //printf("Vertices\n");
|
|
|
|
|
- //f.print();
|
|
|
|
|
- //printf("Normals\n");
|
|
|
|
|
- //n.print();
|
|
|
|
|
|
|
+
|
|
|
//Pack vertices together into an array
|
|
//Pack vertices together into an array
|
|
|
buildTri(f,trianglePrimitive, *vertices);
|
|
buildTri(f,trianglePrimitive, *vertices);
|
|
|
buildTri(n,normalPrim, *normals);
|
|
buildTri(n,normalPrim, *normals);
|
|
@@ -90,17 +87,17 @@ void SoftwareRenderer::drawTriangularMesh(Mesh* triMesh){
|
|
|
//Skip faces that are pointing away from us
|
|
//Skip faces that are pointing away from us
|
|
|
if (backFaceCulling(trianglePrimitive)) continue;
|
|
if (backFaceCulling(trianglePrimitive)) continue;
|
|
|
|
|
|
|
|
- Vector3 N1 = trianglePrimitive[1] - trianglePrimitive[0];
|
|
|
|
|
- Vector3 N2 = trianglePrimitive[2] - trianglePrimitive[0];
|
|
|
|
|
- Vector3 N = (N2.crossProduct(N1)).normalized();
|
|
|
|
|
|
|
+ // Vector3 N1 = trianglePrimitive[1] - trianglePrimitive[0];
|
|
|
|
|
+ // Vector3 N2 = trianglePrimitive[2] - trianglePrimitive[0];
|
|
|
|
|
+ // Vector3 N = (N1.crossProduct(N2)).normalized();
|
|
|
|
|
|
|
|
//Apply vertex shader
|
|
//Apply vertex shader
|
|
|
for(int i = 0; i < 3; ++i){
|
|
for(int i = 0; i < 3; ++i){
|
|
|
//trianglePrimitive[i].print();
|
|
//trianglePrimitive[i].print();
|
|
|
//normalPrim[i].print();
|
|
//normalPrim[i].print();
|
|
|
//printf("\n");
|
|
//printf("\n");
|
|
|
- Vector3 normal = (mCamera->viewMatrix).matMultVec(N);
|
|
|
|
|
- trianglePrimitive[i] = shader.vertex(trianglePrimitive[i], MVP, N, lightDir.normalized(), i);
|
|
|
|
|
|
|
+ //Vector3 normal = (mCamera->viewMatrix).matMultVec(N);
|
|
|
|
|
+ trianglePrimitive[i] = shader.vertex(trianglePrimitive[i], MVP, normalPrim[i].normalized(), lightDir.normalized(), i);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Clipping should occur here
|
|
//Clipping should occur here
|