A voxel is like a 3d pixel used in many fields and applications. It can also make for some interesting 3D art.
- support changing of camera angle and position
- support different voxel materials
- support shadows and lights (emissive materials)
- support many models in the same scene
- avoid unnecessary voxel marching by using AABB collisions check with the voxel model
- try using compute shaders rather than fragment shaders, it could be beneficial though I need to research why
- render using multiple passes rather than a single pass to support lower-end GPUs, and generally allow for more samples per pixel
- voxel editor !? (a bit of a stretch)
The following books, papers, and other references have been used in the making of this personal project:
- https://raytracing.github.io/books/RayTracingInOneWeekend.html
- http://www.cse.yorku.ca/~amana/research/grid.pdf
- https://nvpro-samples.github.io/vk_mini_path_tracer/index.html#antialiasingandpseudorandomnumbergeneration/pseudorandomnumbergenerationinglsl
All of the following were rendered on a GTX 1050 TI Mobile with 256 samples per pixel and 50 max bounces.
Rendered in 82.95 milliseconds.
Rendered in 74.47 milliseconds.
Rendered in 516.46 milliseconds.