diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-11-01 17:12:54 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-11-01 17:20:50 +0300 |
commit | d710cb91b9281e94851bddc8b49b570dc6326b5f (patch) | |
tree | 1dcca4ff99b327ce0eaf21715b5986082ac5e540 /source/blender/blenkernel/intern/subdiv_displacement_multires.c | |
parent | c2aa8d03f26ceb2700730e5aeb2c72ccfa969116 (diff) |
Subdiv: Cleanup, de-duplicate tangent matrix calculation
Diffstat (limited to 'source/blender/blenkernel/intern/subdiv_displacement_multires.c')
-rw-r--r-- | source/blender/blenkernel/intern/subdiv_displacement_multires.c | 35 |
1 files changed, 2 insertions, 33 deletions
diff --git a/source/blender/blenkernel/intern/subdiv_displacement_multires.c b/source/blender/blenkernel/intern/subdiv_displacement_multires.c index aea02c5f9c9..bcb96ce8a66 100644 --- a/source/blender/blenkernel/intern/subdiv_displacement_multires.c +++ b/source/blender/blenkernel/intern/subdiv_displacement_multires.c @@ -38,6 +38,7 @@ #include "BLI_math_vector.h" #include "BKE_customdata.h" +#include "BKE_multires.h" #include "MEM_guardedalloc.h" @@ -156,38 +157,6 @@ static const MDisps *displacement_get_prev_grid( return &data->mdisps[poly->loopstart + prev_corner]; } -/* NOTE: Derivatives are in ptex face space. */ -BLI_INLINE void construct_tangent_matrix(float tangent_matrix[3][3], - const float dPdu[3], - const float dPdv[3], - const int corner) -{ - if (corner == 0) { - copy_v3_v3(tangent_matrix[0], dPdv); - copy_v3_v3(tangent_matrix[1], dPdu); - mul_v3_fl(tangent_matrix[0], -1.0f); - mul_v3_fl(tangent_matrix[1], -1.0f); - } - else if (corner == 1) { - copy_v3_v3(tangent_matrix[0], dPdu); - copy_v3_v3(tangent_matrix[1], dPdv); - mul_v3_fl(tangent_matrix[1], -1.0f); - } - else if (corner == 2) { - copy_v3_v3(tangent_matrix[0], dPdv); - copy_v3_v3(tangent_matrix[1], dPdu); - } - else if (corner == 3) { - copy_v3_v3(tangent_matrix[0], dPdu); - copy_v3_v3(tangent_matrix[1], dPdv); - mul_v3_fl(tangent_matrix[0], -1.0f); - } - cross_v3_v3v3(tangent_matrix[2], dPdu, dPdv); - normalize_v3(tangent_matrix[0]); - normalize_v3(tangent_matrix[1]); - normalize_v3(tangent_matrix[2]); -} - BLI_INLINE eAverageWith read_displacement_grid( const MDisps *displacement_grid, const int grid_size, @@ -331,7 +300,7 @@ static void eval_displacement(SubdivDisplacement *displacement, tangent_D); /* Convert it to the object space. */ float tangent_matrix[3][3]; - construct_tangent_matrix(tangent_matrix, dPdu, dPdv, corner); + BKE_multires_construct_tangent_matrix(tangent_matrix, dPdu, dPdv, corner); mul_v3_m3v3(r_D, tangent_matrix, tangent_D); } |