Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/mesh_tangent.c
| Show First 20 Lines • Show All 446 Lines • ▼ Show 20 Lines | #endif | ||||
| float *pRes; | float *pRes; | ||||
| finally: | finally: | ||||
| pRes = pMesh->tangent[loop_index]; | pRes = pMesh->tangent[loop_index]; | ||||
| copy_v3_v3(pRes, fvTangent); | copy_v3_v3(pRes, fvTangent); | ||||
| pRes[3] = fSign; | pRes[3] = fSign; | ||||
| } | } | ||||
| static void DM_calc_loop_tangents_thread(TaskPool *__restrict UNUSED(pool), | static void DM_calc_loop_tangents_thread(TaskPool *__restrict UNUSED(pool), void *taskdata) | ||||
| void *taskdata, | |||||
| int UNUSED(threadid)) | |||||
| { | { | ||||
| struct SGLSLMeshToTangent *mesh2tangent = taskdata; | struct SGLSLMeshToTangent *mesh2tangent = taskdata; | ||||
| /* new computation method */ | /* new computation method */ | ||||
| { | { | ||||
| SMikkTSpaceContext sContext = {NULL}; | SMikkTSpaceContext sContext = {NULL}; | ||||
| SMikkTSpaceInterface sInterface = {NULL}; | SMikkTSpaceInterface sInterface = {NULL}; | ||||
| sContext.m_pUserData = mesh2tangent; | sContext.m_pUserData = mesh2tangent; | ||||
| ▲ Show 20 Lines • Show All 187 Lines • ▼ Show 20 Lines | #ifdef USE_LOOPTRI_DETECT_QUADS | ||||
| } | } | ||||
| else { | else { | ||||
| num_face_as_quad_map = (int)looptri_len; | num_face_as_quad_map = (int)looptri_len; | ||||
| } | } | ||||
| #endif | #endif | ||||
| /* Calculation */ | /* Calculation */ | ||||
| if (looptri_len != 0) { | if (looptri_len != 0) { | ||||
| TaskScheduler *scheduler = BLI_task_scheduler_get(); | TaskPool *task_pool = BLI_task_pool_create(NULL, TASK_PRIORITY_LOW); | ||||
| TaskPool *task_pool; | |||||
| task_pool = BLI_task_pool_create(scheduler, NULL, TASK_PRIORITY_LOW); | |||||
| tangent_mask_curr = 0; | tangent_mask_curr = 0; | ||||
| /* Calculate tangent layers */ | /* Calculate tangent layers */ | ||||
| SGLSLMeshToTangent data_array[MAX_MTFACE]; | SGLSLMeshToTangent data_array[MAX_MTFACE]; | ||||
| const int tangent_layer_num = CustomData_number_of_layers(loopdata_out, CD_TANGENT); | const int tangent_layer_num = CustomData_number_of_layers(loopdata_out, CD_TANGENT); | ||||
| for (int n = 0; n < tangent_layer_num; n++) { | for (int n = 0; n < tangent_layer_num; n++) { | ||||
| int index = CustomData_get_layer_index_n(loopdata_out, CD_TANGENT, n); | int index = CustomData_get_layer_index_n(loopdata_out, CD_TANGENT, n); | ||||
| BLI_assert(n < MAX_MTFACE); | BLI_assert(n < MAX_MTFACE); | ||||
| ▲ Show 20 Lines • Show All 105 Lines • Show Last 20 Lines | |||||