[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