130 Commits

Author SHA1 Message Date
de898f0b0a Add builder pattern to a few core types.
Add a From<[3;Float]> impl for Color to make things nicer.
2021-07-21 20:42:08 -07:00
e041fd1f6a shapes: implement TestShape. 2021-07-21 19:41:40 -07:00
952ed8bf81 intersections: implement a PartialEq that handles floats. 2021-07-21 19:41:14 -07:00
a553786807 tuples: derive Default on Tuple. 2021-07-21 19:40:12 -07:00
b42adcebfc rays: derive Default, Clone and PartialEq on Ray. 2021-07-21 19:39:47 -07:00
d999e8196b eoc9: add ceiling. 2021-07-21 15:15:59 -07:00
fc5ef09cc3 shapes: fix translation handling in intersection test. 2021-07-21 15:06:06 -07:00
e419994fae eoc9: add third light now that the we don't normalize it 2021-07-21 14:51:51 -07:00
ee8ef4e2c5 world: don't normalize light brightness by quantity of lights.
That's not how they work in real life.
2021-07-21 14:47:00 -07:00
41f3b63ad0 eoc9: one less light, and brighter 2021-07-21 14:44:29 -07:00
b2dc0e9509 eoc9: use plane in a scene. 2021-07-21 14:40:44 -07:00
2d8a3927f4 shapes: lint cleanup. 2021-07-21 14:40:27 -07:00
5600d6c561 shapes: name space helper implementations in a sub module.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-21 13:17:25 -07:00
0e8a0e4163 shapes: implement plane geometry.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-21 12:57:16 -07:00
2f85697b88 rays: derive Debug on Ray. 2021-07-21 12:53:19 -07:00
c0e422a7eb shapes: create generic Shape object with Sphere implementation.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-20 22:17:50 -07:00
3799f93393 eoc8: add third light for effect 2021-07-18 21:15:38 -07:00
1629b2cbfa Add multiple light support. 2021-07-18 21:10:04 -07:00
839642b886 camera: make supersampling configurable, wire it up in eoc8.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-18 20:30:06 -07:00
7a8ed15017 eoc8: zoom the fov. 2021-07-18 20:01:40 -07:00
5d8024a485 features: rename s/_/-/g and make double sizes Floats default. 2021-07-18 17:29:30 -07:00
ecf7cd7bdc eoc: Updates to work with new Float abstraction. 2021-07-18 17:27:52 -07:00
1c06833658 Fixes for test when using Float == f64. 2021-07-18 17:27:31 -07:00
95de5863cc all: s/f32/Float/g now using customer Float alias. 2021-07-18 17:18:08 -07:00
5d57304d95 eoc8: implement the end of chapter 8 challenge. Note:
This implementation looks like crap and I'm not sure why.
2021-07-18 16:55:29 -07:00
599f484dff camera: protoype supersampling for rayon render pass. 2021-07-18 16:31:36 -07:00
ce998c68eb matrices: rename inverse_old to inverse_rtiow to indicate origin. 2021-07-18 16:30:38 -07:00
37048ddd52 spheres: implement rtiow Sphere::intersect for comparison. 2021-07-18 16:29:45 -07:00
19b2ef6ded intersections: derive Debug for PrecomputedData. 2021-07-18 16:29:21 -07:00
7e450d664e world & intersections: handle shadows. 2021-07-18 13:08:03 -07:00
09047eb713 world: implement World::is_shadowed. 2021-07-18 12:54:18 -07:00
1065702a5d materials: make lighting calculation shadow aware 2021-07-18 12:46:49 -07:00
efdc963a48 camera: update default render strategy to match CLI default 2021-07-18 12:37:29 -07:00
02ef8634c3 camera: update docstring to reflect new findings 2021-07-18 12:36:15 -07:00
7e19d7e61b camera: lint cleanup 2021-07-18 12:14:13 -07:00
dbf5451070 eoc7: make command flag for choosing rendering strategy.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-18 11:49:56 -07:00
4f88d2c101 camera: make rendering strategy configurable, add workerpool version. 2021-07-18 11:48:58 -07:00
94ea724344 lights & world: derive Clone for PointLight and World. 2021-07-18 11:14:44 -07:00
967920e1fa eoc7: show elapsed time out to milliseconds. 2021-07-18 11:12:19 -07:00
2eeeb2013b camera & spheres: add feature tag disable_inverse_cache 2021-07-18 08:51:51 -07:00
538b8ad364 camera: cache inverse tranform for huge speed up on ray_for_pixel.
WIP parallel render function.
2021-07-17 23:16:50 -07:00
2395c96e01 spheres: cache inverse transform to accelerate normal_at. 2021-07-17 23:10:54 -07:00
5f3bfd744e eoc7: implement end of chapter 7 challenge.
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-17 22:05:54 -07:00
e752536430 camera: correct x/y calculations in Camera::render. 2021-07-17 21:52:11 -07:00
059f710706 camera: implement Camera::render. 2021-07-17 21:45:15 -07:00
ad02d7e945 canvas: remove unnecessary mut on Canvas::get's self parameter. 2021-07-17 21:44:48 -07:00
5911610064 camera: implement Camera::ray_for_pixel. 2021-07-17 21:34:09 -07:00
39f7f77b74 camera: add basic Camera object. 2021-07-17 21:22:07 -07:00
125c96c25f transformations: implement view_transform. 2021-07-17 17:40:35 -07:00
249a2915d9 matrices: minor tweaks to make debugging easier. 2021-07-17 17:40:14 -07:00