From 9d944f26d359e4bc1ffd8e44350b0df9f0935b18 Mon Sep 17 00:00:00 2001 From: pryazha Date: Sun, 15 Jun 2025 16:11:31 +0500 Subject: something --- advanced_lighting/9.ssao/xoshiro128plus.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 advanced_lighting/9.ssao/xoshiro128plus.c (limited to 'advanced_lighting/9.ssao/xoshiro128plus.c') diff --git a/advanced_lighting/9.ssao/xoshiro128plus.c b/advanced_lighting/9.ssao/xoshiro128plus.c new file mode 100644 index 0000000..b55c63b --- /dev/null +++ b/advanced_lighting/9.ssao/xoshiro128plus.c @@ -0,0 +1,28 @@ +#include + +/* --- xoshiro128+ --- */ +static inline uint32_t rotl(const uint32_t x, int k) { + return (x << k) | (x >> (32 - k)); +} + +uint32_t next(uint32_t *s) { + const uint32_t result = s[0] + s[3]; + const uint32_t t = s[1] << 9; + s[2] ^= s[0]; + s[3] ^= s[1]; + s[1] ^= s[2]; + s[0] ^= s[3]; + s[2] ^= t; + s[3] = rotl(s[3], 11); + return result; +} +/* --- /xoshiro128+ --- */ + +float int_to_float(uint32_t random) { + union { uint32_t u32; float f; } u = { .u32 = random >> 9 | 0x3f800000 }; + return u.f - 1.0; +} + +float nextf(uint32_t* s) { + return int_to_float(next(s)); +} -- cgit v1.2.3-70-g09d2