Files
test2/source/blender/blenkernel/intern/multires_inline.hh

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

46 lines
1.4 KiB
C++
Raw Normal View History

/* SPDX-FileCopyrightText: 2018 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup bke
*/
2018-11-02 06:59:51 +11:00
#pragma once
#include "BKE_multires.hh"
#include "BLI_math_matrix_types.hh"
#include "BLI_math_vector.hh"
#include "BLI_math_vector_types.hh"
BLI_INLINE void BKE_multires_construct_tangent_matrix(blender::float3x3 &tangent_matrix,
const blender::float3 &dPdu,
const blender::float3 &dPdv,
const int corner)
{
if (corner == 0) {
tangent_matrix.x_axis() = dPdv * -1.0f;
tangent_matrix.y_axis() = dPdu * -1.0f;
}
else if (corner == 1) {
tangent_matrix.x_axis() = dPdu;
tangent_matrix.y_axis() = dPdv * -1.0f;
}
else if (corner == 2) {
tangent_matrix.x_axis() = dPdv;
tangent_matrix.y_axis() = dPdu;
}
else if (corner == 3) {
tangent_matrix.x_axis() = dPdu * -1.0f;
tangent_matrix.y_axis() = dPdv;
}
else {
BLI_assert_msg(0, "Unhandled corner index");
}
tangent_matrix.z_axis() = blender::math::cross(dPdu, dPdv);
tangent_matrix.x_axis() = blender::math::normalize(tangent_matrix.x_axis());
tangent_matrix.y_axis() = blender::math::normalize(tangent_matrix.y_axis());
tangent_matrix.z_axis() = blender::math::normalize(tangent_matrix.z_axis());
}