diff options
author | Bastien Montagne <bastien@blender.org> | 2022-08-26 19:09:05 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-08-26 19:09:05 +0300 |
commit | 167e2fda15fa00e1676713e67496cd7c7db1c8d2 (patch) | |
tree | ed0af0b499cca069e079c70553ac7b70d015841e /source/blender/gpu/shaders | |
parent | aaea263be4d0ffc5b23ac5752a1d15d31eb9c7ca (diff) | |
parent | 8181494ffe3a7f73f2faac2cfd7eecee9aa8439a (diff) |
Merge branch 'blender-v3.3-release'
Diffstat (limited to 'source/blender/gpu/shaders')
-rw-r--r-- | source/blender/gpu/shaders/material/gpu_shader_material_tex_musgrave.glsl | 68 |
1 files changed, 40 insertions, 28 deletions
diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_tex_musgrave.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_tex_musgrave.glsl index 961fe23e67e..7171c5f2b36 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_tex_musgrave.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_tex_musgrave.glsl @@ -153,13 +153,12 @@ void node_tex_musgrave_hybrid_multi_fractal_1d(vec3 co, float lacunarity = max(lac, 1e-5); float pwHL = pow(lacunarity, -H); - float pwr = pwHL; - float value = snoise(p) + offset; - float weight = gain * value; - p *= lacunarity; + float pwr = 1.0; + float value = 0.0; + float weight = 1.0; - for (int i = 1; (weight > 0.001f) && (i < int(octaves)); i++) { + for (int i = 0; (weight > 0.001f) && (i < int(octaves)); i++) { if (weight > 1.0) { weight = 1.0; } @@ -172,8 +171,12 @@ void node_tex_musgrave_hybrid_multi_fractal_1d(vec3 co, } float rmd = octaves - floor(octaves); - if (rmd != 0.0) { - value += rmd * ((snoise(p) + offset) * pwr); + if ((rmd != 0.0) && (weight > 0.001f)) { + if (weight > 1.0) { + weight = 1.0; + } + float signal = (snoise(p) + offset) * pwr; + value += rmd * weight * signal; } fac = value; @@ -375,13 +378,12 @@ void node_tex_musgrave_hybrid_multi_fractal_2d(vec3 co, float lacunarity = max(lac, 1e-5); float pwHL = pow(lacunarity, -H); - float pwr = pwHL; - float value = snoise(p) + offset; - float weight = gain * value; - p *= lacunarity; + float pwr = 1.0; + float value = 0.0; + float weight = 1.0; - for (int i = 1; (weight > 0.001f) && (i < int(octaves)); i++) { + for (int i = 0; (weight > 0.001f) && (i < int(octaves)); i++) { if (weight > 1.0) { weight = 1.0; } @@ -394,8 +396,12 @@ void node_tex_musgrave_hybrid_multi_fractal_2d(vec3 co, } float rmd = octaves - floor(octaves); - if (rmd != 0.0) { - value += rmd * ((snoise(p) + offset) * pwr); + if ((rmd != 0.0) && (weight > 0.001f)) { + if (weight > 1.0) { + weight = 1.0; + } + float signal = (snoise(p) + offset) * pwr; + value += rmd * weight * signal; } fac = value; @@ -597,13 +603,12 @@ void node_tex_musgrave_hybrid_multi_fractal_3d(vec3 co, float lacunarity = max(lac, 1e-5); float pwHL = pow(lacunarity, -H); - float pwr = pwHL; - float value = snoise(p) + offset; - float weight = gain * value; - p *= lacunarity; + float pwr = 1.0; + float value = 0.0; + float weight = 1.0; - for (int i = 1; (weight > 0.001f) && (i < int(octaves)); i++) { + for (int i = 0; (weight > 0.001f) && (i < int(octaves)); i++) { if (weight > 1.0) { weight = 1.0; } @@ -616,8 +621,12 @@ void node_tex_musgrave_hybrid_multi_fractal_3d(vec3 co, } float rmd = octaves - floor(octaves); - if (rmd != 0.0) { - value += rmd * ((snoise(p) + offset) * pwr); + if ((rmd != 0.0) && (weight > 0.001f)) { + if (weight > 1.0) { + weight = 1.0; + } + float signal = (snoise(p) + offset) * pwr; + value += rmd * weight * signal; } fac = value; @@ -819,13 +828,12 @@ void node_tex_musgrave_hybrid_multi_fractal_4d(vec3 co, float lacunarity = max(lac, 1e-5); float pwHL = pow(lacunarity, -H); - float pwr = pwHL; - float value = snoise(p) + offset; - float weight = gain * value; - p *= lacunarity; + float pwr = 1.0; + float value = 0.0; + float weight = 1.0; - for (int i = 1; (weight > 0.001f) && (i < int(octaves)); i++) { + for (int i = 0; (weight > 0.001f) && (i < int(octaves)); i++) { if (weight > 1.0) { weight = 1.0; } @@ -838,8 +846,12 @@ void node_tex_musgrave_hybrid_multi_fractal_4d(vec3 co, } float rmd = octaves - floor(octaves); - if (rmd != 0.0) { - value += rmd * ((snoise(p) + offset) * pwr); + if ((rmd != 0.0) && (weight > 0.001f)) { + if (weight > 1.0) { + weight = 1.0; + } + float signal = (snoise(p) + offset) * pwr; + value += rmd * weight * signal; } fac = value; |