diff options
| author | nsfisis <nsfisis@gmail.com> | 2023-01-28 22:16:25 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2023-01-28 22:16:25 +0900 |
| commit | d3e46dfda0a4d376c4648ecad5012e2302ddcea6 (patch) | |
| tree | 1a8f37aedd52da13ac2267139fce0be38a334069 /src/rtw/perlin.zig | |
| parent | 84b019965f63d02f0d8f6e3a108f7d29ffa23076 (diff) | |
| download | RayTracingInOneWeekend.zig-d3e46dfda0a4d376c4648ecad5012e2302ddcea6.tar.gz RayTracingInOneWeekend.zig-d3e46dfda0a4d376c4648ecad5012e2302ddcea6.tar.zst RayTracingInOneWeekend.zig-d3e46dfda0a4d376c4648ecad5012e2302ddcea6.zip | |
5.6
Diffstat (limited to 'src/rtw/perlin.zig')
| -rw-r--r-- | src/rtw/perlin.zig | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/rtw/perlin.zig b/src/rtw/perlin.zig index b00291f..c60bb34 100644 --- a/src/rtw/perlin.zig +++ b/src/rtw/perlin.zig @@ -78,6 +78,19 @@ pub const Perlin = struct { return perlinInterp(c, u_, v_, w_); } + pub fn turb(perlin: Perlin, p: Point3, depth: u8) f64 { + var accum: f64 = 0.0; + var p_ = p; + var weight: f64 = 1.0; + var i: u8 = 0; + while (i < depth) : (i += 1) { + accum += weight * perlin.noise(p_); + weight *= 0.5; + p_ = p_.mul(2.0); + } + return @fabs(accum); + } + fn permute(rng: Random, p: []usize, n: usize) void { var i = n - 1; while (i > 0) : (i -= 1) { |
