---
# System prepended metadata

title: Homework 11 - Ray Tracing

---

# Homework 11 - Ray Tracing

## Läxa
Veckans läxa är att implementera någon form av ray tracing algoritm. Programmet ska antingen visa bilden i ett fönster eller producera bild filer i något rimligt format (t.ex BMP, JPG, PNG, etc.). Eran raytracer ska kunna hantera sfärer och oändliga plan, men ni får gärna ha flera typer av objekt. Den ska också har någon form av lighting. Koden ska ligga uppe i ett repo i INDA22PlusPlus organisationen och ha namnet “**_kth-id_**-raytracer”. Ni har till och med nästa övning den 20 Januari på er med denna läxa. 

Lägg gärna upp bilder på era resultat i slacken.

## Utökningar
* Path tracer
    * Monte carlo metod
    * Objekt är ljuskällor
    * Mycket beräkningar (Rekomenderat att ha algoritmen på GPU eller multithreaded)
* Ray marcher
* Multithreada er algoritm
* Implementera din algoritm på GPU för att köra snabbare
* Implementera en BVH för att göra algoritmen snabbare
* Textures


## Material
* [Plane and Sphere intersection equations](https://raw.githubusercontent.com/INDA22PlusPlus/raytracing-material/main/intersections.pdf)
* [Google Slides från övningen](https://docs.google.com/presentation/d/1qeWVtJmBy6YwyIUoh_IC3dCz71bZwdFD-sWJlIidhvM/edit?usp=sharing)
* [Ray Tracing in One Weekend](https://raytracing.github.io/)
* [Bounding Volume Hierarchies(BVH)](https://raytracing.github.io/books/RayTracingTheNextWeek.html#boundingvolumehierarchies)
* [Path tracing](https://raytracing.github.io/books/RayTracingTheRestOfYourLife.html)
* [Ray marching](https://michaelwalczyk.com/blog-ray-marching.html)
* [PPM (lätt bild format om ni inte vill använda bibliotek)](https://en.wikipedia.org/wiki/Netpbm#PPM_example)