Matthew Gordon
6639ed813b
Remove some old code that was already commented out
2019-12-31 22:15:13 -05:00
Matthew Gordon
a785eb796f
Only enable benchmark when benchmarking, not as regular test
2019-12-31 22:14:24 -05:00
Matthew Gordon
1653174ef6
Make triangle a submodule of raycasting.
2019-12-21 15:29:52 -05:00
Matthew Gordon
c35735f117
Move Plane into it's own submodule
2019-12-21 15:19:16 -05:00
Matthew Gordon
91579745cb
Move Sphere to a submodule
2019-12-21 15:06:48 -05:00
Matthew Gordon
4e7565638a
Move raycsating module into subdirectory
2019-12-21 10:50:59 -05:00
Matthew Gordon
2c4e951767
Add Linux perf output to .gitignore
2019-12-21 10:45:48 -05:00
Matthew Gordon
08484306fd
Move load_obj() into submudule
2019-12-21 10:43:39 -05:00
Matthew Gordon
12e26887c1
Make output image smaller.
2019-12-21 10:43:39 -05:00
Matthew Gordon
1b9cf2cbca
Add benchmark
2019-12-21 10:43:33 -05:00
Matthew Gordon
7cdcdb145a
Remove unused function.
2019-12-21 10:08:00 -05:00
Matthew Gordon
e1de889d3a
Quick-and-dirty multithreading
...
Not the best multithreading scheme and needs error handling, but
it works.
2019-12-21 10:07:53 -05:00
Matthew Gordon
3618636c42
First quick pass at loading OBJ files.
2019-12-21 09:11:30 -05:00
Matthew Gordon
199b33f944
Remove unused function
2019-12-12 13:01:02 -05:00
Matthew Gordon
777580be17
Fix triangle intersection passing when triangle is behind ray
2019-12-12 08:57:46 -05:00
Matthew Gordon
9096ff67b6
Remove some debug prints that I committed by accident
2019-12-12 08:56:31 -05:00
Matthew Gordon
365b6063e0
Tweak test scene
2019-12-12 08:45:15 -05:00
Matthew Gordon
c05eba391b
Add more tests for triangle intersection and fix a couple of bugs
...
Still not working properly.
2019-12-12 07:51:26 -05:00
Matthew Gordon
9eca3a4cfe
Replace Vector3 with Point3 where appropriate
2019-12-07 11:09:07 -05:00
Matthew Gordon
a7e1f1c134
Add type alias for the return type of Material::bsdf()
2019-12-07 10:58:04 -05:00
Matthew Gordon
52da1bc952
Clean up a long if-else sequence. No change in functionality.
2019-12-07 10:58:04 -05:00
Matthew Gordon
c0d0f81335
Replace ClampingToneMapper::new() with derive(Default)
2019-12-07 10:58:04 -05:00
Matthew Gordon
d98144ab74
Minor cleanup and tidying; no change in functionality.
2019-12-07 10:58:04 -05:00
Matthew Gordon
2b3d350fbb
Add intersection test for triangle; not quite working yet though
2019-12-07 09:28:11 -05:00
Matthew Gordon
b61a089869
Add test output image to README.md
2019-12-02 21:37:15 -05:00
Matthew Gordon
434a285625
Enable optimization in debug builds; it's basically unusable without
2019-11-30 11:29:30 -05:00
Matthew Gordon
1a3d41e6d4
Enable LTO for release builds
2019-11-30 11:29:07 -05:00
Matthew Gordon
6f1663f616
Fix issue with noise in refrections
...
The BSDF for Reflective material had rounding issues that would
sometimes make the reflection strength NaN.
2019-11-30 11:26:18 -05:00
Matthew Gordon
d19d5200b0
Add another light to test scene, to fill shadows in a little
2019-11-29 22:30:31 -05:00
Matthew Gordon
8b0b8c59ba
Add ReflectiveMaterial material type
...
Although there's still some issues with rendering the reflections.
2019-11-29 22:30:08 -05:00
Matthew Gordon
5cd80ae05c
Add sample funtion to Material trait, with default implementation
2019-11-29 22:27:43 -05:00
Matthew Gordon
dcee4fb716
Add missing normalization of tangent vectors
...
This was required to get reflection working but also fixes
issues with the PhongMaterial parameters.
2019-11-29 22:25:50 -05:00
Matthew Gordon
ad6e1c1b4a
Add guthub build badge to README
2019-11-28 11:29:11 -05:00
Matthew Gordon
b2b3c7c978
GitHub build action ( #1 )
...
Add Github action to build and test
2019-11-28 11:01:14 -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