Skip to content

Commit

Permalink
Meshes: Make object mesh face shading consistent
Browse files Browse the repository at this point in the history
Previously, object meshes had their North and South faces darker than
East and West faces, the opposite of nodes and meshnodes. This commit
corrects this.
State constants as float-literals not double-literals.
Simplify code.
Add comment.
  • Loading branch information
paramat committed Jan 13, 2017
1 parent 5d60a6c commit 25ba96f
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions src/mesh.cpp
Expand Up @@ -186,17 +186,14 @@ void shadeMeshFaces(scene::IMesh *mesh)
for (u32 i = 0; i < vertex_count; i++) {
video::S3DVertex *vertex = (video::S3DVertex *)(vertices + i * stride);
video::SColor &vc = vertex->Color;
if (vertex->Normal.Y < -0.5) {
applyFacesShading (vc, 0.447213);
} else if (vertex->Normal.Z > 0.5) {
applyFacesShading (vc, 0.670820);
} else if (vertex->Normal.Z < -0.5) {
applyFacesShading (vc, 0.670820);
} else if (vertex->Normal.X > 0.5) {
applyFacesShading (vc, 0.836660);
} else if (vertex->Normal.X < -0.5) {
applyFacesShading (vc, 0.836660);
}
// Many special drawtypes have normals set to 0,0,0 and this
// must result in maximum brightness (no face shadng).
if (vertex->Normal.Y < -0.5f)
applyFacesShading (vc, 0.447213f);
else if (vertex->Normal.X > 0.5f || vertex->Normal.X < -0.5f)
applyFacesShading (vc, 0.670820f);
else if (vertex->Normal.Z > 0.5f || vertex->Normal.Z < -0.5f)
applyFacesShading (vc, 0.836660f);
}
}
}
Expand Down

0 comments on commit 25ba96f

Please sign in to comment.