A simple raytracer in exactly 450 lines of C code.
Find a file
2020-11-20 02:03:07 +13:00
output.bmp Initial Commit 2020-11-20 01:44:09 +13:00
README.md Update README.md with build instructions + license 2020-11-20 01:58:43 +13:00
stb_image_write.h Initial Commit 2020-11-20 01:44:09 +13:00
tinyray.c Normalise indentation (spaces vs tabs) 2020-11-20 02:02:48 +13:00

tinyray

A simple raytracer in exactly 450 lines of C-code.

Output

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

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