Commit Graph

136 Commits

Author SHA1 Message Date
Matthew Gordon 34232bb7d3 Refactor Bsdf to not store references to material struct members
This complicated the Material trait with explicit lifetimes and
had no real benefit.
2020-04-03 23:12:40 -04:00
Matthew Gordon 8570e08923 Implement Transform trait for Triangle
Still needs more unit tests.
2020-04-03 22:58:00 -04:00
Matthew Gordon 5df3f81359 Implement Transform trait for Plane
Still needs unit tests.
2020-04-03 22:57:28 -04:00
Matthew Gordon a856fcbc21 Make Transform triat use Affine3 instead of the more general Tramsform3 2020-04-03 22:56:28 -04:00
Matthew Gordon 9904d3f06e Fix test model path in benchmark 2020-04-03 21:23:38 -04:00
Matthew Gordon 36a4c6f951 Add "stanford bunny" model to repository (for testing) 2020-04-03 21:18:16 -04:00
Matthew Gordon cf8f5e646b Use Box instead of Arc in BoundingVolumeHierarchy 2020-03-27 21:18:47 -04:00
Matthew Gordon bbeb39ba5d Replace unnecessary Arcs with Boxes. 2020-03-27 20:34:19 -04:00
Matthew Gordon 50d9848faa Enable debug symbols in benchmarks
For profiling
2020-03-19 22:40:17 -04:00
Matthew Gordon 3afbc600e6 Switch to Criterion for benchmarks 2020-03-19 22:40:17 -04:00
Matthew Gordon 4042b266ae Update benchmark 2020-03-19 22:40:17 -04:00
Matthew Gordon b13cbe316d Add Transform trait and implement for Sphere 2020-03-12 21:26:22 -04:00
Matthew Gordon fa43552c6f Remove stray debug print 2020-02-28 23:27:32 -05:00
Matthew Gordon ad2b9247b8 Use BoundingVolumeHierarchy to accelerate rendering 2020-02-28 23:26:56 -05:00
Matthew Gordon 2b8794c884 Add recursion limit to ray tracing 2020-02-28 23:25:51 -05:00
Matthew Gordon 0574dff685 Threads pass back small images instead of sharing large image 2020-02-28 21:42:19 -05:00
Matthew Gordon a04f51998c Make main rendering loop multithreaded again. 2020-02-28 20:53:24 -05:00
Matthew Gordon 254957c5c3 Add another image to README.md 2020-02-22 19:51:00 -05:00
Matthew Gordon bdd05f3527 Refactor main rendering loop to use TileIterator
This removes the old multithreading code, but will be using rayon
soon.
2020-02-20 16:47:15 -05:00
Matthew Gordon d21d288013 Add TileIterator struct 2020-02-19 08:04:41 -05:00
Matthew Gordon e52c0772b4 Remove unused import 2020-02-19 08:03:16 -05:00
Matthew Gordon 87b2f2835a Rename morton_order_value() to morton_order_value_3d() 2020-02-19 08:02:36 -05:00
Matthew Gordon 3c813c4526 More work on BoundingVolumeHierarchy 2020-02-13 20:24:35 -05:00
Matthew Gordon 7bd45c8ad2 First pass at bounding volume hierarchy 2020-02-10 22:23:38 -05:00
Matthew Gordon e411f4abb4 Start working on morton (z-order sorting) 2020-02-10 17:45:12 -05:00
Matthew Gordon 8508ac1072 Add trait for converting real type tu u32 2020-02-10 17:15:02 -05:00
Matthew Gordon 079e02e059 Remove some dbg!s 2020-02-10 16:54:42 -05:00
Matthew Gordon d6b5c87759 Create Real trait to replace nalgebra::RealField
Real inherits RealField, but I want to add more to it.
2020-02-10 16:52:09 -05:00
Matthew Gordon a15eeccdfb Fix code formatting. No change of functionality. 2020-02-07 17:05:07 -05:00
Matthew Gordon 23e8a878c5 Move algebra_utils.rs into util module 2020-02-07 17:04:42 -05:00
Matthew Gordon 49bef6f0f4 Add Point3Normalizer 2020-02-07 17:00:46 -05:00
Matthew Gordon 259505e93f Add RealFieldNormalizer 2020-02-06 17:36:36 -05:00
Matthew Gordon c3f3fffc0e Move axis_aligned_bounding_box to util module 2020-02-06 17:06:46 -05:00
Matthew Gordon 65b5e3c45d Create util module and move Interval struct to it 2020-02-06 16:49:11 -05:00
Matthew Gordon 8c527d34fc Add Primitive trait 2020-01-30 17:22:53 -05:00
Matthew Gordon a0de9c18ba Implement HasBoundingBox trait for Plane 2020-01-30 16:43:48 -05:00
Matthew Gordon 89aed89b85 Add derive(Debug) for BoundingBox 2020-01-30 16:43:21 -05:00
Matthew Gordon 1044fc3986 Implement HasBoundingBox for Tirangle 2020-01-29 16:50:26 -05:00
Matthew Gordon e67204b96e Make BoundingBox::from_points accept any IntoIterator<Point3<T>>
...instead of only Vec<Point3<T>>
2020-01-29 16:49:30 -05:00
Matthew Gordon e5d7a1098d Add more methods for constructing BoundingBoxes 2020-01-29 08:09:58 -05:00
Matthew Gordon 30a5a9dd0f Add Interval::expand_to_value(); other minor changes 2020-01-12 12:13:31 -05:00
Matthew Gordon 25ac0bad7f Fixed bug with empty intervals 2020-01-12 10:45:39 -05:00
Matthew Gordon 75611d47d3 Add HasBoundingBox trait with implementation for Sphere 2020-01-10 17:15:35 -05:00
Matthew Gordon abf71658b6 Add axis_aligned_bounding_box::BoundingBox::union() 2020-01-10 17:00:09 -05:00
Matthew Gordon da2208f3f8 Add Interval::union() 2020-01-10 16:46:17 -05:00
Matthew Gordon 5f6733fdb0 Move some declarations around within struct, no change in functionality 2020-01-10 16:21:38 -05:00
Matthew Gordon ffcfa0009c Move import that was only used in tests into test module 2020-01-10 16:21:28 -05:00
Matthew Gordon 5e0e2bad06 Make build and test work with stable rust (nightly needed for benchmarks) 2020-01-10 16:16:27 -05:00
Matthew Gordon 4ee7338711 Add axis_aligned_bounding_box module 2019-12-31 22:17:15 -05:00
Matthew Gordon 5c8903107a Add IntersectP trait
Like Intersect, but the intersect() function only returns a bool,
not a Optional<IntersectionInfo>.
2019-12-31 22:16:06 -05:00