dvdrw
3827be61ac
Random sampling is available when building with `-DRANDOM_SAMPLING', or with `make randsampl'. The sample counts are rather low, so the output is both slow and noisy, which is why it's disabled by default.
29 lines
1.2 KiB
Plaintext
29 lines
1.2 KiB
Plaintext
A raytracer that will render to any ANSI terminal with support for 24-bit
|
|
colours, at least 80x24 big.
|
|
|
|
Build with `make' and run the resulting binary in `/bin'.
|
|
|
|
The raytracer implements the following:
|
|
- Planes, spheres, and point lights
|
|
- Reflection
|
|
- IOR-based refraction
|
|
- Cook-Torrance BRDF (a few other models are left in the code)
|
|
- Primitive object materials
|
|
- Random sampling (build with `make randsampl' to add fireflies :)
|
|
|
|
You can move around with WASD and SPC/Z; zoom with I/O, change the exposure with
|
|
+/-, and quit with Q.
|
|
|
|
The image output is a 24-bit coloured 80x24 (by default, tweakable in
|
|
`main.cpp'), 2x supersampled. The output uses Unicode characters and differently
|
|
coloured foreground and background to effectively double the output resolution.
|
|
You can read the implementation in `buffer.cpp'.
|
|
|
|
The raytracing loop is parallelised using an OpenMP pragma, which should be well
|
|
supported on most systems. You can just comment out the pragma (and remove the
|
|
omp flag from the Makefile) to remove parallelisation.
|
|
|
|
Although the code isn't particularly documented, most functions have a docstring
|
|
in their respective header files. Most fun things to play around with are
|
|
located in `main.cpp'.
|