Commit Graph

296 Commits

Author SHA1 Message Date
0b493b09ca Handle LDS permutation a little differently.
This produces identical results, but makes it easier to play
with other types of sequences.
2020-02-22 07:34:51 +09:00
022c913757 Split out memory arena into an external crate. 2019-12-27 10:43:03 +09:00
df6aaeb527 Added parser for signed integers.
Not used at the moment, but was simple to add while I was in the
headspace for it, and it will likely be useful in the future.
2019-11-23 10:41:19 +09:00
e23fe4bb36 Fix deprecation warnings from rustc. 2019-11-23 10:21:16 +09:00
6e555456ba Updated Nom to 5.x
This makes the code a lot simpler and cleaner, among other things.
2019-11-23 10:13:29 +09:00
e586442a0a Cleaned up floating point ulp code.
The logic is much clearer now, and the code is more compact.
2019-10-30 21:05:01 +09:00
c753890bb0 Fix/silence various clippy warnings. 2019-08-01 14:18:26 +09:00
ecbdf5d609 Make bilinear patch splitting a little smarter.
This way it doesn't just keep splitting on the same axis
repeatedly, creating narrow, long patches..
2019-08-01 13:49:44 +09:00
0c99ce8227 Playing around with surface patch implementation. Trying out ideas. 2019-07-31 22:46:06 +09:00
4999b31bf5 Bare beginnings of adding bilinear patches.
Mainly as a simple test-case for split-and-dice.
2019-07-31 06:45:45 +09:00
f42eedfd08 Make better use of the types in the glam crate.
Appears to give a tiny performance boost.
2019-07-25 11:36:52 +09:00
e3179d5b2e Fix stupid bug with sphere lights introduced in the traversal rewrite. 2019-07-23 08:52:53 +09:00
88e7365bc4 Switched from in-tree float4 lib to glam. 2019-07-22 22:30:37 +09:00
5c5a01ecee Implemented basic SurfaceClosure compression for storing per-vertex.
This is really simple, and doesn't account for things like constant
parameters yet.  It's just to get things rolling.
2019-07-13 11:15:04 +09:00
41c2174d59 Updated MicropolyBatch for new traversal code etc. 2019-07-09 17:05:42 +09:00
152d265c82 Switched all uninitialized memory to use MaybeUninit. 2019-07-06 13:46:54 +09:00
646139efda Factor out ray computations that are shared for all triangles. 2019-07-06 09:19:53 +09:00
4b612e2d1a Leaf triangle intersection now loops over triangles per ray.
This is the inverse of what was being done before, which was to
loop over all of the rays for each triangle.  At the moment, this
actually appears to be a tiny bit slower, but it should allow
for future optimizations testing against multiple triangles at once.
2019-07-06 09:01:24 +09:00
4f7335db8c Misc optimizations that add up to a nice speed boost. 2019-06-29 14:20:32 +09:00
c4b8971805 Clean up compiler warnings. 2019-06-29 12:43:24 +09:00
2a0ca001e2 Optimized ray stack task duplication with memcopy. 2019-06-29 12:39:28 +09:00
68fba19fc6 Removed a timer from a hot loop, and fixed node-test stat.
Gives I small performance boost, and now ray/node tests are
actually reported correctly.  Yay!
2019-06-29 09:46:39 +09:00
5a53d7f6f6 Added some additional ray tracing stats. 2019-06-29 09:20:04 +09:00
14b16896ac Fix some compiler warnings. 2019-06-29 08:41:11 +09:00
4ef376dc89 Move multiple-object logic out of BVH4.
This allows each part of Psychopath tp handle the logic in the
best way, instead of a one-size-fits-all approach.
2019-06-29 08:28:41 +09:00
b09f9684d1 Remove non-SIMD BVH4, and keep more bool calculations in SIMD format. 2019-06-29 07:22:22 +09:00
c5d23592b9 Keep Bool4 in its native format instead of converting to a bitmask.
This gives a small performance boost.
2019-06-28 22:56:51 +09:00
2fddcae0fd Reduced the size of a hot return value.
Gives a small performance boost.
2019-06-28 22:22:41 +09:00
aed0f2ede1 Implemented a SIMD version of the BVH4.
It does indeed appear to be faster with this style of traversal!
2019-06-28 21:57:29 +09:00
50f9fd851b Improved ray batch data layout.
Gives a small performance boost.
2019-06-25 18:49:10 +09:00
5dd8eb919b Changed ray batch data access to be through methods.
This is (potentially) just temporary.  It's to make it a bit easier
to play with data layout to see how that affects performance.
2019-06-25 17:31:51 +09:00
eef29c2b2f Type alias for the ray index type.
Makes things easier to play with.
2019-06-23 19:26:30 +09:00
630a79aca5 Initial implementation of ORST traversal.
This is a "just get it working" implementation.  Performance
optimizations still need to be done.
2019-06-23 18:40:52 +09:00
1a29b16aa2 Sketching out the structures for ray traversal tracking. 2019-06-22 04:19:55 +09:00
3d4ac7f57b Created a RayBatch type, which stores multiple rays is SoA layout. 2019-06-21 23:02:44 +09:00
c6a8f93097 Run rustfmt. No functional change. 2019-06-21 21:47:53 +09:00
50f09a6134 Removed full Jakob implementation and moved table loading to build time.
The "light" version of Jakob still remains, which uses a much smaller
table.
2019-06-21 21:45:13 +09:00
48e015996f Initial implementation of Jakob 2019 spectral upsampling.
It has a slight color cast to it at the moment, I believe due to
incorrect color space conversions, not because of the upsampling
method itself.  So Meng upsampling is still the active method
at the moment.
2019-06-09 19:51:43 +09:00
4aa002bb92 Reorganizing spectral upsampling crate for multiple algorithms. 2019-06-08 18:25:35 +09:00
fdad8f71bb Renamed spectral upsampling sub-crate. 2019-06-02 07:28:43 +09:00
764bdbeb06 MicropolyBatch doesn't need to satisfy Surface trait.
Eventually the Surface trait will be changed to actually mean the
ability to be processed _into_ a MicropolyBatch.  So it's ultimately
nonsensical for MicropolyBatch to implement it.
2018-12-29 10:18:38 -08:00
112f94c127 Implemented a "Micropolygon Batch" type.
This is in prep for a shade-before-hit architecture.  The type is
currently unused and untested.
architecture.
2018-12-28 13:40:36 -08:00
8e109efed5 Fixed compiler warnings. 2018-12-28 11:09:17 -08:00
1cd5d28767 Added another color temperature based way of specifying color.
This uses a normalized version of blackbody radiation, so the
colors still vary but the brightness doesn't vary nearly as
wildly as with genuine blackbody radiation.
2018-12-28 01:27:08 -08:00
53754b956c Blackbody colors are now parsed, and PsychoBlend has support as well. 2018-12-28 00:23:02 -08:00
caa4ea3e44 Replaced SurfaceClosure trait with a SurfaceClosure enum.
Also moved surface closures to using Color internally for color
specification.
2018-12-27 22:57:44 -08:00
e5a12cd498 Fixed the Planck's Law implementation to use correct units.
Color temperature specified colors now work!
2018-12-27 20:03:56 -08:00
5add4cfdb1 Implementing Color as a simple enum rather than as a trait.
There's really no reason for it to be a Trait, and this will simplify
a lot of things down the road.
2018-12-27 16:09:03 -08:00
28a07de456 Improve module path usage and remove extern crate declarations where possible. 2018-12-16 13:02:49 -08:00
178c0bd6cb Third step transitioning to Rust 2018. 2018-12-16 12:17:21 -08:00