Skip to content

Commit

Permalink
Clean up tangent space normal map code a tiny bit
Browse files Browse the repository at this point in the history
  • Loading branch information
caspark committed Jan 17, 2022
1 parent f1e401f commit a0c2a7b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 17 deletions.
2 changes: 1 addition & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ impl Default for RenderConfig {
camera_look_at: Vec3::ZERO,
camera_up: Vec3::new(0.0, 1.0, 0.0),
phong_lighting_weights: Vec3::new(1.0, 1.0, 0.6),
use_tangent_space_normal_map: false,
use_tangent_space_normal_map: true,
shadow_darkness: 0.7,
shadow_z_fix: 5.0,
ambient_occlusion_passes: 5,
Expand Down
31 changes: 15 additions & 16 deletions src/shaders.rs
Original file line number Diff line number Diff line change
Expand Up @@ -320,37 +320,36 @@ impl Shader<PhongShaderState> for PhongShader<'_> {
NormalMap::TangentSpace(normal_texture) => {
let bn = (varying_nrm * barycentric_coords).normalize();

let A = {
let mut A = Mat3::ZERO;
*A.col_mut(0) = varying_tri.col(1) - varying_tri.col(0);
*A.col_mut(1) = varying_tri.col(2) - varying_tri.col(0);
*A.col_mut(2) = bn;
A.transpose()
let a_inverse = {
let mut a = Mat3::ZERO;
*a.col_mut(0) = varying_tri.col(1) - varying_tri.col(0);
*a.col_mut(1) = varying_tri.col(2) - varying_tri.col(0);
*a.col_mut(2) = bn;
a.transpose().inverse()
};
let AI = A.inverse();

let i = AI
let i = a_inverse
* Vec3::new(
varying_uv[1].x - varying_uv[0].x,
varying_uv[2].x - varying_uv[0].x,
0.0,
);
let j = AI
let j = a_inverse
* Vec3::new(
varying_uv[1].y - varying_uv[0].y,
varying_uv[2].y - varying_uv[0].y,
0.0,
);

let B = {
let mut B = Mat3::ZERO;
*B.col_mut(0) = i.normalize();
*B.col_mut(1) = j.normalize();
*B.col_mut(2) = bn;
B
let b = {
let mut b = Mat3::ZERO;
*b.col_mut(0) = i.normalize();
*b.col_mut(1) = j.normalize();
*b.col_mut(2) = bn;
b
};

(B * normal_texture.get_normal(uv)).normalize()
(b * normal_texture.get_normal(uv)).normalize()
}
};
let l = self.uniform_m.project_point3(self.light_dir).normalize();
Expand Down

0 comments on commit a0c2a7b

Please sign in to comment.