Commit Graph

97 Commits

Author SHA1 Message Date
Matthew Gordon d9912c42dd Fix bug where non-square images would not be completely rendered 2019-11-26 06:59:26 -05:00
Matthew Gordon 86ef364ed2 Render image a tile at a time, so user can see progress 2019-11-25 09:04:20 -05:00
Matthew Gordon 20d3e9ba8d Add some more objects to the test scene 2019-11-25 08:34:04 -05:00
Matthew Gordon 5a0646aaa2 Bias shadow rays to fix noise in image 2019-11-23 22:08:50 -05:00
Matthew Gordon 77cf877210 Factor out Sampler struct and add shadow casting
There are now bad rendering artifacts which I believe are caused
by precision issues.
2019-11-23 21:36:59 -05:00
Matthew Gordon cefbc2873b Refactor, adding Material trait that returns a BSDF 2019-11-23 20:53:45 -05:00
Matthew Gordon 9b8eea6f20 Implement Add, Mul, Copy, Clone and Debug for ColourRgbF 2019-11-23 20:50:31 -05:00
Matthew Gordon f58afb2ded Apply tone mapping to image, not colours
Apply tone mapping and conversion from floats to bytes only on
final image. This will allow better tone mapping operators later
and for now removes NormalizedAsFloat trait constraints that were
creeping through everything.
2019-11-19 21:32:47 -05:00
Matthew Gordon f13b585bfe Shapes can now be colours other than gray 2019-11-19 07:43:00 -05:00
Matthew Gordon f193fbf84b Added some named colours, mostly to make testing easier. 2019-11-17 20:26:57 -05:00
Matthew Gordon ad7d0b5f17 Started materials module. 2019-11-17 20:26:39 -05:00
Matthew Gordon 86e0b04a46 Add some code for dealing with colours. 2019-11-15 09:02:00 -05:00
Matthew Gordon f4bbe75cf8 Sort modules in lib.rs. No change in functionality. 2019-11-14 07:16:11 -05:00
Matthew Gordon 98373a1935 Add missing file that should have been in earlier commit 2019-11-13 17:48:34 -05:00
Matthew Gordon d2fb84191e Add retro (towards camera) direction to IntersectionInfo
Not tested or used yet.
2019-11-13 17:47:40 -05:00
Matthew Gordon c144780fce Fix failed intersection when ray origin is insode sphere
Added unit test which detected a false miss when the sphere centre
is behind the ray origin but the ray origin is inside the sphere.
2019-11-13 17:45:33 -05:00
Matthew Gordon 3c24a084b9 Add another ray-sphere intersection unit test 2019-11-13 17:28:43 -05:00
Matthew Gordon 700de75337 Reworked ray-sphere intersection which was failing tests 2019-11-13 17:25:57 -05:00
Matthew Gordon d9af6dad94 Added Phong integrator (actually only computing lambertion yet) 2019-11-12 22:11:06 -05:00
Matthew Gordon 4f60719523 Correctly render multiple objects instead of just rendeing one 2019-11-12 17:25:10 -05:00
Matthew Gordon 99c79ea31b Remove some busywork needlessly redrawing window. 2019-11-12 16:51:08 -05:00
Matthew Gordon 9d47821062 Change memory layout of Image, so it's not drawn upside-down by SDL 2019-11-12 16:47:56 -05:00
Matthew Gordon 2ec0c133a8 Fixed an unused variable warning 2019-11-12 16:47:29 -05:00
Matthew Gordon 95631d3708 Fixed some unused imports warnings 2019-11-12 16:46:58 -05:00
Matthew Gordon 1eb3741b7d Render a basic scene 2019-11-12 08:03:29 -05:00
Matthew Gordon e9900af986 Some cleanup and added unit test for pixel ray generation 2019-11-12 07:31:02 -05:00
Matthew Gordon 041c940931 Add Plane struct 2019-11-11 22:18:49 -05:00
Matthew Gordon 10c8992cf4 Fix bug where camera would iterate past bottom of image. 2019-11-11 16:48:40 -05:00
Matthew Gordon 326caf151a Start camera module 2019-11-11 12:11:10 -05:00
Matthew Gordon c059aebe11 Move OutputImage into it's own module 2019-11-08 07:52:38 -05:00
Matthew Gordon eaf9ba7b2f Create raycasting module 2019-11-08 07:38:24 -05:00
Matthew Gordon 192857eead Add Sphere struct, Intersect trait, and sphere-ray intersection 2019-11-08 07:25:15 -05:00
Matthew Gordon 78ea2b2e64 Add another unit test for Ray struct 2019-11-08 07:24:50 -05:00
Matthew Gordon 3244181a08 Add some missing "pub" qualifiers 2019-11-08 07:23:01 -05:00
Matthew Gordon 76a7299fb9 Add more unit tests for Ray 2019-11-06 17:32:47 -05:00
Matthew Gordon 9ebfae5898 Add Ray constructor that ensures direction vector is normalized 2019-11-06 17:32:02 -05:00
Matthew Gordon ff046808da Throw out my own vector functions and add Ray type with nalgebra 2019-11-06 12:56:43 -05:00
Matthew Gordon 5a44984779 Add Point2D and Point3D 2019-10-24 21:08:58 -04:00
Matthew Gordon 7bc7b3520a Implement Mul for f64 * Vector3D 2019-10-24 21:00:34 -04:00
Matthew Gordon 423be7700d Implement Mul for Vector3D * scalar 2019-10-24 20:56:52 -04:00
Matthew Gordon 14bae21b80 Implement Mul for f64 * Vector2D 2019-10-24 20:51:51 -04:00
Matthew Gordon 0cb1157df0 Implement Mul for Vector2D * scalar 2019-10-24 20:42:58 -04:00
Matthew Gordon 7e5c9d5231 Add Sub trait for Vector2D; add Vector3D with Add and Sub traits. 2019-10-24 20:32:46 -04:00
Matthew Gordon daee8af0ea Start adding vector types 2019-10-23 22:21:32 -04:00
Matthew Gordon c81eec9174 Did some refactoring and improved error handling 2019-10-23 21:05:17 -04:00
Matthew Gordon bc4759dfaa Set up SDL so I can draw the image being rendered in a window 2019-10-21 01:40:58 -04:00
Matthew Gordon f7139444f5
Initial commit 2019-10-20 22:34:32 -04:00