28 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			1.1 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
 | 
						|
 | 
						|
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'.
 |