tinyray/README.md

44 lines
1.5 KiB
Markdown

# tinyray
A simple raytracer in exactly 450 lines of C-code.
![Output](output.bmp)
### Features
* Sphere-Ray Intersection
* Materials
* Diffuse and Specular Lighting
* Point, Directional, and Ambient Lights
* Custom Floating-Point Vector Library
* Output to image with stb_image
* Gradient Background
* Watermark
### Building
Find a compiler and build `tinyray.c`. Run the executable and it'll create an image called 'output.bmp' in that directory. Simple as that!
Some examples:
```
# Building with gcc
$ gcc tinyray.c -o "tinyray"
# Building with cl
> cl tinyray.c
```
tinyray uses [the excellent stb_image_write library](https://github.com/nothings/stb/blob/master/stb_image_write.h) for outputting a bitmap image.
### License
Public Domain - Do whatever you like!
Credit would be very much appreciated though :)
### Helpful Resources
I created this toy raytracer to learn about basic raytracing (and for fun, of course), taking inspiration from the following resources:
- [Gabriel Gambetta: Computer Graphics From Scratch](https://www.gabrielgambetta.com/computer-graphics-from-scratch/basic-ray-tracing.html)
- [Scratch A Pixel: Minimal Ray Tracing](https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-sphere-intersection)
- [ssloy's tinyraytracer](https://github.com/ssloy/tinyraytracer)
The first link is especially helpful in understanding how raytracing works from a mathematical perspective.
**I created this for fun for the UoA ENGGEN 131 Art Challenge**