Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2016-07-25 20:33:55 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2016-07-25 20:33:55 +0300
commitbcc020b1bc1b60f6cbd6d2c9bf400744931e57e1 (patch)
treefef4d83d0e5addb59c8389adf125281a4c7e35f8 /intern/cycles/kernel/svm/svm_tex_coord.h
parent99bb1accbbb8e1ba38f30b073b22deb107bf3220 (diff)
parent3f36cd3f33e52d53d82a3a221e2a576cf26390a5 (diff)
Merge branch 'asset-engine' into asset-experimentsasset-experiments
Conflicts: source/blender/blenloader/intern/readfile.c
Diffstat (limited to 'intern/cycles/kernel/svm/svm_tex_coord.h')
-rw-r--r--intern/cycles/kernel/svm/svm_tex_coord.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/intern/cycles/kernel/svm/svm_tex_coord.h b/intern/cycles/kernel/svm/svm_tex_coord.h
index 27fed89fdf7..276b6f26f5e 100644
--- a/intern/cycles/kernel/svm/svm_tex_coord.h
+++ b/intern/cycles/kernel/svm/svm_tex_coord.h
@@ -312,7 +312,7 @@ ccl_device void svm_node_normal_map(KernelGlobals *kg, ShaderData *sd, float *st
/* apply normal map */
float3 B = sign * cross(normal, tangent);
- N = normalize(color.x * tangent + color.y * B + color.z * normal);
+ N = safe_normalize(color.x * tangent + color.y * B + color.z * normal);
/* transform to world space */
object_normal_transform(kg, sd, &N);
@@ -330,14 +330,18 @@ ccl_device void svm_node_normal_map(KernelGlobals *kg, ShaderData *sd, float *st
if(space == NODE_NORMAL_MAP_OBJECT || space == NODE_NORMAL_MAP_BLENDER_OBJECT)
object_normal_transform(kg, sd, &N);
else
- N = normalize(N);
+ N = safe_normalize(N);
}
float strength = stack_load_float(stack, strength_offset);
if(strength != 1.0f) {
strength = max(strength, 0.0f);
- N = normalize(ccl_fetch(sd, N) + (N - ccl_fetch(sd, N))*strength);
+ N = safe_normalize(ccl_fetch(sd, N) + (N - ccl_fetch(sd, N))*strength);
+ }
+
+ if(is_zero(N)) {
+ N = ccl_fetch(sd, N);
}
stack_store_float3(stack, normal_offset, N);