Commit Graph

542 Commits

Author SHA1 Message Date
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
cd50e0dd11 Added some useful shuffle ops to Float4. 2019-06-21 22:14:18 +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
5eeaec0a8b Use fmadd method in Jakob spectrum eval. 2019-06-19 17:49:52 +09:00
b3cc5c070a Added fused multiple-add method to Float4. 2019-06-19 17:45:04 +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
0fc8c32566 Updated crate dependency versions. 2019-05-25 16:22:21 +09:00
5488fde20e Update Readme to better reflect current developments. 2018-12-30 17:23:55 -08: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
b598ce499c Updated dependencies. 2018-12-16 13:22:12 -08:00
508cda6021 Better path usage and "extern crate" removal in sub-crates. 2018-12-16 13:14:06 -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
5fb349cc49 Second step transitioning to Rust 2018. 2018-12-16 12:07:11 -08:00
8deb1e87bb First step transitioning to Rust 2018. 2018-12-16 12:02:20 -08:00
e3a9cbef84 Silenced/fixed the last of the clippy warnings. 2018-12-16 11:48:01 -08:00
c73db2edbe Fix/silence a bunch of clippy warnings in the main crate. 2018-12-15 23:26:12 -08:00
d57c896151 Silence/fix clippy warnings in mem_arena sub-crate. 2018-12-15 22:34:51 -08:00
53424b393d Silence clippy warnings in spectra_xyz sub-crate. 2018-12-15 22:22:29 -08:00
f9d75f490c Silenced warnings in color sub-crate. 2018-12-15 22:06:32 -08:00
f2e591a91f Fixed clippy warnings in math3d. 2018-12-15 21:56:48 -08:00
8b6181d262 Fixed Clippy warnings in float4. 2018-12-15 21:41:16 -08:00
589a67caa4 Run latest rustfmt on code. No functional changes. 2018-12-08 13:23:44 -08:00
e9b495e729 Silence some clippy warnings on generated code and large preformatted data. 2018-12-08 13:21:41 -08:00
ea75e3ed21 Added benchmarks for both Trifloat and Oct32 encoding/decoding. 2018-11-29 11:09:48 -08:00
a6cae26c34 Added property tests for Oct32 encoding/decoding.
Tests random vectors, and makes sure that encoding/decoding
round trip only introduces precision errors below a certain
threshold.

Pretty confident that the implementation is correct now.
2018-11-29 09:50:38 -08:00
8e15dba29d Implementation of the Oct32 encoding of unit vectors.
The code still needs testing, but initial toying around suggests
that it's working correctly.
2018-11-28 23:41:12 -08:00
c0cb071251 Further optimizations to the trifloat implementation.
Also improved documentation.
2018-11-28 15:31:21 -08:00
27521f44a6 Cleanup and better docs for trifloat. 2018-11-23 23:12:06 -08:00
ff9a56977a Use bit fiddling to avoid some expensive operations in trifloat encoding/decoding. 2018-11-23 22:31:28 -08:00
3d1ade21c2 Better naming for the trifloat functions. 2018-11-23 21:38:27 -08:00
3fb22fdefa Implemented a "tri-float" encoding, similar to RGBE.
This implementation trades less range for more precision, giving
9 bits to each mantissa instead of just 8 bits as in RGBE.
2018-11-23 20:01:15 -08:00
498c1ea8d9 Running latest rustfmt. No functional change. 2018-10-30 22:31:25 -07:00
ab637e3bd5 Fixed bug in GTR and GGX BRDFs. 2018-08-09 14:43:32 -07:00
c002514ddf Run latest rustfmt. No functional changes. 2018-08-09 00:43:21 -07:00