|
1 | 1 | import tgpu, { d, type TgpuFnShell, type TgpuSlot } from 'typegpu'; |
2 | | -import { bitcastU32toF32, cos, dot, fract, pow } from 'typegpu/std'; |
| 2 | +import { bitcastU32toF32, cos, dot, fract } from 'typegpu/std'; |
3 | 3 |
|
4 | 4 | export interface StatefulGenerator { |
5 | 5 | seed?: (seed: number) => void; |
@@ -66,21 +66,19 @@ export const LCG: StatefulGenerator = (() => { |
66 | 66 |
|
67 | 67 | return { |
68 | 68 | seed: tgpu.fn([d.f32])((value) => { |
69 | | - seed.$ = d.u32(value * pow(32, 3)); |
| 69 | + seed.$ = d.u32(value * 32768); |
70 | 70 | }), |
71 | 71 |
|
72 | 72 | seed2: tgpu.fn([d.vec2f])((value) => { |
73 | | - seed.$ = d.u32(value.x * pow(32, 3) + value.y * pow(32, 2)); |
| 73 | + seed.$ = d.u32(value.x * 32768 + value.y * 1024); |
74 | 74 | }), |
75 | 75 |
|
76 | 76 | seed3: tgpu.fn([d.vec3f])((value) => { |
77 | | - seed.$ = d.u32(value.x * pow(32, 3) + value.y * pow(32, 2) + value.z * pow(32, 1)); |
| 77 | + seed.$ = d.u32(value.x * 32768 + value.y * 1024 + value.z * 32); |
78 | 78 | }), |
79 | 79 |
|
80 | 80 | seed4: tgpu.fn([d.vec4f])((value) => { |
81 | | - seed.$ = d.u32( |
82 | | - value.x * pow(32, 3) + value.y * pow(32, 2) + value.z * pow(32, 1) + value.w * pow(32, 0), |
83 | | - ); |
| 81 | + seed.$ = d.u32(value.x * 32768 + value.y * 1024 + value.z * 32 + value.w); |
84 | 82 | }), |
85 | 83 |
|
86 | 84 | sample: randomGeneratorShell(() => { |
|
0 commit comments