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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2017-11-23 18:10:38 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2017-11-23 19:14:04 +0300
commite50ed90e4dff3a01fd5e3211f3571a34e1d6855d (patch)
tree1abb64adb659871779ea627445d487cb69b48805 /intern/cycles/kernel
parente704d8a616376d3e0a0796396133dfe5c4df6cd5 (diff)
Fix T53348: Cycles difference between gradient texture on CPU and GPU.
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r--intern/cycles/kernel/svm/svm_gradient.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/intern/cycles/kernel/svm/svm_gradient.h b/intern/cycles/kernel/svm/svm_gradient.h
index 53d7b4f812c..74e36e70427 100644
--- a/intern/cycles/kernel/svm/svm_gradient.h
+++ b/intern/cycles/kernel/svm/svm_gradient.h
@@ -46,7 +46,10 @@ ccl_device float svm_gradient(float3 p, NodeGradientType type)
return atan2f(y, x) / M_2PI_F + 0.5f;
}
else {
- float r = fmaxf(1.0f - sqrtf(x*x + y*y + z*z), 0.0f);
+ /* Bias a little bit for the case where p is a unit length vector,
+ * to get exactly zero instead of a small random value depending
+ * on float precision. */
+ float r = fmaxf(0.999999f - sqrtf(x*x + y*y + z*z), 0.0f);
if(type == NODE_BLEND_QUADRATIC_SPHERE)
return r*r;