Layered noise
This commit is contained in:
parent
b4b1805ce2
commit
f051b812f5
|
|
@ -37,8 +37,9 @@ fn main() {
|
||||||
&queue,
|
&queue,
|
||||||
perlin::Params {
|
perlin::Params {
|
||||||
seed: 42,
|
seed: 42,
|
||||||
layers: 4,
|
layers: 8,
|
||||||
persistence: 0.5,
|
roughness: 0.9,
|
||||||
|
scale: 1.7,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@ use glam::{Vec2, Vec3};
|
||||||
pub struct Params {
|
pub struct Params {
|
||||||
pub seed: u32,
|
pub seed: u32,
|
||||||
pub layers: u32,
|
pub layers: u32,
|
||||||
pub persistence: f32,
|
pub roughness: f32,
|
||||||
|
pub scale: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, Pod, Zeroable)]
|
#[derive(Debug, Clone, Copy, Pod, Zeroable)]
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
struct Params {
|
struct Params {
|
||||||
seed: u32,
|
seed: u32,
|
||||||
layers: u32,
|
layers: u32,
|
||||||
persistence: f32,
|
roughness: f32,
|
||||||
|
scale: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Vertex {
|
struct Vertex {
|
||||||
|
|
@ -23,16 +24,26 @@ fn on_vertex(in: Vertex) -> Varying {
|
||||||
|
|
||||||
@fragment
|
@fragment
|
||||||
fn on_fragment(in: Varying) -> @location(0) vec4f {
|
fn on_fragment(in: Varying) -> @location(0) vec4f {
|
||||||
return vec4(0.5 + 0.5 * noise(in.world));
|
var result = 0.0;
|
||||||
|
var hscale = 1.0;
|
||||||
|
var vscale = 1.0;
|
||||||
|
var seed = params.seed;
|
||||||
|
for (var layer = 0u; layer < params.layers; layer++) {
|
||||||
|
result += vscale * noise(seed, hscale * in.world);
|
||||||
|
hscale *= params.scale;
|
||||||
|
vscale *= params.roughness;
|
||||||
|
seed = hash(seed);
|
||||||
|
}
|
||||||
|
return vec4(0.5 + 0.25 * result);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn noise(coords: vec3f) -> f32 {
|
fn noise(seed: u32, coords: vec3f) -> f32 {
|
||||||
let s = split(coords);
|
let s = split(coords);
|
||||||
var ret = 0.0;
|
var ret = 0.0;
|
||||||
for (var i = 0u; i < 2; i++) {
|
for (var i = 0u; i < 2; i++) {
|
||||||
for (var j = 0u; j < 2; j++) {
|
for (var j = 0u; j < 2; j++) {
|
||||||
for (var k = 0u; k < 2; k++) {
|
for (var k = 0u; k < 2; k++) {
|
||||||
ret += part(params.seed, s, vec3u(i, j, k));
|
ret += part(seed, s, vec3u(i, j, k));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user