52 Commits

Author SHA1 Message Date
3c04d674a5 Write README 2025-09-23 15:57:02 +01:00
e35d1a68a3 Add demo image 2025-09-23 15:51:30 +01:00
c1af03bfd5 Tweak demo scene 2025-09-23 15:36:09 +01:00
cf876f4a8b Allow negative sky colour to be specified 2025-09-23 15:36:09 +01:00
e6ee20d5d1 Create multiple demo programs 2025-09-23 15:36:09 +01:00
af3e685022 Add area light material 2025-09-23 15:36:09 +01:00
d6a2a8aa44 Allow -1 to be passed for auto focal length 2025-09-23 15:36:09 +01:00
9fb16a58c4 Set absorbed colour in material scatter function 2025-09-23 15:36:09 +01:00
cc7ff471f1 Add camera aperture / depth-of-field 2025-09-23 15:36:08 +01:00
9e3bc4176b Add PNGs to .gitignore 2025-09-23 15:36:08 +01:00
cf8937cd6e Add rng_xy() 2025-09-23 15:36:08 +01:00
0dccfcddea Rename rng_disc() to rng_plusminus() 2025-09-23 15:36:08 +01:00
fa60617d9e Adjust camera to focus at target 2025-09-23 15:36:08 +01:00
fc9980b838 Move rendering functions to own module 2025-09-23 15:36:08 +01:00
5edca0b565 Randomise scene 2025-09-23 15:36:08 +01:00
e407090152 Increase MAX_ITER in camera 2025-09-23 15:36:08 +01:00
61f9ec7642 Create scene data structure 2025-09-23 15:36:08 +01:00
a6b52d5f75 Change sky colour 2025-09-23 15:36:08 +01:00
c32c903d18 Allow camera position and target position to vary 2025-09-23 15:36:08 +01:00
75159e7223 Remove focal_len parameter from camera (hard-code as 1.0) 2025-09-23 15:36:08 +01:00
bb6c1683b2 Specify camera FOV instead of viewport height 2025-09-23 15:36:08 +01:00
90240ee5ad Add fuzz parameter to reflective material 2025-09-23 15:36:08 +01:00
1e31fae5d0 Make samples per pixel a camera parameter 2025-09-23 15:36:08 +01:00
1eb8fd3067 Add dielectric material 2025-09-23 15:36:08 +01:00
cdc56a119f Add progress output 2025-09-23 15:36:08 +01:00
249eedc5d6 Tweak demo scene a little 2025-09-23 15:36:08 +01:00
187876c3f2 Add reflective material 2025-09-23 15:36:08 +01:00
ce45c57662 Create material abstraction 2025-09-23 15:36:08 +01:00
b15edd1906 Gamma correct pixels before writing out 2025-09-23 15:36:08 +01:00
a2559d373f Implement Lambertian diffuse scattering 2025-09-23 15:36:08 +01:00
61cfddd75c Implement Gaussian anti-aliasing 2025-09-23 15:36:08 +01:00
75b646dd44 Parallelise rendering 2025-09-23 15:36:08 +01:00
8827f22359 Sample each pixel multiple times 2025-09-23 15:36:08 +01:00
c92f43ca3c Implement diffuse scattering 2025-09-23 15:36:08 +01:00
83154d7548 Prevent potential divide by zero in vec3_unit() 2025-09-23 15:36:08 +01:00
5d48f61406 Implement RNG module 2025-09-23 15:36:08 +01:00
036b8fd4d3 Simplify hit detection logic 2025-09-23 15:36:08 +01:00
3687723153 Move rendering logic into camera module 2025-09-23 15:36:08 +01:00
f934cc8fa8 Handle hits on multiple objects 2025-09-23 15:36:08 +01:00
252489f6d9 Add "ground" to demo scene 2025-09-23 15:36:08 +01:00
9bf8753f42 Add front/back face detection 2025-09-23 15:36:08 +01:00
f4ffea57fd Move camera initialisation into seperate module 2025-09-23 15:36:08 +01:00
47fcd8a11e Create obj module for scene objects 2025-09-23 15:36:08 +01:00
f7e71da27f Colour sphere based on normal 2025-09-23 15:36:08 +01:00
4705671b53 Implement simple intersection detection with sphere 2025-09-23 15:36:08 +01:00
255f2bfae8 Set up camera and bg in demo 2025-09-23 15:36:08 +01:00
65b50578fa Create vec3 module 2025-09-23 15:36:08 +01:00
db2c95640d Add license (Komorebi) 2025-09-23 15:36:08 +01:00
b1256f4648 Write simple CMake build config 2025-09-23 15:36:08 +01:00
ad9c3373fe Add .gitignore for build directory and output images 2025-09-23 15:36:08 +01:00