Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/shader/nodes/node_shader_tex_voronoi.cc
| Show First 20 Lines • Show All 326 Lines • ▼ Show 20 Lines | switch (dimensions_) { | ||||
| const VArray<float> &randomness = get_randomness(param++); | const VArray<float> &randomness = get_randomness(param++); | ||||
| MutableSpan<float> r_distance = get_r_distance(param++); | MutableSpan<float> r_distance = get_r_distance(param++); | ||||
| MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | ||||
| MutableSpan<float3> r_position = get_r_position(param++); | MutableSpan<float3> r_position = get_r_position(param++); | ||||
| const bool calc_distance = !r_distance.is_empty(); | const bool calc_distance = !r_distance.is_empty(); | ||||
| const bool calc_color = !r_color.is_empty(); | const bool calc_color = !r_color.is_empty(); | ||||
| const bool calc_position = !r_position.is_empty(); | const bool calc_position = !r_position.is_empty(); | ||||
| for (int64_t i : mask) { | for (int64_t i : mask) { | ||||
| const float smth = std::min(std::max(smoothness[i] / 2.0f, 0.0f), 0.5f); | const float smth = std::min(std::max(smoothness[i] / 2.0f, FLT_EPSILON), 0.5f); | ||||
| const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | ||||
| float3 col; | float3 col; | ||||
| float2 pos; | float2 pos; | ||||
| noise::voronoi_smooth_f1(float2(vector[i].x, vector[i].y) * scale[i], | noise::voronoi_smooth_f1(float2(vector[i].x, vector[i].y) * scale[i], | ||||
| smth, | smth, | ||||
| exponent[i], | exponent[i], | ||||
| rand, | rand, | ||||
| SHD_VORONOI_MINKOWSKI, | SHD_VORONOI_MINKOWSKI, | ||||
| ▲ Show 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | switch (dimensions_) { | ||||
| const VArray<float> &randomness = get_randomness(param++); | const VArray<float> &randomness = get_randomness(param++); | ||||
| MutableSpan<float> r_distance = get_r_distance(param++); | MutableSpan<float> r_distance = get_r_distance(param++); | ||||
| MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | ||||
| MutableSpan<float3> r_position = get_r_position(param++); | MutableSpan<float3> r_position = get_r_position(param++); | ||||
| const bool calc_distance = !r_distance.is_empty(); | const bool calc_distance = !r_distance.is_empty(); | ||||
| const bool calc_color = !r_color.is_empty(); | const bool calc_color = !r_color.is_empty(); | ||||
| const bool calc_position = !r_position.is_empty(); | const bool calc_position = !r_position.is_empty(); | ||||
| for (int64_t i : mask) { | for (int64_t i : mask) { | ||||
| const float smth = std::min(std::max(smoothness[i] / 2.0f, 0.0f), 0.5f); | const float smth = std::min(std::max(smoothness[i] / 2.0f, FLT_EPSILON), 0.5f); | ||||
| const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | ||||
| float3 col; | float3 col; | ||||
| noise::voronoi_smooth_f1(vector[i] * scale[i], | noise::voronoi_smooth_f1(vector[i] * scale[i], | ||||
| smth, | smth, | ||||
| exponent[i], | exponent[i], | ||||
| rand, | rand, | ||||
| SHD_VORONOI_MINKOWSKI, | SHD_VORONOI_MINKOWSKI, | ||||
| calc_distance ? &r_distance[i] : nullptr, | calc_distance ? &r_distance[i] : nullptr, | ||||
| ▲ Show 20 Lines • Show All 106 Lines • ▼ Show 20 Lines | switch (dimensions_) { | ||||
| MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | ||||
| MutableSpan<float3> r_position = get_r_position(param++); | MutableSpan<float3> r_position = get_r_position(param++); | ||||
| MutableSpan<float> r_w = get_r_w(param++); | MutableSpan<float> r_w = get_r_w(param++); | ||||
| const bool calc_distance = !r_distance.is_empty(); | const bool calc_distance = !r_distance.is_empty(); | ||||
| const bool calc_color = !r_color.is_empty(); | const bool calc_color = !r_color.is_empty(); | ||||
| const bool calc_position = !r_position.is_empty(); | const bool calc_position = !r_position.is_empty(); | ||||
| const bool calc_w = !r_w.is_empty(); | const bool calc_w = !r_w.is_empty(); | ||||
| for (int64_t i : mask) { | for (int64_t i : mask) { | ||||
| const float smth = std::min(std::max(smoothness[i] / 2.0f, 0.0f), 0.5f); | const float smth = std::min(std::max(smoothness[i] / 2.0f, FLT_EPSILON), 0.5f); | ||||
| const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | ||||
| const float4 p = float4(vector[i].x, vector[i].y, vector[i].z, w[i]) * scale[i]; | const float4 p = float4(vector[i].x, vector[i].y, vector[i].z, w[i]) * scale[i]; | ||||
| float3 col; | float3 col; | ||||
| float4 pos; | float4 pos; | ||||
| noise::voronoi_smooth_f1(p, | noise::voronoi_smooth_f1(p, | ||||
| smth, | smth, | ||||
| exponent[i], | exponent[i], | ||||
| rand, | rand, | ||||
| ▲ Show 20 Lines • Show All 180 Lines • ▼ Show 20 Lines | switch (dimensions_) { | ||||
| MutableSpan<float> r_distance = get_r_distance(param++); | MutableSpan<float> r_distance = get_r_distance(param++); | ||||
| MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | ||||
| MutableSpan<float> r_w = get_r_w(param++); | MutableSpan<float> r_w = get_r_w(param++); | ||||
| const bool calc_distance = !r_distance.is_empty(); | const bool calc_distance = !r_distance.is_empty(); | ||||
| const bool calc_color = !r_color.is_empty(); | const bool calc_color = !r_color.is_empty(); | ||||
| const bool calc_w = !r_w.is_empty(); | const bool calc_w = !r_w.is_empty(); | ||||
| for (int64_t i : mask) { | for (int64_t i : mask) { | ||||
| const float p = w[i] * scale[i]; | const float p = w[i] * scale[i]; | ||||
| const float smth = std::min(std::max(smoothness[i] / 2.0f, 0.0f), 0.5f); | const float smth = std::min(std::max(smoothness[i] / 2.0f, FLT_EPSILON), 0.5f); | ||||
| const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | ||||
| float3 col; | float3 col; | ||||
| noise::voronoi_smooth_f1(p, | noise::voronoi_smooth_f1(p, | ||||
| smth, | smth, | ||||
| rand, | rand, | ||||
| calc_distance ? &r_distance[i] : nullptr, | calc_distance ? &r_distance[i] : nullptr, | ||||
| calc_color ? &col : nullptr, | calc_color ? &col : nullptr, | ||||
| calc_w ? &r_w[i] : nullptr); | calc_w ? &r_w[i] : nullptr); | ||||
| ▲ Show 20 Lines • Show All 80 Lines • ▼ Show 20 Lines | switch (dimensions_) { | ||||
| const VArray<float> &randomness = get_randomness(param++); | const VArray<float> &randomness = get_randomness(param++); | ||||
| MutableSpan<float> r_distance = get_r_distance(param++); | MutableSpan<float> r_distance = get_r_distance(param++); | ||||
| MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | ||||
| MutableSpan<float3> r_position = get_r_position(param++); | MutableSpan<float3> r_position = get_r_position(param++); | ||||
| const bool calc_distance = !r_distance.is_empty(); | const bool calc_distance = !r_distance.is_empty(); | ||||
| const bool calc_color = !r_color.is_empty(); | const bool calc_color = !r_color.is_empty(); | ||||
| const bool calc_position = !r_position.is_empty(); | const bool calc_position = !r_position.is_empty(); | ||||
| for (int64_t i : mask) { | for (int64_t i : mask) { | ||||
| const float smth = std::min(std::max(smoothness[i] / 2.0f, 0.0f), 0.5f); | const float smth = std::min(std::max(smoothness[i] / 2.0f, FLT_EPSILON), 0.5f); | ||||
| const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | ||||
| float3 col; | float3 col; | ||||
| float2 pos; | float2 pos; | ||||
| noise::voronoi_smooth_f1(float2(vector[i].x, vector[i].y) * scale[i], | noise::voronoi_smooth_f1(float2(vector[i].x, vector[i].y) * scale[i], | ||||
| smth, | smth, | ||||
| 0.0f, | 0.0f, | ||||
| rand, | rand, | ||||
| metric_, | metric_, | ||||
| ▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Lines | switch (dimensions_) { | ||||
| MutableSpan<float> r_distance = get_r_distance(param++); | MutableSpan<float> r_distance = get_r_distance(param++); | ||||
| MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | ||||
| MutableSpan<float3> r_position = get_r_position(param++); | MutableSpan<float3> r_position = get_r_position(param++); | ||||
| const bool calc_distance = !r_distance.is_empty(); | const bool calc_distance = !r_distance.is_empty(); | ||||
| const bool calc_color = !r_color.is_empty(); | const bool calc_color = !r_color.is_empty(); | ||||
| const bool calc_position = !r_position.is_empty(); | const bool calc_position = !r_position.is_empty(); | ||||
| { | { | ||||
| for (int64_t i : mask) { | for (int64_t i : mask) { | ||||
| const float smth = std::min(std::max(smoothness[i] / 2.0f, 0.0f), 0.5f); | const float smth = std::min(std::max(smoothness[i] / 2.0f, FLT_EPSILON), 0.5f); | ||||
| const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | ||||
| float3 col; | float3 col; | ||||
| noise::voronoi_smooth_f1(vector[i] * scale[i], | noise::voronoi_smooth_f1(vector[i] * scale[i], | ||||
| smth, | smth, | ||||
| 0.0f, | 0.0f, | ||||
| rand, | rand, | ||||
| metric_, | metric_, | ||||
| calc_distance ? &r_distance[i] : nullptr, | calc_distance ? &r_distance[i] : nullptr, | ||||
| ▲ Show 20 Lines • Show All 105 Lines • ▼ Show 20 Lines | switch (dimensions_) { | ||||
| MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | MutableSpan<ColorGeometry4f> r_color = get_r_color(param++); | ||||
| MutableSpan<float3> r_position = get_r_position(param++); | MutableSpan<float3> r_position = get_r_position(param++); | ||||
| MutableSpan<float> r_w = get_r_w(param++); | MutableSpan<float> r_w = get_r_w(param++); | ||||
| const bool calc_distance = !r_distance.is_empty(); | const bool calc_distance = !r_distance.is_empty(); | ||||
| const bool calc_color = !r_color.is_empty(); | const bool calc_color = !r_color.is_empty(); | ||||
| const bool calc_position = !r_position.is_empty(); | const bool calc_position = !r_position.is_empty(); | ||||
| const bool calc_w = !r_w.is_empty(); | const bool calc_w = !r_w.is_empty(); | ||||
| for (int64_t i : mask) { | for (int64_t i : mask) { | ||||
| const float smth = std::min(std::max(smoothness[i] / 2.0f, 0.0f), 0.5f); | const float smth = std::min(std::max(smoothness[i] / 2.0f, FLT_EPSILON), 0.5f); | ||||
| const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | const float rand = std::min(std::max(randomness[i], 0.0f), 1.0f); | ||||
| const float4 p = float4(vector[i].x, vector[i].y, vector[i].z, w[i]) * scale[i]; | const float4 p = float4(vector[i].x, vector[i].y, vector[i].z, w[i]) * scale[i]; | ||||
| float3 col; | float3 col; | ||||
| float4 pos; | float4 pos; | ||||
| noise::voronoi_smooth_f1(p, | noise::voronoi_smooth_f1(p, | ||||
| smth, | smth, | ||||
| 0.0f, | 0.0f, | ||||
| rand, | rand, | ||||
| ▲ Show 20 Lines • Show All 239 Lines • Show Last 20 Lines | |||||