Commit Graph

24 Commits

Author SHA1 Message Date
f6ffd8d30b Fixed a typo in a comment. 2017-03-29 13:20:58 -07:00
7223f69151 Implemented a more efficient orthonormal basis function.
Algorithm taken from the paper "Building an Orthonormal
Basis, Revisited" by Duff et al.
2017-03-29 13:19:51 -07:00
0b05d364e4 Added GTR surface closure.
Not tested yet, just a straightforward conversion from the C++
Psychopath codebase.  So there are probably bugs in it from the
conversion.  But it compiles!
2017-03-07 08:31:57 -08:00
d504ca5e6a Got DistantDiscLights working! Yay!
This involved fixing a bug in PsychoBlend.  It was including
translation in how it was transforming the sun lights' direction
vector.
2017-02-13 00:03:34 -08:00
3cbb816d4b Added DistantDiskLight (a.k.a. sun light) parsing and data structures.
Also created a proper World struct in the process, to store all
infinite-extent type stuff.

Note that I goofed and did a new rustfmt pass but forgot to
commit before making these changes, so there's a lot of
formatting changes in this too.  *sigh*
2017-02-12 20:29:08 -08:00
bb4e57795f Added support for OpenEXR output. 2016-10-09 20:34:58 -07:00
97b5ef77f8 Code cosmetics: organize and alphabetize crate/mod/use statements. 2016-08-20 18:10:55 -07:00
7ef5846c89 Got rid of indexing into Float4 and 3d vector elements.
This assures correct semantics for SIMD usage.
2016-07-30 19:36:54 -07:00
7401c6fb99 Use fast approximate exp functions for XYZ color curves.
This brings a significant performance improvement, and doesn't
appear to have any visual impact.
2016-07-16 17:53:50 -07:00
ec75f11206 Render buckets in hilbert curve order.
Provides a slight speed-up.
2016-07-16 14:53:03 -07:00
2e3851837d Implemented SAH splitting for the BVH. Also fixed crash bug.
The bug was in the previous commit, where I thought I was
preventing out-of-bounds access during traversal by limiting
the tree depth.  While the idea was correct, I forgot that the
traversal stack needs _2_ extra slots on top of the tree depth,
not just 1.  Fixed.
2016-07-16 03:21:57 -07:00
35ef58b09c Special case BVH building when we get too close to max depth.
This avoids exceeding max BVH depth even in pathological cases.
Still need improve non-worst case building, but this at least
prevents crashes in worst case.
2016-07-16 00:05:23 -07:00
e2ef44f666 Finished implementing motion blur. 2016-07-10 19:20:37 -07:00
e56ac418da Beginnings of global illumination.
There are still some obvious bugs in it that I haven't tracked down,
so the renders aren't correct yet.
2016-07-03 01:18:50 -07:00
f1df7a3b1a Slight tweak to how ray offsets are done. 2016-06-29 15:00:44 -07:00
52acee33af Implemented rectangular area lights.
Also added Cornell Box test scene.
2016-06-29 14:30:42 -07:00
fd195576d1 First renders with lighting. Yay!
The lighting is super crappy, and pretty much hacked in.  Will
need to redo this properly soon.  However, this verifies that
certain other parts of the code are (mostly) working properly.
2016-06-27 23:16:39 -07:00
1cbf20e67f Beginnings of light sources. Yay! 2016-06-19 14:32:13 -07:00
039943e0cb Auto-formatting code with new version of rustfmt. 2016-06-02 22:43:35 -07:00
4988a6d1e6 Added AssemblyBuilder and got instancing working (sans testing...).
The AssemblyBuilder is responsible for collecting the data needed
to actually create an Assembly.  AssemblyBuilders are now the
only way to create an Assembly, which guarantees that Assemblies
aren't half-baked.

Also got instancing working with transforms and such.  It may not
be _really_ working because I don't have a complex test case for
it yet.  But that will come later.
2016-04-23 20:14:10 -07:00
d25f8308a2 Now using Camera to generate rays in test scene. 2016-01-02 21:23:17 -08:00
1c660dda13 Generalized the BVH to... pretty much anything.
The BVH is now generic over any kind of data.  The building
function takes in a closure that can bound the given data type
in 3d space, and the rest just works.
2015-12-31 00:32:38 -08:00
a66059d13e Implemented anti-aliasing with permuted halton sequence. 2015-12-29 13:42:40 -08:00
e239f5aaaf Moved all the 3d math stuff into its own module. 2015-12-26 19:27:32 -08:00