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
caeb1d9c67
Added GGX glossy material, and simplified surface closure API.
2018-08-09 00:42:17 -07:00
5c20fa3ea4
Moved more work out of the triangle mesh intersection inner loop.
...
This makes the code a bit spaghetti-like, but it provides noticable
speed-ups in the all the scenes I tested.
2018-07-01 17:30:58 -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
989914b878
Use Float4::splat() in AccelRay methods.
2018-06-29 17:28:39 -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
d92ae4b2d7
Updated to latest openexr-rs release.
2018-06-15 14:52:51 -07:00
b2576c20e7
Upgraded to Nom 2.x
2018-03-04 22:06:20 -08:00
b5bcf8965b
Updated to latest crates.
...
Except for Nom, which has jumped several major versions.
2018-03-04 13:49:41 -08: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
97d3304149
Run new rustfmt on codebase.
2018-03-04 13:00:55 -08:00
f39589ab72
Small refactor of float4 crate to make it easier to read.
2018-03-04 12:27:35 -08:00
a797ff012d
Fixed sampling of very small rectangle lights.
...
The sampling method used before is numerically unstable for very
small lights. That sampling method is still used for large/close
lights, since it works very well for that. But for small/distant
lights a simpler and numerically stable method is used.
2017-10-26 08:42:09 -07:00
3de276cbaa
Make MIS routines handle infinite importance better.
...
Handle it like the limit case: as A approaches infinity, the
limit approaches 1.0. Before this, we were getting NaN values.
This fixes that.
2017-10-25 07:11:24 -07:00
6ff226f4fa
Whoops, nope. The last commit was a mistake.
...
It *seemed* to fix the problem I was running into, but it actually
made the SphereLight ray intersection code incorrect, and wa just
avoiding intersections that should have happened.
I should test better before committing. :-)
2017-10-25 07:09:16 -07:00
18024d43b9
Stupid bug in SphereLight ray intersection code.
...
The ray origin wasn't transformed into local space, resulting in
silly problems.
2017-10-25 06:59:35 -07:00
461b3c377e
Improved light tree sampling and changed surface closure API.
...
Thanks to a discovery by Petra Gospodnetic during her GSOC
project, I was able to substantially improve light tree sampling
for lambert surfaces. As part of this, the part of the surface
closure API relevant to light tree sampling has been adjusted to
be more flexible.
These improvements do not yet affect GTR surface light tree
sampling.
2017-08-23 19:09:26 -07:00