A (nearly) pure Ray Tracing Project for Python
This work is based off the books Ray Tracing in One Weekend but ported to python
dependencies include:
- pypy3 (note all other dependencies must be installed within pypy3)
- numpy
- matplotlib
- tqdm
- noise
- Install Anaconda
- conda env create -f environment.yaml
- conda activate PyTrace_env
- pypy3 -m ensurepip
- if on mac you may need to fake a linked library described here
- pypy3 -m pip install -r requirements.txt
- pypy3 main.py
Technically, you can run w/o pypy3 installed but it is very slow w/o the JIT compilation, as seen below
Note: Iterations per second are how many pixels
256 spp
1200 x 800
3 Large spheres
Standard implementation
avg: 73.34 it/s
time: 4:10:06
256 spp
1200 x 800
3 Large spheres
Standard implementation w/PyPy
avg: 4953.02 it/s
time: 00:03:13
100 spp
200 x 100
3 Large spheres
Standard implementation
avg: 179.90 it/s
time: 00:01:50
100 spp
200 x 100
3 Large spheres
Standard implementation w/ PyPy
avg: 10819.22 it/s
time: 00:00:01
256 spp
1200 x 800
3 Large spheres + random spheres
Standard implementation w/PyPy
avg: 307.16 it/s
time: 00:52:01
100 spp
1200 x 800
3 Large spheres + random spheres
Standard implmentation w/PyPy
avg: 952/75 it/s
time: 00:16:47
64 spp
200 x 100
3 Large spheres + random spheres
Standard implementation w/PyPy w/o cprofile
avg: 1207.04it/s
time: 00:00:06