[Bf-blender-cvs] [8d5a682231b] soc-2019-cycles-procedural: Reduce voronoi smoothing kernel size.

OmarSquircleArt noreply at git.blender.org
Mon Jun 24 21:57:33 CEST 2019


Commit: 8d5a682231b73231b14e456b372c845c65284d32
Author: OmarSquircleArt
Date:   Mon Jun 24 21:58:03 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rB8d5a682231b73231b14e456b372c845c65284d32

Reduce voronoi smoothing kernel size.

Seven steps is too much for higher dimensions.

===================================================================

M	intern/cycles/kernel/shaders/node_voronoi_texture.osl
M	intern/cycles/kernel/svm/svm_voronoi.h
M	source/blender/gpu/shaders/gpu_shader_material.glsl

===================================================================

diff --git a/intern/cycles/kernel/shaders/node_voronoi_texture.osl b/intern/cycles/kernel/shaders/node_voronoi_texture.osl
index 727cc24a7d5..0df2617057b 100644
--- a/intern/cycles/kernel/shaders/node_voronoi_texture.osl
+++ b/intern/cycles/kernel/shaders/node_voronoi_texture.osl
@@ -183,7 +183,7 @@ void voronoi_smooth_f1_1d(float w,
   float smoothDistance = 0.0;
   float smoothPosition = 0.0;
   color smoothColor = color(0.0);
-  for (int i = -3; i <= 3; i++) {
+  for (int i = -2; i <= 2; i++) {
     float cellOffset = float(i);
     float pointPosition = cellOffset + hash_01(cellPosition + cellOffset) * jitter;
     float distanceToPoint = voronoi_distance(pointPosition, localPosition, metric, exponent);
@@ -347,8 +347,8 @@ void voronoi_smooth_f1_2d(vector2 coord,
   color smoothColor = color(0.0);
   float smoothDistance = 0.0;
   vector2 smoothPosition = vector2(0.0, 0.0);
-  for (int j = -3; j <= 3; j++) {
-    for (int i = -3; i <= 3; i++) {
+  for (int j = -2; j <= 2; j++) {
+    for (int i = -2; i <= 2; i++) {
       vector2 cellOffset = vector2(i, j);
       vector2 pointPosition = cellOffset + hash_01_vector2(cellPosition + cellOffset) * jitter;
       float distanceToPoint = voronoi_distance(pointPosition, localPosition, metric, exponent);
@@ -545,9 +545,9 @@ void voronoi_smooth_f1_3d(vector3 coord,
   color smoothColor = color(0.0);
   float smoothDistance = 0.0;
   vector3 smoothPosition = vector3(0.0);
-  for (int k = -3; k <= 3; k++) {
-    for (int j = -3; j <= 3; j++) {
-      for (int i = -3; i <= 3; i++) {
+  for (int k = -2; k <= 2; k++) {
+    for (int j = -2; j <= 2; j++) {
+      for (int i = -2; i <= 2; i++) {
         vector3 cellOffset = vector3(i, j, k);
         vector3 pointPosition = cellOffset + hash_01_vector3(cellPosition + cellOffset) * jitter;
         float distanceToPoint = voronoi_distance(pointPosition, localPosition, metric, exponent);
@@ -757,10 +757,10 @@ void voronoi_smooth_f1_4d(vector4 coord,
   color smoothColor = color(0.0);
   float smoothDistance = 0.0;
   vector4 smoothPosition = vector4(0.0, 0.0, 0.0, 0.0);
-  for (int u = -3; u <= 3; u++) {
-    for (int k = -3; k <= 3; k++) {
-      for (int j = -3; j <= 3; j++) {
-        for (int i = -3; i <= 3; i++) {
+  for (int u = -2; u <= 2; u++) {
+    for (int k = -2; k <= 2; k++) {
+      for (int j = -2; j <= 2; j++) {
+        for (int i = -2; i <= 2; i++) {
           vector4 cellOffset = vector4(i, j, k, u);
           vector4 pointPosition = cellOffset + hash_01_vector4(cellPosition + cellOffset) * jitter;
           float distanceToPoint = voronoi_distance(pointPosition, localPosition, metric, exponent);
diff --git a/intern/cycles/kernel/svm/svm_voronoi.h b/intern/cycles/kernel/svm/svm_voronoi.h
index 7de205e6eb9..7b2641d3cac 100644
--- a/intern/cycles/kernel/svm/svm_voronoi.h
+++ b/intern/cycles/kernel/svm/svm_voronoi.h
@@ -79,7 +79,7 @@ ccl_device void voronoi_smooth_f1_1d(float w,
   float3 smoothColor = make_float3(0.0f, 0.0f, 0.0f);
   float smoothDistance = 0.0f;
   float smoothPosition = 0.0f;
-  for (int i = -3; i <= 3; i++) {
+  for (int i = -2; i <= 2; i++) {
     float cellOffset = i;
     float pointPosition = cellOffset + hash_float_01_float(cellPosition + cellOffset) * jitter;
     float distanceToPoint = voronoi_distance_1d(pointPosition, localPosition, metric, exponent);
@@ -248,8 +248,8 @@ ccl_device void voronoi_smooth_f1_2d(float2 coord,
   float3 smoothColor = make_float3(0.0f, 0.0f, 0.0f);
   float smoothDistance = 0.0f;
   float2 smoothPosition = make_float2(0.0f, 0.0f);
-  for (int j = -3; j <= 3; j++) {
-    for (int i = -3; i <= 3; i++) {
+  for (int j = -2; j <= 2; j++) {
+    for (int i = -2; i <= 2; i++) {
       float2 cellOffset = make_float2(i, j);
       float2 pointPosition = cellOffset +
                              hash_float2_01_float2(cellPosition + cellOffset) * jitter;
@@ -457,9 +457,9 @@ ccl_device void voronoi_smooth_f1_3d(float3 coord,
   float3 smoothColor = make_float3(0.0f, 0.0f, 0.0f);
   float smoothDistance = 0.0f;
   float3 smoothPosition = make_float3(0.0f, 0.0f, 0.0f);
-  for (int k = -3; k <= 3; k++) {
-    for (int j = -3; j <= 3; j++) {
-      for (int i = -3; i <= 3; i++) {
+  for (int k = -2; k <= 2; k++) {
+    for (int j = -2; j <= 2; j++) {
+      for (int i = -2; i <= 2; i++) {
         float3 cellOffset = make_float3(i, j, k);
         float3 pointPosition = cellOffset +
                                hash_float3_01_float3(cellPosition + cellOffset) * jitter;
@@ -682,10 +682,10 @@ ccl_device void voronoi_smooth_f1_4d(float4 coord,
   float3 smoothColor = make_float3(0.0f, 0.0f, 0.0f);
   float smoothDistance = 0.0f;
   float4 smoothPosition = make_float4(0.0f, 0.0f, 0.0f, 0.0f);
-  for (int u = -3; u <= 3; u++) {
-    for (int k = -3; k <= 3; k++) {
-      for (int j = -3; j <= 3; j++) {
-        for (int i = -3; i <= 3; i++) {
+  for (int u = -2; u <= 2; u++) {
+    for (int k = -2; k <= 2; k++) {
+      for (int j = -2; j <= 2; j++) {
+        for (int i = -2; i <= 2; i++) {
           float4 cellOffset = make_float4(i, j, k, u);
           float4 pointPosition = cellOffset +
                                  hash_float4_01_float4(cellPosition + cellOffset) * jitter;
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl
index 0f0d74fdc46..de1eec6ffef 100644
--- a/source/blender/gpu/shaders/gpu_shader_material.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_material.glsl
@@ -3532,7 +3532,7 @@ void node_tex_voronoi_smooth_f1_1d(vec3 coord,
   float smoothDistance = 0.0;
   float smoothPosition = 0.0;
   vec3 smoothColor = vec3(0.0);
-  for (int i = -3; i <= 3; i++) {
+  for (int i = -2; i <= 2; i++) {
     float cellOffset = float(i);
     float pointPosition = cellOffset + hash_01(cellPosition + cellOffset) * jitter;
     float distanceToPoint = voronoi_distance(pointPosition, localPosition, metric, exponent);
@@ -3748,8 +3748,8 @@ void node_tex_voronoi_smooth_f1_2d(vec3 coord,
   vec3 smoothColor = vec3(0.0);
   float smoothDistance = 0.0;
   vec2 smoothPosition = vec2(0.0);
-  for (int j = -3; j <= 3; j++) {
-    for (int i = -3; i <= 3; i++) {
+  for (int j = -2; j <= 2; j++) {
+    for (int i = -2; i <= 2; i++) {
       vec2 cellOffset = vec2(i, j);
       vec2 pointPosition = cellOffset + hash_01_vec2(cellPosition + cellOffset) * jitter;
       float distanceToPoint = voronoi_distance(pointPosition, localPosition, metric, exponent);
@@ -3998,9 +3998,9 @@ void node_tex_voronoi_smooth_f1_3d(vec3 coord,
   vec3 smoothColor = vec3(0.0);
   float smoothDistance = 0.0;
   vec3 smoothPosition = vec3(0.0);
-  for (int k = -3; k <= 3; k++) {
-    for (int j = -3; j <= 3; j++) {
-      for (int i = -3; i <= 3; i++) {
+  for (int k = -2; k <= 2; k++) {
+    for (int j = -2; j <= 2; j++) {
+      for (int i = -2; i <= 2; i++) {
         vec3 cellOffset = vec3(i, j, k);
         vec3 pointPosition = cellOffset + hash_01_vec3(cellPosition + cellOffset) * jitter;
         float distanceToPoint = voronoi_distance(pointPosition, localPosition, metric, exponent);
@@ -4264,10 +4264,10 @@ void node_tex_voronoi_smooth_f1_4d(vec3 coord,
   vec3 smoothColor = vec3(0.0);
   float smoothDistance = 0.0;
   vec4 smoothPosition = vec4(0.0);
-  for (int u = -3; u <= 3; u++) {
-    for (int k = -3; k <= 3; k++) {
-      for (int j = -3; j <= 3; j++) {
-        for (int i = -3; i <= 3; i++) {
+  for (int u = -2; u <= 2; u++) {
+    for (int k = -2; k <= 2; k++) {
+      for (int j = -2; j <= 2; j++) {
+        for (int i = -2; i <= 2; i++) {
           vec4 cellOffset = vec4(i, j, k, u);
           vec4 pointPosition = cellOffset + hash_01_vec4(cellPosition + cellOffset) * jitter;
           float distanceToPoint = voronoi_distance(pointPosition, localPosition, metric, exponent);



More information about the Bf-blender-cvs mailing list