diff --git a/intern/cycles/kernel/shaders/node_bevel.osl b/intern/cycles/kernel/shaders/node_bevel.osl index a5b185b6b4c..9c4ca15be17 100644 --- a/intern/cycles/kernel/shaders/node_bevel.osl +++ b/intern/cycles/kernel/shaders/node_bevel.osl @@ -23,9 +23,9 @@ shader node_bevel( output normal NormalOut = N) { /* Abuse texture call with special @bevel token. */ - NormalOut = (normal)(color)texture("@bevel", samples, Radius); + vector bevel_N = (normal)(color)texture("@bevel", samples, Radius); /* Preserve input normal. */ - NormalOut = normalize(N + (NormalOut - NormalIn)); + NormalOut = normalize(NormalIn + (bevel_N - N)); } diff --git a/intern/cycles/kernel/svm/svm_bevel.h b/intern/cycles/kernel/svm/svm_bevel.h index dcfe4ad71b8..6d5a10db98f 100644 --- a/intern/cycles/kernel/svm/svm_bevel.h +++ b/intern/cycles/kernel/svm/svm_bevel.h @@ -216,7 +216,7 @@ ccl_device void svm_node_bevel( if(stack_valid(normal_offset)) { /* Preserve input normal. */ float3 ref_N = stack_load_float3(stack, normal_offset); - bevel_N = normalize(sd->N + (bevel_N - ref_N)); + bevel_N = normalize(ref_N + (bevel_N - sd->N));; } stack_store_float3(stack, out_offset, bevel_N);