A brief computer graphics / rendering course
Branch: master
Clone or download
Latest commit 80065da Jan 30, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitpod.yml gitpod support Jan 27, 2019
CMakeLists.txt Tiny KABOOM first commit; the simplest possible ray marching Jan 27, 2019
Dockerfile gitpod support Jan 27, 2019
Readme.md Update Readme.md Jan 30, 2019
geometry.h Tiny KABOOM first commit; the simplest possible ray marching Jan 27, 2019
kaboom.gif animations Jan 27, 2019
kaboom.mp4 animations Jan 27, 2019
out.jpg fire color palette Jan 27, 2019
tinykaboom.cpp few comments Jan 27, 2019

Readme.md

KABOOM! in 180 lines of bare C++

This repository is a teaching aid for my computer graphics lectures. It is not meant to produce the ultimate or even physically realistic renders. It is meant to be simple. This project is distributed under the DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE.

Check the article that accompanies the source code.

This project is closely related to my software raytracer. If you are looking for a software rasterizer, check the other part of the lectures.

In my lectures I tend to avoid third party libraries as long as it is reasonable, because it forces to understand what is happening under the hood. So, the raytracing in 180 lines of plain C++ produces this result:

compilation

git clone https://github.com/ssloy/tinykaboom.git
cd tinykaboom
mkdir build
cd build
cmake ..
make

You can open the project in Gitpod, a free online dev evironment for GitHub:

Open in Gitpod

On open, the editor will compile & run the program as well as open the resulting image in the editor's preview. Just change the code in the editor and rerun the script (use the terminal's history) to see updated images.

Homework

The possibilities are infinte. For example, you can add the environment map and some transparency:

Add other objects and illuminate them: