Matthew Gordon
699c308782
Rewrite BoundingVolumeHierarchy
...
New BVH has much cleaner design and is also using a much better
heuristic for dividing the scene.
Massive speedup (~28x!), presumable from having a heuristic that
actually works. This is still a simple heuristic (sort by
bounding box centres along largest dimension, and then divide into
equal halves) which can definitely be improved.
2020-08-11 23:59:03 -04:00
Matthew Gordon
3ca8bc14e4
Add AxisAlignedBoundingBox::largest_dimension()
2020-08-11 23:58:16 -04:00
Matthew Gordon
c322981486
Make BHV contain a BinaryTree instead of being one
2020-07-20 21:46:36 -04:00
Matthew Gordon
4933993187
Use bunny model in test scene again
2020-07-20 21:22:54 -04:00
Matthew Gordon
b39c7e89b1
Some cleanup of BVH and BinaryTree
2020-07-04 23:16:22 -04:00
Matthew Gordon
231be6a1a5
Add generic BinaryTree struct and use in BoundingVolumeHierarchy
...
No change in runtime, as expected.
2020-07-04 22:09:44 -04:00
Matthew Gordon
5aad1242b3
For simple_scene benchmark, regerenerate BVH periodically
...
This makes the results much more consistent run-to-run. I suspect
the inconsistency was caused by random variations in the memory
layout of the BVH.
2020-07-04 21:16:28 -04:00
Matthew Gordon
ea311408ba
Add time parameter to allow animation
2020-06-20 19:28:40 -04:00
Matthew Gordon
d96942cd78
Replace bunny with dodecahedron on test image
2020-06-20 14:57:56 -04:00
Matthew Gordon
9785e3b451
Remove some dead code.
2020-06-20 14:55:25 -04:00
Matthew Gordon
4451d1d71f
Add option to save image to PNG file
2020-06-20 14:53:17 -04:00
Matthew Gordon
b8dddd7498
Pass image size as command line parameter
...
Instead of being hard-coded
2020-06-20 12:04:44 -04:00
Matthew Gordon
4464a9fae6
Add utility function to generate dodecahedron
2020-06-20 11:26:17 -04:00
Matthew Gordon
e1c91919b8
Add RgbSamplesBsdfMaterial (not working yet)
2020-06-19 00:04:01 -04:00
Matthew Gordon
aa942a2a3c
Make sure normals or imported meshes are unit length.
2020-06-19 00:01:12 -04:00
Matthew Gordon
29dc3b6a37
Fix a typo that caused artifacts with ReflectiveMaterial
2020-06-19 00:00:12 -04:00
Matthew Gordon
cb67362ad4
Break material module up into multiple files
2020-06-11 22:28:53 -04:00
Matthew Gordon
90bb7d84af
Big rijiggering of types
2020-06-11 22:13:51 -04:00
Matthew Gordon
01259e1e55
Upgrade quickcheck_macros to 0.9
2020-05-22 21:12:36 -04:00
Matthew Gordon
c02ad9637d
Upgrade itertools to 0.9
2020-05-22 21:12:09 -04:00
Matthew Gordon
3c9d968f7e
Compile for "native" CPU type.
2020-05-22 21:06:07 -04:00
Matthew Gordon
8bc2c4b229
Upgrade to nalgebra 0.21
2020-05-22 21:05:30 -04:00
Matthew Gordon
ec1ee394a9
Add documentation for BoundingVolumeHierarchy
2020-04-24 00:32:16 -04:00
Matthew Gordon
1d9baf1f05
Add some documentation for mesh module
2020-04-24 00:31:15 -04:00
Matthew Gordon
8ee1f3a004
Add a bunch of documentation to the raycasting module
2020-04-23 23:58:35 -04:00
Matthew Gordon
c1d8044eb8
Add documentation for partial_render_scene()
2020-04-23 23:19:21 -04:00
Matthew Gordon
63afdfa36e
Make the camera module private and just re-export partial_render_scene()
2020-04-23 23:16:50 -04:00
Matthew Gordon
c3902d3221
Use rust nightly for Github actions build
2020-04-23 22:03:58 -04:00
Matthew Gordon
2a77bac0cc
Add a proper description to the README.md and include it in lib.rs
2020-04-23 21:44:01 -04:00
Matthew Gordon
1b66995bdd
Replace Vec references with slices in a few places.
2020-04-03 23:34:44 -04:00
Matthew Gordon
c063ff22a4
Replace anonymous tuple with tuple struct to improve readability
2020-04-03 23:33:06 -04:00
Matthew Gordon
5fbed4a17f
Some minor cleanup recommended by clippy
2020-04-03 23:21:38 -04:00
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