f5a0210cdf
More principled seeding approach in the hash functions.
2022-07-21 12:15:36 -07:00
7082f2d7f4
Update hash functions to known good ones instead of bespoke ones.
2022-07-21 05:22:22 -07:00
0d71ae86db
Noticed that z-scrambling is actually just base-4 Owen scrambling.
...
Updated function name and comments to reflect that.
2022-07-21 04:44:05 -07:00
6b7538e25f
Make the z-scrambling table smaller with bit fiddling.
...
This gets it down to 24 bytes.
2022-07-21 04:20:03 -07:00
ec9a121e72
Implement screen-space blue-noise sampling properly.
2022-07-21 03:59:47 -07:00
83b48f722d
Simpler way to implement screen-space blue-noise sampling.
...
We now do the index scrambling at the top of the sampling loop,
which is also faster since we only have to run it once per pixel
instead of once per sample.
2022-07-20 18:54:38 -07:00
86814dbf8f
Minor rearrangement of ray generation sampling code.
2022-07-17 21:18:46 -07:00
89429ed9f0
Fix silly bug in light transforms introduced during the switch to RMath.
2022-07-17 17:40:14 -07:00
d55ec9b025
Update psychopath code to work with RMath changes.
2022-07-17 17:24:58 -07:00
6dbdcba91a
Whole bunch of cleanup on RMath.
2022-07-17 16:37:15 -07:00
e2044e6579
Implement simple screen-space blue-noise diffusion sampling.
...
From the paper "Screen-Space Blue-Noise Diffusion of Monte Carlo
Sampling Error via Hierarchical Ordering of Pixels" by Ahmed et al.
2022-07-16 19:35:23 -07:00
ea4ba81110
Use faster routines where precision isn't needed.
2022-07-16 01:09:33 -07:00
8dcf093dbb
RMath: first pass at an SSE implementation.
2022-07-16 00:03:09 -07:00
08e2e6eb06
Convert Psychopath over to use new RMath library.
2022-07-15 21:42:35 -07:00
a84da943d0
RMath: implement transform composition.
2022-07-15 17:51:57 -07:00
5535775006
RMath: implement Bool4 type.
2022-07-15 15:20:44 -07:00
fa7be4e58c
RMath: change fallback Float4 to be a tuple-struct.
2022-07-15 00:49:37 -07:00
a93a3f09da
RMath: implement cross product and bring back some unit tests.
2022-07-15 00:39:14 -07:00
42cd282c47
RMath: implement transforms for Vector, Point, and Normal.
2022-07-14 23:23:22 -07:00
d8e1437db1
RMath: implement vector-matrix multiplication.
2022-07-14 19:02:08 -07:00
c398387b55
Implement dot products and 3x3 matrix inversion.
...
Both precise and fast versions. But untested, so might be
incorrect!
2022-07-14 15:30:30 -07:00
8a695a7694
Some shuffling of the math sub-crate's organization.
2022-07-14 12:31:32 -07:00
732dee958e
Remove Mat3x3 from math3d lib.
...
It was an extraneous abstraction.
2022-07-14 00:33:38 -07:00
658e4746ca
Start work on new linear algebra library.
2022-07-13 18:54:44 -07:00
e0ee0d6dff
Change to using a dedicated affine transform type.
...
This lets certain operations, especially matrix inversion, be
quite a bit faster. And we don't need anything beyond affine
transformations anyway.
2021-05-14 13:30:28 -07:00
e6f9af9336
Update to latest glam.
2021-05-14 12:22:46 -07:00
89fc80b99b
Update to the latest version of sobol_burley.
2021-05-14 11:30:48 -07:00
63d661f8ce
Update sobol_burley dependency.
2021-05-11 20:17:51 -07:00
7063c406dd
Fix minor syntax warning.
2021-05-11 13:38:11 -07:00
706902dc8e
Move sobol crate outside of Psychopath into its own repo.
2021-05-11 13:35:17 -07:00
70fba19361
Update Owen scramble hash to the latest.
...
From https://psychopath.io/post/2021_01_30_building_a_better_lk_hash
2021-05-08 12:22:56 -07:00
b337e2cb20
Update dependencies. No functional change.
2021-05-08 12:21:04 -07:00
87859f5258
Fixed an issue with the Owen scramble hash.
...
Thanks to a tip from Matt Pharr.
2021-03-30 15:59:55 +09:00
f9deb9afb6
Fix really bad bug with SIMD usage in the Sobol sampler.
...
Wasn't using the bit shifting instructions the correct way. SSE
instructions are very non-obvious...
2021-03-30 14:53:41 +09:00
42eda24514
Sobol sampler: get rid of unused alternative direction numbers.
2021-01-25 21:50:31 +09:00
c48839d5f3
An even better Owen scrambling hash.
2021-01-23 00:55:54 +09:00
c32281b04a
Significantly better Owen scrambling hash.
2021-01-13 22:25:16 +09:00
105d6e52b5
Add basic benchmark to Sobol sampler.
2021-01-10 00:20:22 +09:00
285f714d02
Switch to a significantly better LK hash.
...
With just one round, this hash is better than the previous one with
two rounds. And at 2-3 rounds it seems to be just as good quality
as a slow, per-bit hashing approach, which I've been using as
ground-truth for testing.
2021-01-04 15:16:04 +09:00
776a2c1456
Add PR template explaining that contributions aren't currently accepted.
...
Ideally I would just disable PRs on the repo, but github doesn't
currently allow that.
2020-12-31 13:00:46 +09:00
16e5f539ea
Update to latest openexr-rs.
2020-12-31 12:25:22 +09:00
d19305d23b
Update sobol sampler to properly credit Brent Burley.
...
I was just waiting for his paper to get published, which happened today!
2020-12-30 21:44:25 +09:00
3d85ce8005
Consolidate all of the compact value storage formats into one crate.
2020-12-30 20:41:56 +09:00
6586b38dc9
Use an external crate for fast approximate math functions.
2020-12-26 10:03:35 +09:00
4cfc051260
Change overall project license to GPLv3.
2020-12-26 09:20:55 +09:00
646e6a4e18
More readme updates.
2020-12-21 18:55:00 +09:00
73cf201bf6
Update readme.
2020-12-21 18:42:23 +09:00
6d6904a615
FLuv32: increase dynamic range, and decrease precision.
...
This still exceeds the precision of LogLuv, but lets us match its
dynamic range.
2020-09-22 11:06:40 +09:00
9cf5ebdf91
Cleaning up the code in fluv32 a bit.
2020-09-21 11:54:14 +09:00
066105b20a
Fluv32: slightly tweak the u/v scaling constants.
...
This allows perfect representation of E (equal energy spectrum).
It's not important from a perceptual standpoint, but it provides
a simple way for Psychopath to represent E when needed for other
purposes.
2020-09-21 09:45:47 +09:00