68 Commits

Author SHA1 Message Date
Zachary D. Rowitsch
26560effb0 Genericize lists, makes it easy to switch between linked list to array backed list 2023-10-08 00:24:33 -04:00
twistdroach
e2c819261c Refactor functions with no arguments to make sure they have a prototype 2023-10-02 20:05:58 -04:00
twistdroach
c05ef0b5b0 Add some return NULLs in case a Throw happens outside of a Try block 2021-01-16 21:21:47 -05:00
Zachary D. Rowitsch
24f56ea0e1 Stop using reallocarray for portability 2020-12-04 23:09:08 -05:00
Zachary D. Rowitsch
93d4c98c64 NetBSD compat changes 2020-11-13 15:38:46 -05:00
Zachary D. Rowitsch
61b5f7b1f7 Begin clang-format 2020-10-23 23:16:52 -04:00
Zachary D. Rowitsch
fd7b1612ee Add bounding volume hierarchies. Move groups to a linked list implementation instead of the array backed list (lots of removals with BVH calculation). Turn off OpenMP for Debug builds 2020-10-08 21:45:29 -04:00
Zachary D. Rowitsch
bc478d660a add Constructive Solid Geometry support 2020-10-04 20:33:41 -04:00
Zachary D. Rowitsch
e3ecba7b84 pull raytracer stuff out of datastructures 2020-10-03 11:34:11 -04:00
Zachary D. Rowitsch
fbfae1a2b4 minor const additions in camera.c 2020-10-03 11:21:26 -04:00
Zachary D. Rowitsch
6d87b1547e move pxl calc inside render loop (not likely important) 2020-10-02 00:05:23 -04:00
Zachary D. Rowitsch
7c46be57c9 better obj file load error handling 2020-10-01 23:20:28 -04:00
Zachary D. Rowitsch
cad4091e86 Minor fix to prevent potential overflow when malloc'ing canvas data 2020-09-30 21:29:44 -04:00
Zachary D. Rowitsch
e2a3378789 Update readme to include code quality badge, fix log message format error in wavefrontobj.c 2020-09-30 21:05:49 -04:00
Zachary D. Rowitsch
5c8e2e70ad Add triangle normal interpolation... 2020-09-29 22:50:49 -04:00
Zachary D. Rowitsch
86e46c5cf3 Modify camera to log some rendering status 2020-09-28 19:47:39 -04:00
Zachary D. Rowitsch
2558670a24 Added triangle support, added obj support. added render_obj binary to load and scale an obj file and render it 2020-09-28 00:35:46 -04:00
Zachary D. Rowitsch
7f2e53cbd1 Implement groups 2020-09-25 00:36:26 -04:00
Zachary D. Rowitsch
39d1246141 minor refactoring to pull tuples & matrix into math package, need to pull apart raytracing and datastructures next 2020-09-09 23:19:24 -04:00
Zachary D. Rowitsch
2a6036da3d Added support for cubes, allowed a material setting to opt out an object for shadow hit calculation, and added a matrix multiply chaining convenience function 2020-09-09 23:04:11 -04:00
Zachary D. Rowitsch
66e29e41d1 Add schlick approximation to implement fresnel effect 2020-09-07 00:06:31 -04:00
Zachary D. Rowitsch
0506bd7b68 begin implementing refraction & transparency, no updated demo quite yet, need fresnel effect 2020-09-06 22:37:07 -04:00
Zachary D. Rowitsch
7de52c66a4 add recursion limit in reflection ray casting 2020-09-05 18:42:40 -04:00
Zachary D. Rowitsch
7a7a150590 Begin adding reflections. No recursion limit yet, so world test blows up 2020-09-05 00:54:54 -04:00
Zachary D. Rowitsch
30ab325f8b Fix to checker pattern 2020-08-29 01:41:01 -04:00
Zachary D. Rowitsch
417d232df1 Beggining patterns, only have test & striped at the moment 2020-08-28 23:38:50 -04:00
Zachary D. Rowitsch
32f98db841 Factored out shapeholder, shapes handling is now much cleaner 2020-08-26 00:28:59 -04:00
Zachary D. Rowitsch
569aa41f46 Add WORLD_delete_all_objects for convenience so we don't have to track of ptrs to all the objects in a world outside of the world 2020-08-25 23:26:55 -04:00
Zachary D. Rowitsch
c64fd3cfd0 Add a plane shape type, with tests, and a new demo executable 2020-08-25 23:12:53 -04:00
Zachary D. Rowitsch
71726673eb Minor refactor to push shapes into their own module... 2020-08-25 20:24:25 -04:00
Zachary D. Rowitsch
bb991af361 Minor refactoring to cleanup after creating shape parent class 2020-08-25 20:09:00 -04:00
Zachary D. Rowitsch
ed3888f456 Abstract shapes is complete 2020-08-24 21:34:46 -04:00
Zachary D. Rowitsch
27ff591903 Begin abstracting shapes 2020-08-23 21:52:27 -04:00
Zachary D. Rowitsch
60f7cf4af2 Remove intersections module, absorb into ray 2020-08-22 22:37:27 -04:00
Zachary D. Rowitsch
af59f19026 Implment shadows, one failing world test! 2020-08-20 00:09:06 -04:00
Zachary D. Rowitsch
8165bd1eb5 Finished adding camera, build demo with three spheres 2020-08-19 00:20:18 -04:00
Zachary D. Rowitsch
860d88008e Beginning camera implementation 2020-08-17 23:34:32 -04:00
Zachary D. Rowitsch
166c0b3f25 further world implementation, light copy function 2020-08-17 22:38:01 -04:00
Zachary D. Rowitsch
dabf643346 Further world implementation (and introduction of intersection computation cache) 2020-08-16 23:07:05 -04:00
Zachary D. Rowitsch
dd045f5516 Begin world implementation, minor cleanup 2020-08-16 22:06:42 -04:00
Zachary D. Rowitsch
6b029b69fc More minor refactoring 2020-08-14 23:19:10 -04:00
Zachary D. Rowitsch
21461babe4 Refactoring... name structs that were anonymous (to help my ide), refactor to minimize heap allocations 2020-08-14 23:04:59 -04:00
Zachary D. Rowitsch
715695778e Optimize matrixes a bit - put double array inside the struct instead of a ptr. Inlined a few matrix functions. Reduced optimized run time of phone_sphere benchmark from 2m to 1m 2020-08-13 23:40:30 -04:00
Zachary D. Rowitsch
68c220a3fa Configure unity to include doubles, use reallocarray in ray.c 2020-08-13 21:00:56 -04:00
Zachary D. Rowitsch
594127acfc add newlines to make clang happy 2020-08-12 23:56:33 -04:00
Zachary D. Rowitsch
46872568fc finish SPHERE_new constructor refactor 2020-08-12 23:41:50 -04:00
Zachary D. Rowitsch
65d1a212d5 Add assertion to CAVAS_write_pixel 2020-08-12 23:38:41 -04:00
Zachary D. Rowitsch
212150d4d9 Add materials/lights, calculate phong shading, phon_render_sphere not quite shaded correctly yet... 2020-08-12 00:55:11 -04:00
Zachary D. Rowitsch
82e94c8ba1 Add sphere transformations (and use them when calculating ray intersections), add sphere_shadow to test 2020-08-11 05:46:08 -04:00
Zachary D. Rowitsch
20f06a79b5 Add rays/spheres/intersections. Spheres incomplete 2020-08-10 00:15:29 -04:00