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:
authorThomas Dinges <blender@dingto.org>2014-06-20 11:03:00 +0400
committerThomas Dinges <blender@dingto.org>2014-06-20 11:03:22 +0400
commitead83a48f15c7677290fdedfde974ff3233e0441 (patch)
treeb9bb8c51c05ae92d54a2c585ba848ec7800cc65e
parent84e8cabac604a59b7abe4cce37df02d6ef12a0bf (diff)
Fix T40692, Checker Texture derivation on very large scales (1k).
It might still have a derivation on larger scales (10k or more), but we need some offset to avoid precision issues on unit coordinates.
-rw-r--r--intern/cycles/kernel/shaders/node_checker_texture.osl6
-rw-r--r--intern/cycles/kernel/svm/svm_checker.h6
2 files changed, 6 insertions, 6 deletions
diff --git a/intern/cycles/kernel/shaders/node_checker_texture.osl b/intern/cycles/kernel/shaders/node_checker_texture.osl
index 6723076723c..a6d21fd36f3 100644
--- a/intern/cycles/kernel/shaders/node_checker_texture.osl
+++ b/intern/cycles/kernel/shaders/node_checker_texture.osl
@@ -21,9 +21,9 @@
float checker(point p)
{
- p[0] = (p[0] + 0.00001) * 0.9999;
- p[1] = (p[1] + 0.00001) * 0.9999;
- p[2] = (p[2] + 0.00001) * 0.9999;
+ p[0] = (p[0] + 0.000001) * 0.999999;
+ p[1] = (p[1] + 0.000001) * 0.999999;
+ p[2] = (p[2] + 0.000001) * 0.999999;
int xi = (int)fabs(floor(p[0]));
int yi = (int)fabs(floor(p[1]));
diff --git a/intern/cycles/kernel/svm/svm_checker.h b/intern/cycles/kernel/svm/svm_checker.h
index 8d1a1a40449..e0408ad334a 100644
--- a/intern/cycles/kernel/svm/svm_checker.h
+++ b/intern/cycles/kernel/svm/svm_checker.h
@@ -21,9 +21,9 @@ CCL_NAMESPACE_BEGIN
ccl_device_noinline float svm_checker(float3 p)
{
/* avoid precision issues on unit coordinates */
- p.x = (p.x + 0.00001f)*0.9999f;
- p.y = (p.y + 0.00001f)*0.9999f;
- p.z = (p.z + 0.00001f)*0.9999f;
+ p.x = (p.x + 0.000001f)*0.999999f;
+ p.y = (p.y + 0.000001f)*0.999999f;
+ p.z = (p.z + 0.000001f)*0.999999f;
int xi = float_to_int(fabsf(floorf(p.x)));
int yi = float_to_int(fabsf(floorf(p.y)));