From d68981158b843d2b7c47d6e2e94e64d807dda569 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 6 Nov 2012 21:27:59 +0000 Subject: [PATCH] Fix cycles crash with normal map node, issue with tangent sign attribute. --- intern/cycles/blender/blender_mesh.cpp | 4 ++-- intern/cycles/kernel/svm/svm_tex_coord.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index 69b330db483..c9748756d43 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -302,11 +302,11 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< /* UV tangent */ std = (active_render)? ATTR_STD_UV_TANGENT: ATTR_STD_NONE; - name = ustring((string(name.c_str()) + ".tangent").c_str()); + name = ustring((string(l->name().c_str()) + ".tangent").c_str()); if(mesh->need_attribute(scene, name) || mesh->need_attribute(scene, std)) { std = (active_render)? ATTR_STD_UV_TANGENT_SIGN: ATTR_STD_NONE; - name = ustring((string(name.c_str()) + ".tangent_sign").c_str()); + name = ustring((string(l->name().c_str()) + ".tangent_sign").c_str()); bool need_sign = (mesh->need_attribute(scene, name) || mesh->need_attribute(scene, std)); mikk_compute_tangents(b_mesh, *l, mesh, nverts, need_sign, active_render); diff --git a/intern/cycles/kernel/svm/svm_tex_coord.h b/intern/cycles/kernel/svm/svm_tex_coord.h index 2f73f7b9d40..a9449c0ded9 100644 --- a/intern/cycles/kernel/svm/svm_tex_coord.h +++ b/intern/cycles/kernel/svm/svm_tex_coord.h @@ -244,7 +244,7 @@ __device void svm_node_normal_map(KernelGlobals *kg, ShaderData *sd, float *stac int attr_offset = find_attribute(kg, sd, node.z); int attr_sign_offset = find_attribute(kg, sd, node.w); - if(attr_offset == ATTR_STD_NOT_FOUND || attr_offset == ATTR_STD_NOT_FOUND) { + if(attr_offset == ATTR_STD_NOT_FOUND || attr_sign_offset == ATTR_STD_NOT_FOUND) { stack_store_float3(stack, normal_offset, make_float3(0.0f, 0.0f, 0.0f)); return; }