Add some (commented out) experiments with Halton.
Halton has less correlation artifacts than Sobol for DoF, but converges slower.
This commit is contained in:
parent
4058c63637
commit
76c56e16f9
|
@ -243,6 +243,12 @@ impl<'a> Renderer<'a> {
|
|||
let d0 = golden_ratio_sample(
|
||||
sii.wrapping_add(rrand::mix32_seed(self.seed, 1111)),
|
||||
);
|
||||
|
||||
// let siii = crate::scramble::owen2(sii, rrand::mix32_seed(self.seed, 2222));
|
||||
// let d1 = halton_2(siii, rrand::mix32_seed(self.seed, 3333));
|
||||
// let d2 = halton_3(siii, rrand::mix32_seed(self.seed, 4444));
|
||||
// let d3 = halton_5(siii, rrand::mix32_seed(self.seed, 5555));
|
||||
|
||||
let [d1, d2, d3, _] = sample_gen.next_dims_no_owen();
|
||||
sample_gen.inc_padding();
|
||||
let [d4, d5, _, _] = sample_gen.next_dims();
|
||||
|
@ -609,6 +615,41 @@ fn golden_ratio_sample(i: u32) -> f32 {
|
|||
u32_to_f32_norm(i.wrapping_mul(2654435769))
|
||||
}
|
||||
|
||||
// fn halton_2(i: u32, offset: u32) -> f32 {
|
||||
// sobol_burley::parts::u32_to_f32_norm(
|
||||
// i.reverse_bits().wrapping_add(offset)
|
||||
// )
|
||||
// }
|
||||
|
||||
// fn halton_3(mut i: u32, offset: u32) -> f32 {
|
||||
// const BASE: u32 = 3;
|
||||
// const MAX: u32 = 3486784401;
|
||||
// let mut result = 0;
|
||||
// for _ in 0..20 {
|
||||
// let next = i / BASE;
|
||||
// result *= BASE;
|
||||
// result += i - (next * BASE);
|
||||
// i = next;
|
||||
// }
|
||||
|
||||
// ((result as u64 + offset as u64) % MAX as u64) as f32 * (1.0 / MAX as f32)
|
||||
// }
|
||||
|
||||
// fn halton_5(mut i: u32, offset: u32) -> f32 {
|
||||
// const BASE: u32 = 5;
|
||||
// const MAX: u32 = 1220703125;
|
||||
// const ORDER: [u32; 5] = [0, 3, 1, 4, 2];
|
||||
// let mut result = 0;
|
||||
// for _ in 0..13 {
|
||||
// let next = i / BASE;
|
||||
// result *= BASE;
|
||||
// result += ORDER[(i - (next * BASE)) as usize];
|
||||
// i = next;
|
||||
// }
|
||||
|
||||
// ((result as u64 + offset as u64) % MAX as u64) as f32 * (1.0 / MAX as f32)
|
||||
// }
|
||||
|
||||
#[derive(Debug)]
|
||||
struct BucketJob {
|
||||
x: u32,
|
||||
|
|
Loading…
Reference in New Issue
Block a user