• Stars
    star
    2,345
  • Rank 19,616 (Top 0.4 %)
  • Language
    C++
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A brief computer graphics / rendering course

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:

More Repositories

1

tinyrenderer

A brief computer graphics / rendering course
C++
20,126
star
2

tinyraytracer

A brief computer graphics / rendering course
C++
4,978
star
3

tinyraycaster

486 lines of C++: old-school FPS in a weekend
C++
1,884
star
4

triador

Ternary computer emulator
C++
227
star
5

glsltuto

GLSL shaders tutorial
C++
217
star
6

least-squares-course

By a programmer for programmers
TeX
189
star
7

tinycompiler

Writing a compiler in a week-end
Python
96
star
8

hellOGL

Yet another (but better) modern OpenGL hello world
C
82
star
9

sdl2-demo

sdl2 platformer game blank repository
C++
48
star
10

ultimaille

The ultimate mesh handling library
C
47
star
11

tutorials

C++
44
star
12

penny

3 servos, 10 dollars hexapod
HTML
31
star
13

invertible-maps

C++
25
star
14

stlbfgs

C++ L-BFGS implementation using plain STL
C++
24
star
15

neato-xv11-lidar

Protocol description and linux implementation
C++
23
star
16

instantangle

2D mesh deformation interactive demo
C
20
star
17

tinyrenderer-java

Just a java implementation of https://github.com/ssloy/tinyrenderer/wiki
Java
14
star
18

fast-and-tiny

A very basic raytracer in python
Python
10
star
19

QIS

Quasi-isometric stiffening C++ implementation
C++
9
star
20

quadruped

TRIK + dynamixel ax-12a
C++
7
star
21

harlequin

ZX spectrum 48k Harlequin Superfo clone
7
star
22

mathfun

C
6
star
23

winslow2d

Winslow elliptic smoothing for 2d unstructured triangular meshes
C++
6
star
24

ENSG

Support c++ code for lectures on numerical geology
Python
3
star
25

stroll

code example for bachelor programming class
C++
2
star
26

pentominos

L2 programmation avancรฉe support
C++
1
star
27

ternary

triador hardware
C
1
star
28

NuPogodi

C++
1
star
29

ifs

iterated function systems small programs
C++
1
star
30

jfig2020

rendering contest entries
1
star