Commit Graph

517 Commits

Author SHA1 Message Date
15cd261026 Fix bug resulting in cracks between triangles in some cases. 2022-08-03 10:23:26 -07:00
9569f772f0 Fix incorrect background color handling in glossy reflections.
Bug introduced in the previous refector removing the LightPath struct.
2022-08-03 00:07:03 -07:00
77ac8ef9f2 Implement "hilbert spiral" bucket rendering order. 2022-08-02 23:58:56 -07:00
7c750dcded Directly specify bucket size instead of inferring from sample count.
Since we aren't doing breadth-first ray tracing anymore, this makes
a lot more sense.
2022-08-02 19:41:23 -07:00
72b8397e9d Finished getting rid of the LightPath struct.
Also misc cleanup of related code.
2022-08-02 18:55:25 -07:00
6ccd4e306d WIP getting rid of LightPath struct.
Committing at this point because:
1. It compiles.
2. Rendering is totally wrong, but in a cool way.
2022-08-02 17:29:05 -07:00
181f7a6b85 Add convenience script for building with target native cpu. 2022-08-02 15:13:52 -07:00
608fe8bda1 Switch to colorbox and jakob upsampling for color handling. 2022-08-02 00:18:12 -07:00
5d246e66fa Remove stats that we can't reasonably collect anymore. 2022-08-01 22:57:13 -07:00
8bc6b24004 Switch to CIE XYZ lookup tables. 2022-08-01 22:04:14 -07:00
caed4c67de Do depth-first instead of breadth-first ray tracing.
This simplifies a lot of code, and will make experimenting with
other things a lot more straightforward.
2022-08-01 15:26:38 -07:00
98a9aeb374 Minor tweaks to Owen scrambling functions. 2022-07-25 15:43:07 -07:00
ef489c1ca2 Minor cleanup of the Owen scramble code. 2022-07-23 14:17:38 -07:00
f95e869848 Give Owen scramble functions their own hash.
This lets us move the seeding overhead outside the main loop,
which in turn lets us avoid taking it every round.
2022-07-23 13:24:24 -07:00
40d643b334 Put hilbert and morton code into one module. 2022-07-23 12:57:57 -07:00
0df18ce908 New hash seeding approach.
There didn't seem to be any issues in practice with the last
approach, but I thought of some other ways things could in theory
interact badly.  This fixes that.
2022-07-21 14:18:55 -07:00
570878d052 Eliminate branch in per-bit Owen scrambling functions. 2022-07-21 12:28:47 -07:00
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