specialize mat4 multiply routines
authorMike Erwin <significant.bit@gmail.com>
Sun, 25 Sep 2016 12:27:48 +0000 (14:27 +0200)
committerMike Erwin <significant.bit@gmail.com>
Sun, 25 Sep 2016 12:27:48 +0000 (14:27 +0200)
commit5c6baf1ee9754e39392926cd077bb2097baf39b9
tree06019e8c6e19fdf7a24d66c2c18aace9f1b95b35
parentaddc666999255ae908cec63af18da2db4001e90b
specialize mat4 multiply routines

mul_m4_m4m4(R, A, B) gives us R = AB in general. Existing code assumed the worst, that A and B both alias the output R. For safety it makes internal copies of A and B before calculating & writing R.

This is the least common case. Usually all 3 matrices differ. Often we see M = AM or M = MB, but never M = MM.

With this revision mul_m4_m4m4 is called in exactly the same way but copies inputs only when needed. If you know the inputs are independent of the output use the "uniq" variant to skip the saftety checks.
source/blender/blenlib/BLI_math_matrix.h
source/blender/blenlib/intern/math_matrix.c