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
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