Add Fractal Voronoi Noise V.2 #106827

Merged
Jacques Lucke merged 77 commits from Hoshinova/blender:add-fractal-voronoi into main 2023-06-13 09:18:18 +02:00
4 changed files with 30 additions and 28 deletions
Showing only changes of commit bd5a70d9b7 - Show all commits

View File

@ -417,6 +417,7 @@ set(GLSL_SRC
shaders/material/gpu_shader_material_eevee_specular.glsl
shaders/material/gpu_shader_material_emission.glsl
shaders/material/gpu_shader_material_fractal_noise.glsl
shaders/material/gpu_shader_material_fractal_voronoi.glsl
shaders/material/gpu_shader_material_fresnel.glsl
shaders/material/gpu_shader_material_gamma.glsl
shaders/material/gpu_shader_material_geometry.glsl
@ -481,6 +482,7 @@ set(GLSL_SRC
shaders/material/gpu_shader_material_volume_absorption.glsl
shaders/material/gpu_shader_material_volume_principled.glsl
shaders/material/gpu_shader_material_volume_scatter.glsl
shaders/material/gpu_shader_material_voronoi.glsl
shaders/material/gpu_shader_material_wireframe.glsl
shaders/material/gpu_shader_material_world_normals.glsl

View File

@ -19,6 +19,6 @@ void fractal_voronoi_f1_3d(vec3 coord,
randomness,
metric,
outDistance,
vec4 outColor,
vec3 outPosition);
outColor,
outPosition);
}

View File

@ -1107,31 +1107,6 @@ void node_tex_voronoi_n_sphere_radius_2d(vec3 coord,
/* **** 3D Voronoi **** */
float voronoi_distance(vec3 a, vec3 b, float metric, float exponent)
{
if (metric == 0.0) // SHD_VORONOI_EUCLIDEAN
{
return distance(a, b);
}
else if (metric == 1.0) // SHD_VORONOI_MANHATTAN
{
return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);
}
else if (metric == 2.0) // SHD_VORONOI_CHEBYCHEV
{
return max(abs(a.x - b.x), max(abs(a.y - b.y), abs(a.z - b.z)));
}
else if (metric == 3.0) // SHD_VORONOI_MINKOWSKI
{
return pow(pow(abs(a.x - b.x), exponent) + pow(abs(a.y - b.y), exponent) +
pow(abs(a.z - b.z), exponent),
1.0 / exponent);
}
else {
return 0.0;
}
}
void node_tex_voronoi_f1_3d(vec3 coord,
float w,
float scale,

View File

@ -1,7 +1,32 @@
#pragma BLENDER_REQUIRE(gpu_shader_common_hash.glsl)
#pragma BLENDER_REQUIRE(gpu_shader_common_math_utils.glsl)
voronoi_f1_3d(vec3 coord,
float voronoi_distance(vec3 a, vec3 b, float metric, float exponent)
{
if (metric == 0.0) // SHD_VORONOI_EUCLIDEAN
{
return distance(a, b);
}
else if (metric == 1.0) // SHD_VORONOI_MANHATTAN
{
return abs(a.x - b.x) + abs(a.y - b.y) + abs(a.z - b.z);
}
else if (metric == 2.0) // SHD_VORONOI_CHEBYCHEV
{
return max(abs(a.x - b.x), max(abs(a.y - b.y), abs(a.z - b.z)));
}
else if (metric == 3.0) // SHD_VORONOI_MINKOWSKI
{
return pow(pow(abs(a.x - b.x), exponent) + pow(abs(a.y - b.y), exponent) +
pow(abs(a.z - b.z), exponent),
1.0 / exponent);
}
else {
return 0.0;
}
}
void voronoi_f1_3d(vec3 coord,
float scale,
float exponent,
float randomness,