Skip to content

A basic ray tracing implementation with shading, shadows, and reflections

Notifications You must be signed in to change notification settings

sinclairtarget/simple-raytrace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

simple-raytrace

A basic ray tracing implementation with shading, shadows, and reflections, based on the raytracer outlined in Chapter 4 of Fundamentals of Computer Graphics.

Runs on Mac OS only for now.

Example Renderings

Twin Spheres

Floating Cube

The Great Pyramid

Compiling

Rake is used to build the program. Assuming you have Ruby and Rake installed:

[sinclairtarget 17:04 simple-raytrace]$ rake
mkdir -p build/SimpleRaytrace.app/Contents
cp Info.plist build/SimpleRaytrace.app/Contents/Info.plist
clang -fobjc-arc -c src/cocoa/ApplicationDelegate.m -o src/cocoa/ApplicationDelegate.o
clang -fobjc-arc -c src/cocoa/BitmapContentView.m -o src/cocoa/BitmapContentView.o
clang -fobjc-arc -c src/cocoa/BitmapWindow.m -o src/cocoa/BitmapWindow.o
clang -fobjc-arc -c src/cocoa/platform.m -o src/cocoa/platform.o
clang -c src/camera.c -o src/camera.o
clang -c src/color.c -o src/color.o
clang -c src/main.c -o src/main.o
clang -c src/random_sort.c -o src/random_sort.o
clang -c src/ray.c -o src/ray.o
clang -c src/ray_hit.c -o src/ray_hit.o
clang -c src/scene.c -o src/scene.o
clang -c src/shading.c -o src/shading.o
clang -c src/sphere.c -o src/sphere.o
clang -c src/triangle.c -o src/triangle.o
clang -c src/vec3.c -o src/vec3.o
mkdir -p build/SimpleRaytrace.app/Contents/MacOS
clang -framework Cocoa -o build/SimpleRaytrace.app/Contents/MacOS/SimpleRaytrace src/cocoa/ApplicationDelegate.o src/cocoa/BitmapContentView.o src/cocoa/BitmapWindow.o src/cocoa/platform.o src/camera.o src/color.o src/main.o src/random_sort.o src/ray.o src/ray_hit.o src/scene.o src/shading.o src/sphere.o src/triangle.o src/vec3.o
mkdir -p build/SimpleRaytrace.app/Contents/Resources
cp assets/skyrim.png assets/skyrim_man.png build/SimpleRaytrace.app/Contents/Resources

You can then run the program either by double-clicking on the created app or by using the run.sh script provided.

Changing the Scene

The scene and the objects in it are hard-coded. See BuildScene() in src/main.c.

About

A basic ray tracing implementation with shading, shadows, and reflections

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published