Matthew Gordon
ea5e9c3870
Github build action: Install SDL2
2019-11-28 10:33:09 -05:00
Matthew Gordon
32f5939458
Add github action to build and test
2019-11-28 10:21:53 -05:00
Matthew Gordon
dbbd855c73
Add Phong material
2019-11-27 17:05:51 -05:00
Matthew Gordon
0a7963097c
Add (co)tangent to IntersectionInfo and redid sphere intersection
2019-11-27 17:02:23 -05:00
Matthew Gordon
015625ff20
Add utility function to create change-of-basis matrices
2019-11-27 17:00:44 -05:00
Matthew Gordon
e7bcc9cc62
Add diffuse strength term to LambertianMaterial
2019-11-26 07:17:27 -05:00
Matthew Gordon
430053c134
Fix bug rendering images with dimensinos not multiples of tile size
2019-11-26 07:03:45 -05:00
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