Cleanup: Use defines in Voronoi GLSL implementation
Use defines in Voronoi GLSL implementation instead of magic numbers. Pull Request: https://projects.blender.org/blender/blender/pulls/109289
This commit is contained in:
@@ -18,10 +18,10 @@
|
||||
\
|
||||
for (int i = 0; i <= ceil(params.detail); ++i) { \
|
||||
VoronoiOutput octave; \
|
||||
if (params.feature == 1) /* SHD_VORONOI_F1 */ { \
|
||||
if (params.feature == SHD_VORONOI_F2) { \
|
||||
octave = voronoi_f2(params, coord * scale); \
|
||||
} \
|
||||
else if (params.feature == 2 && params.smoothness != 0.0) /* SHD_VORONOI_SMOOTH_F1 */ { \
|
||||
else if (params.feature == SHD_VORONOI_SMOOTH_F1 && params.smoothness != 0.0) { \
|
||||
octave = voronoi_smooth_f1(params, coord * scale); \
|
||||
} \
|
||||
else { \
|
||||
|
||||
@@ -53,7 +53,7 @@ void node_tex_voronoi_f1_1d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(0) // SHD_VORONOI_F1
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_F1)
|
||||
|
||||
w *= scale;
|
||||
|
||||
@@ -83,7 +83,7 @@ void node_tex_voronoi_smooth_f1_1d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(2) // SHD_VORONOI_SMOOTH_F1
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_SMOOTH_F1)
|
||||
|
||||
w *= scale;
|
||||
|
||||
@@ -113,7 +113,7 @@ void node_tex_voronoi_f2_1d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(1) // SHD_VORONOI_F2
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_F2)
|
||||
|
||||
w *= scale;
|
||||
|
||||
@@ -143,7 +143,7 @@ void node_tex_voronoi_distance_to_edge_1d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(3) // SHD_VORONOI_DISTANCE_TO_EDGE
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_DISTANCE_TO_EDGE)
|
||||
|
||||
w *= scale;
|
||||
|
||||
@@ -169,7 +169,7 @@ void node_tex_voronoi_n_sphere_radius_1d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(4) // SHD_VORONOI_N_SPHERE_RADIUS
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_N_SPHERE_RADIUS)
|
||||
|
||||
w *= scale;
|
||||
|
||||
@@ -197,7 +197,7 @@ void node_tex_voronoi_f1_2d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(0) // SHD_VORONOI_F1
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_F1)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -227,7 +227,7 @@ void node_tex_voronoi_smooth_f1_2d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(2) // SHD_VORONOI_SMOOTH_F1
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_SMOOTH_F1)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -257,7 +257,7 @@ void node_tex_voronoi_f2_2d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(1) // SHD_VORONOI_F2
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_F2)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -288,7 +288,7 @@ void node_tex_voronoi_distance_to_edge_2d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(3) // SHD_VORONOI_DISTANCE_TO_EDGE
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_DISTANCE_TO_EDGE)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -314,7 +314,7 @@ void node_tex_voronoi_n_sphere_radius_2d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(4) // SHD_VORONOI_N_SPHERE_RADIUS
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_N_SPHERE_RADIUS)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -342,7 +342,7 @@ void node_tex_voronoi_f1_3d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(0) // SHD_VORONOI_F1
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_F1)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -372,7 +372,7 @@ void node_tex_voronoi_smooth_f1_3d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(2) // SHD_VORONOI_SMOOTH_F1
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_SMOOTH_F1)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -402,7 +402,7 @@ void node_tex_voronoi_f2_3d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(1) // SHD_VORONOI_F2
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_F2)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -433,7 +433,7 @@ void node_tex_voronoi_distance_to_edge_3d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(3) // SHD_VORONOI_DISTANCE_TO_EDGE
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_DISTANCE_TO_EDGE)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -459,7 +459,7 @@ void node_tex_voronoi_n_sphere_radius_3d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(4) // SHD_VORONOI_N_SPHERE_RADIUS
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_N_SPHERE_RADIUS)
|
||||
|
||||
coord *= scale;
|
||||
|
||||
@@ -487,7 +487,7 @@ void node_tex_voronoi_f1_4d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(0) // SHD_VORONOI_F1
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_F1)
|
||||
|
||||
w *= scale;
|
||||
coord *= scale;
|
||||
@@ -519,7 +519,7 @@ void node_tex_voronoi_smooth_f1_4d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(2) // SHD_VORONOI_SMOOTH_F1
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_SMOOTH_F1)
|
||||
|
||||
w *= scale;
|
||||
coord *= scale;
|
||||
@@ -551,7 +551,7 @@ void node_tex_voronoi_f2_4d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(1) // SHD_VORONOI_F2
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_F2)
|
||||
|
||||
w *= scale;
|
||||
coord *= scale;
|
||||
@@ -584,7 +584,7 @@ void node_tex_voronoi_distance_to_edge_4d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(3) // SHD_VORONOI_DISTANCE_TO_EDGE
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_DISTANCE_TO_EDGE)
|
||||
|
||||
w *= scale;
|
||||
coord *= scale;
|
||||
@@ -611,7 +611,7 @@ void node_tex_voronoi_n_sphere_radius_4d(vec3 coord,
|
||||
{
|
||||
VoronoiParams params;
|
||||
|
||||
INITIALIZE_VORONOIPARAMS(4) // SHD_VORONOI_N_SPHERE_RADIUS
|
||||
INITIALIZE_VORONOIPARAMS(SHD_VORONOI_N_SPHERE_RADIUS)
|
||||
|
||||
w *= scale;
|
||||
coord *= scale;
|
||||
|
||||
@@ -17,6 +17,17 @@
|
||||
* as explained in https://www.shadertoy.com/view/llG3zy.
|
||||
*/
|
||||
|
||||
#define SHD_VORONOI_EUCLIDEAN 0
|
||||
#define SHD_VORONOI_MANHATTAN 1
|
||||
#define SHD_VORONOI_CHEBYCHEV 2
|
||||
#define SHD_VORONOI_MINKOWSKI 3
|
||||
|
||||
#define SHD_VORONOI_F1 0
|
||||
#define SHD_VORONOI_F2 1
|
||||
#define SHD_VORONOI_SMOOTH_F1 2
|
||||
#define SHD_VORONOI_DISTANCE_TO_EDGE 3
|
||||
#define SHD_VORONOI_N_SPHERE_RADIUS 4
|
||||
|
||||
struct VoronoiParams {
|
||||
float scale;
|
||||
float detail;
|
||||
@@ -46,20 +57,16 @@ float voronoi_distance(float a, float b)
|
||||
|
||||
float voronoi_distance(vec2 a, vec2 b, VoronoiParams params)
|
||||
{
|
||||
if (params.metric == 0) // SHD_VORONOI_EUCLIDEAN
|
||||
{
|
||||
if (params.metric == SHD_VORONOI_EUCLIDEAN) {
|
||||
return distance(a, b);
|
||||
}
|
||||
else if (params.metric == 1) // SHD_VORONOI_MANHATTAN
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_MANHATTAN) {
|
||||
return abs(a.x - b.x) + abs(a.y - b.y);
|
||||
}
|
||||
else if (params.metric == 2) // SHD_VORONOI_CHEBYCHEV
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_CHEBYCHEV) {
|
||||
return max(abs(a.x - b.x), abs(a.y - b.y));
|
||||
}
|
||||
else if (params.metric == 3) // SHD_VORONOI_MINKOWSKI
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_MINKOWSKI) {
|
||||
return pow(pow(abs(a.x - b.x), params.exponent) + pow(abs(a.y - b.y), params.exponent),
|
||||
1.0 / params.exponent);
|
||||
}
|
||||
@@ -70,20 +77,16 @@ float voronoi_distance(vec2 a, vec2 b, VoronoiParams params)
|
||||
|
||||
float voronoi_distance(vec3 a, vec3 b, VoronoiParams params)
|
||||
{
|
||||
if (params.metric == 0) // SHD_VORONOI_EUCLIDEAN
|
||||
{
|
||||
if (params.metric == SHD_VORONOI_EUCLIDEAN) {
|
||||
return distance(a, b);
|
||||
}
|
||||
else if (params.metric == 1) // SHD_VORONOI_MANHATTAN
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_MANHATTAN) {
|
||||
return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);
|
||||
}
|
||||
else if (params.metric == 2) // SHD_VORONOI_CHEBYCHEV
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_CHEBYCHEV) {
|
||||
return max(abs(a.x - b.x), max(abs(a.y - b.y), abs(a.z - b.z)));
|
||||
}
|
||||
else if (params.metric == 3) // SHD_VORONOI_MINKOWSKI
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_MINKOWSKI) {
|
||||
return pow(pow(abs(a.x - b.x), params.exponent) + pow(abs(a.y - b.y), params.exponent) +
|
||||
pow(abs(a.z - b.z), params.exponent),
|
||||
1.0 / params.exponent);
|
||||
@@ -95,20 +98,16 @@ float voronoi_distance(vec3 a, vec3 b, VoronoiParams params)
|
||||
|
||||
float voronoi_distance(vec4 a, vec4 b, VoronoiParams params)
|
||||
{
|
||||
if (params.metric == 0) // SHD_VORONOI_EUCLIDEAN
|
||||
{
|
||||
if (params.metric == SHD_VORONOI_EUCLIDEAN) {
|
||||
return distance(a, b);
|
||||
}
|
||||
else if (params.metric == 1) // SHD_VORONOI_MANHATTAN
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_MANHATTAN) {
|
||||
return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z) + abs(a.w - b.w);
|
||||
}
|
||||
else if (params.metric == 2) // SHD_VORONOI_CHEBYCHEV
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_CHEBYCHEV) {
|
||||
return max(abs(a.x - b.x), max(abs(a.y - b.y), max(abs(a.z - b.z), abs(a.w - b.w))));
|
||||
}
|
||||
else if (params.metric == 3) // SHD_VORONOI_MINKOWSKI
|
||||
{
|
||||
else if (params.metric == SHD_VORONOI_MINKOWSKI) {
|
||||
return pow(pow(abs(a.x - b.x), params.exponent) + pow(abs(a.y - b.y), params.exponent) +
|
||||
pow(abs(a.z - b.z), params.exponent) + pow(abs(a.w - b.w), params.exponent),
|
||||
1.0 / params.exponent);
|
||||
|
||||
Reference in New Issue
Block a user