added scaling with sane default
This commit is contained in:
parent
3528c56be5
commit
540713daae
2 changed files with 12 additions and 3 deletions
|
|
@ -14,13 +14,17 @@ struct VoluMaterial {
|
||||||
max_steps: i32,
|
max_steps: i32,
|
||||||
ray_epsilon: f32,
|
ray_epsilon: f32,
|
||||||
normal_epsilon: f32,
|
normal_epsilon: f32,
|
||||||
|
scale: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
@group(2) @binding(100)
|
@group(2) @binding(100)
|
||||||
var<storage, read> volu_material: VoluMaterial;
|
var<storage, read> volu_material: VoluMaterial;
|
||||||
|
|
||||||
fn mandelbulb_sdf(p: vec3<f32>) -> f32 {
|
fn mandelbulb_sdf(p: vec3<f32>) -> f32 {
|
||||||
var z = p;
|
let scale = volu_material.scale;
|
||||||
|
let p_scaled = p / scale;
|
||||||
|
|
||||||
|
var z = p_scaled;
|
||||||
var dr = 1.0;
|
var dr = 1.0;
|
||||||
var r = 0.0;
|
var r = 0.0;
|
||||||
let power = volu_material.power;
|
let power = volu_material.power;
|
||||||
|
|
@ -44,10 +48,10 @@ fn mandelbulb_sdf(p: vec3<f32>) -> f32 {
|
||||||
sin(new_theta) * cos(new_phi),
|
sin(new_theta) * cos(new_phi),
|
||||||
sin(new_theta) * sin(new_phi),
|
sin(new_theta) * sin(new_phi),
|
||||||
cos(new_theta)
|
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<f32>) -> vec3<f32> {
|
fn mandelbulb_normal(p: vec3<f32>) -> vec3<f32> {
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ struct MandelbulbSettings {
|
||||||
max_steps: i32,
|
max_steps: i32,
|
||||||
ray_epsilon: f32,
|
ray_epsilon: f32,
|
||||||
normal_epsilon: f32,
|
normal_epsilon: f32,
|
||||||
|
scale: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for MandelbulbSettings {
|
impl Default for MandelbulbSettings {
|
||||||
|
|
@ -39,6 +40,7 @@ impl Default for MandelbulbSettings {
|
||||||
max_steps: 128,
|
max_steps: 128,
|
||||||
ray_epsilon: 0.001,
|
ray_epsilon: 0.001,
|
||||||
normal_epsilon: 0.001,
|
normal_epsilon: 0.001,
|
||||||
|
scale: 0.7,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -63,6 +65,7 @@ fn update_volu_material(
|
||||||
max_steps,
|
max_steps,
|
||||||
ray_epsilon,
|
ray_epsilon,
|
||||||
normal_epsilon,
|
normal_epsilon,
|
||||||
|
scale,
|
||||||
} = *settings;
|
} = *settings;
|
||||||
|
|
||||||
let volu_storage = MandelbulbStorage {
|
let volu_storage = MandelbulbStorage {
|
||||||
|
|
@ -74,6 +77,7 @@ fn update_volu_material(
|
||||||
max_steps,
|
max_steps,
|
||||||
ray_epsilon,
|
ray_epsilon,
|
||||||
normal_epsilon,
|
normal_epsilon,
|
||||||
|
scale,
|
||||||
};
|
};
|
||||||
|
|
||||||
buffer.set_data(volu_storage);
|
buffer.set_data(volu_storage);
|
||||||
|
|
@ -114,4 +118,5 @@ pub struct MandelbulbStorage {
|
||||||
max_steps: i32,
|
max_steps: i32,
|
||||||
ray_epsilon: f32,
|
ray_epsilon: f32,
|
||||||
normal_epsilon: f32,
|
normal_epsilon: f32,
|
||||||
|
scale: f32,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue