Blender V4.5
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
9
11
13#include "BLI_offset_indices.hh"
14#include "BLI_sys_types.h"
15
16struct ReportList;
17struct Mesh;
18
26void BKE_mesh_calc_loop_tangent_single_ex(const float (*vert_positions)[3],
27 int numVerts,
28 const int *corner_verts,
29 float (*r_looptangent)[4],
30 const float (*corner_normals)[3],
31 const float (*loop_uvs)[2],
32 int numLoops,
35
43 const char *uvmap,
44 float (*r_looptangents)[4],
46
52 blender::Span<int> corner_verts,
54 blender::Span<int> corner_tri_faces,
55 blender::Span<bool> sharp_faces,
56 const CustomData *loopdata,
57 bool calc_active_tangent,
58 const char (*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME],
59 int tangent_names_len,
62 blender::Span<blender::float3> corner_normals,
64 /* result */
65 CustomData *loopdata_out,
66 uint loopdata_out_len,
67 short *tangent_mask_curr_p);
68
69void BKE_mesh_calc_loop_tangents(Mesh *mesh_eval,
70 bool calc_active_tangent,
71 const char (*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME],
72 int tangent_names_len);
73
74/* Helpers */
76 CustomData *tan_data,
77 int numLoopData,
78 const char *layer_name);
79
80#define DM_TANGENT_MASK_ORCO (1 << 9)
88 bool calc_active_tangent,
89 const char (*tangent_names)[MAX_CUSTOMDATA_LAYER_NAME],
90 int tangent_names_count,
91 bool *rcalc_act,
92 bool *rcalc_ren,
93 int *ract_uv_n,
94 int *rren_uv_n,
95 char *ract_uv_name,
96 char *rren_uv_name,
97 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_ex(blender::Span< blender::float3 > vert_positions, blender::OffsetIndices< int > faces, blender::Span< int > corner_verts, blender::Span< blender::int3 > corner_tris, blender::Span< int > corner_tri_faces, 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)
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(*loop_uvs)[2], int numLoops, blender::OffsetIndices< int > faces, ReportList *reports)
unsigned int uint
ReportList * reports
Definition WM_types.hh:1025
#define MAX_CUSTOMDATA_LAYER_NAME
static char faces[256]