From 540713daae87e0b0fbb9314426ac6af0296b7cec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?T=C3=81NCZOS=20Vilmos=20Zsombor?= Date: Sun, 1 Jun 2025 00:17:27 +0200 Subject: [PATCH] added scaling with sane default --- assets/shaders/mandelbulb.wgsl | 10 +++++++--- src/mandelbulb.rs | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/assets/shaders/mandelbulb.wgsl b/assets/shaders/mandelbulb.wgsl index dba3c79..2914d4f 100644 --- a/assets/shaders/mandelbulb.wgsl +++ b/assets/shaders/mandelbulb.wgsl @@ -14,13 +14,17 @@ struct VoluMaterial { max_steps: i32, ray_epsilon: f32, normal_epsilon: f32, + scale: f32, } @group(2) @binding(100) var volu_material: VoluMaterial; fn mandelbulb_sdf(p: vec3) -> f32 { - var z = p; + let scale = volu_material.scale; + let p_scaled = p / scale; + + var z = p_scaled; var dr = 1.0; var r = 0.0; let power = volu_material.power; @@ -44,10 +48,10 @@ fn mandelbulb_sdf(p: vec3) -> f32 { sin(new_theta) * cos(new_phi), sin(new_theta) * sin(new_phi), cos(new_theta) - ) + p; + ) + p_scaled; } - return 0.5 * log(max(r, 0.001)) * r / dr; + return 0.5 * log(max(r, 0.001)) * r / dr * scale; } fn mandelbulb_normal(p: vec3) -> vec3 { diff --git a/src/mandelbulb.rs b/src/mandelbulb.rs index f45c967..5b066d5 100644 --- a/src/mandelbulb.rs +++ b/src/mandelbulb.rs @@ -28,6 +28,7 @@ struct MandelbulbSettings { max_steps: i32, ray_epsilon: f32, normal_epsilon: f32, + scale: f32, } impl Default for MandelbulbSettings { @@ -39,6 +40,7 @@ impl Default for MandelbulbSettings { max_steps: 128, ray_epsilon: 0.001, normal_epsilon: 0.001, + scale: 0.7, } } } @@ -63,6 +65,7 @@ fn update_volu_material( max_steps, ray_epsilon, normal_epsilon, + scale, } = *settings; let volu_storage = MandelbulbStorage { @@ -74,6 +77,7 @@ fn update_volu_material( max_steps, ray_epsilon, normal_epsilon, + scale, }; buffer.set_data(volu_storage); @@ -114,4 +118,5 @@ pub struct MandelbulbStorage { max_steps: i32, ray_epsilon: f32, normal_epsilon: f32, + scale: f32, }