From e45f41f2e925b9bc4d8d4fb1753cac4d3c615242 Mon Sep 17 00:00:00 2001 From: numzero Date: Mon, 23 Dec 2024 22:51:49 +0300 Subject: [PATCH] More noise options? --- src/bin/envmap/perlin.wgsl | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/bin/envmap/perlin.wgsl b/src/bin/envmap/perlin.wgsl index e5fbef6..3309e86 100644 --- a/src/bin/envmap/perlin.wgsl +++ b/src/bin/envmap/perlin.wgsl @@ -24,12 +24,14 @@ fn on_vertex(in: Vertex) -> Varying { @fragment fn on_fragment(in: Varying) -> @location(0) vec4f { + let point = in.world; +// let point = 10. * normalize(in.world - vec3f(0., 0., -10.)); 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); + result += vscale * noise(seed, hscale * point); hscale *= params.scale; vscale *= params.roughness; seed = hash(seed); @@ -37,6 +39,21 @@ fn on_fragment(in: Varying) -> @location(0) vec4f { return vec4(0.5 + 0.25 * result); } +// @fragment +// fn on_fragment(in: Varying) -> @location(0) vec4f { +// let point = in.world; +// var result = 1.0; +// var hscale = 1.0; +// var seed = params.seed; +// for (var layer = 0u; layer < params.layers; layer++) { +// result *= pow(4.0 * abs(noise(seed, hscale * point)), 0.2); +// result *= pow(clamp(1. + noise(seed, hscale * point), 0., 1.), 3.0); +// hscale *= params.scale; +// seed = hash(seed); +// } +// return vec4(result); +// } + fn noise(seed: u32, coords: vec3f) -> f32 { let s = split(coords); var ret = 0.0;