Blender V4.3
BKE_mesh_tangent.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4#pragma once
5
11
13#include "BLI_offset_indices.hh"
14#include "BLI_sys_types.h"
15
16struct ReportList;
17
25void BKE_mesh_calc_loop_tangent_single_ex(const float (*vert_positions)[3],
26 int numVerts,
27 const int *corner_verts,
28 float (*r_looptangent)[4],
29 const float (*corner_normals)[3],
30 const float (*loopuv)[2],
31 int numLoops,
33 ReportList *reports);
34
42 const char *uvmap,
43 float (*r_looptangents)[4],
44 ReportList *reports);
45
51 const int *corner_verts,
52 const blender::int3 *corner_tris,
53 const int *corner_tri_faces,
54 uint corner_tris_len,
55 const blender::Span<bool> sharp_faces,
56
57 const CustomData *loopdata,
58 bool calc_active_tangent,
59 const char (*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME],
60 int tangent_names_len,
63 blender::Span<blender::float3> corner_normals,
65 /* result */
66 CustomData *loopdata_out,
67 uint loopdata_out_len,
68 short *tangent_mask_curr_p);
69
70void BKE_mesh_calc_loop_tangents(Mesh *mesh_eval,
71 bool calc_active_tangent,
72 const char (*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME],
73 int tangent_names_len);
74
75/* Helpers */
77 CustomData *tan_data,
78 int numLoopData,
79 const char *layer_name);
80
81#define DM_TANGENT_MASK_ORCO (1 << 9)
89 bool calc_active_tangent,
90 const char (*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME],
91 int tangent_names_count,
92 bool *rcalc_act,
93 bool *rcalc_ren,
94 int *ract_uv_n,
95 int *rren_uv_n,
96 char *ract_uv_name,
97 char *rren_uv_name,
98 short *rtangent_mask);
void BKE_mesh_calc_loop_tangents(Mesh *mesh_eval, bool calc_active_tangent, const char(*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME], int tangent_names_len)
void BKE_mesh_add_loop_tangent_named_layer_for_uv(const CustomData *uv_data, CustomData *tan_data, int numLoopData, const char *layer_name)
void BKE_mesh_calc_loop_tangent_single_ex(const float(*vert_positions)[3], int numVerts, const int *corner_verts, float(*r_looptangent)[4], const float(*corner_normals)[3], const float(*loopuv)[2], int numLoops, blender::OffsetIndices< int > faces, ReportList *reports)
void BKE_mesh_calc_loop_tangent_ex(blender::Span< blender::float3 > vert_positions, blender::OffsetIndices< int > faces, const int *corner_verts, const blender::int3 *corner_tris, const int *corner_tri_faces, uint corner_tris_len, const blender::Span< bool > sharp_faces, const CustomData *loopdata, bool calc_active_tangent, const char(*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME], int tangent_names_len, blender::Span< blender::float3 > vert_normals, blender::Span< blender::float3 > face_normals, blender::Span< blender::float3 > corner_normals, blender::Span< blender::float3 > vert_orco, CustomData *loopdata_out, uint loopdata_out_len, short *tangent_mask_curr_p)
void BKE_mesh_calc_loop_tangent_step_0(const CustomData *loopData, bool calc_active_tangent, const char(*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME], int tangent_names_count, bool *rcalc_act, bool *rcalc_ren, int *ract_uv_n, int *rren_uv_n, char *ract_uv_name, char *rren_uv_name, short *rtangent_mask)
void BKE_mesh_calc_loop_tangent_single(Mesh *mesh, const char *uvmap, float(*r_looptangents)[4], ReportList *reports)
unsigned int uint
#define MAX_CUSTOMDATA_LAYER_NAME