022c913757
Split out memory arena into an external crate.
2019-12-27 10:43:03 +09:00
c753890bb0
Fix/silence various clippy warnings.
2019-08-01 14:18:26 +09:00
95e7d6bdea
Silence some silly clippy warnings on generated code.
2019-08-01 13:43:32 +09:00
f021def789
Do better chromatic adaptation for input RGB colors.
2019-07-26 16:01:56 +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
88e7365bc4
Switched from in-tree float4 lib to glam.
2019-07-22 22:30:37 +09:00
4adc81b66b
Minor code pretty-ing in the Jakob spectral upsampler.
2019-07-09 16:24:02 +09:00
70721be8e0
Moved separate functions in halton sampler inline into the match.
...
Doesn't really have much impact, but makes me feel better for some
reason.
2019-07-07 17:39:34 +09:00
103775f0e9
Some cleanup and improvements to the trifloat sub-crate.
2019-07-07 16:27:44 +09:00
e31ec6eb4e
Added a new trifloat type that uses 48 bits and is signed.
2019-07-07 14:02:09 +09:00
152d265c82
Switched all uninitialized memory to use MaybeUninit.
2019-07-06 13:46:54 +09:00
874b07df02
Filled in missing methods on the fall-back non-SIMD code.
2019-06-29 07:48:33 +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
cd50e0dd11
Added some useful shuffle ops to Float4.
2019-06-21 22:14:18 +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
508cda6021
Better path usage and "extern crate" removal in sub-crates.
2018-12-16 13:14:06 -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
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
b14b1b13b5
Cleaned up some of the SIMD code in spectra_xyz.
2018-07-01 16:49:41 -07:00
3f55df7225
Some basic SIMD optimizations for XYZ->Spectrum conversion.
2018-07-01 15:50:34 -07:00
ef7084e694
Reorganized xyz_spectra crate a bit.
...
This way the executable code can be worked with directly, instead
of via the python file that generates the rust code.
Also introduced some small optimizations.
2018-07-01 14:29:19 -07:00
6d21a30840
Formatting with newer cargo fmt
.
...
No meaningful code change, only formatting.
2018-06-24 21:18:10 -07:00
df27f7b829
Moved matrix transpose and inverse code into Float4 crate.
...
This allows for more optimized implementations, taking advantage
of SIMD intrinsics.
2018-06-24 21:06:32 -07:00
8e791259b3
Sped up Float4::h_sum for platforms with SSE3.
...
Since this is used heavily during matrix multiplication, gives a
nice little speed boost.
2018-06-24 16:45:21 -07:00
27d1b2286b
Switch to stable SIMD intrinsics.
...
Rust 1.27 stablized a variety of cpu intrinsics, including SIMD
on x86/64 platforms. This commit moves to using those intrinsics
for the optimized Float4 implementation. This means Psychopath
now compiles on stable Rust with all optimizations. Yay!
2018-06-24 15:32:09 -07:00
bbf832a3d8
Fixed compile error in float4 lib, and updated to latest simd crate.
2018-03-04 13:32:31 -08:00
c990672dfe
Fix compiler warnings.
2018-03-04 13:06:22 -08:00