Raytracing

Fully raytraced output of static scenes in OpenGL (Written in C++)

Computer Graphics II Course Project

Features Implemented:

Try it out:



Resources Used:


Research material:

[1] “Ray-Box Intersection,” Scratchapixel 2.0, 15-Aug-2014. [Online]. Available: https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-box-intersection. [Accessed: 20-Apr-2020].

[2] Weisstein, Eric W. "Spherical Coordinates." From MathWorld--A Wolfram Web Resource. [Online]. Available: https://mathworld.wolfram.com/SphericalCoordinates.html

[3] “Barycentric Coordinates,” Scratchapixel 2.0, 15-Aug-2014. [Online]. Available: https://www.scratchapixel.com/lessons/3d-basic-rendering/ray-tracing-rendering-a-triangle/barycentric-coordinates. [Accessed: 20-Apr-2020].

[5] “Bump mapping,” Wikipedia. [Online]. Available: https://en.wikipedia.org/wiki/Bump_mapping. [Accessed: 20-Apr-2020].

[6] J. F. Blinn, “Simulation of wrinkled surfaces,” ACM SIGGRAPH Computer Graphics, vol. 12, no. 3, pp. 286–292, 1978.

[7] “Supersampling,” Wikipedia. [Online]. Available: https://en.wikipedia.org/wiki/Supersampling. [Accessed: 20-Apr-2020].

[8] Adam Marrs, Josef Spjut, Holger Gruen, Rahul Sathe, and Morgan McGuire, “Improving Temporal Antialiasing with Adaptive Ray Tracing,” in Ray tracing gems: high-quality and real-time rendering with DXR and other APIs, California: ApressOpen, 2019, pp. 353–368.

[9] K. Shkurko, C. Yuksel, D. Kopta, I. Mallett, and E. Brunvand, “Time Interval Ray Tracing for Motion Blur,” IEEE Transactions on Visualization and Computer Graphics, vol. 24, no. 12, pp. 3225–3238, Jan. 2018.


Solution:

base OpenGL program (main.cpp) uses code from: "Interactive Computer Graphics: A Top-Down Approach with OpenGL. Edward Angel and Dave Shreiner. Sixth Edition, Addison-Wesley 2012. https://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/SIXTH_EDITION/

Libraries: stb_image, a public domain image loading library by Sean Barrett. (https://github.com/nothings/stb)

Assets: rng.png - Orange Bumpmap. Uploaded by Wikipedia user Brion VIBBER. Liscenced under CC0 GNU Free Documentation License. Available at https://commons.wikimedia.org/wiki/File:Orange-bumpmap.png

brick-t.jpg, brick-b.jpg - 'Brick 023' texture and normal map. Created for CC0 TEXTURES by Lennart Demes, 2017 - 2020. Available at https://cc0textures.com/view?id=Bricks023

rock-t.jpg, rock-b.jpg - 'Rock 02' and normal map. Created for CC0 TEXTURES by Lennart Demes, 2017 - 2020. Available at https://cc0textures.com/view?id=Rock029

marble.jpg - 'Marble 012'. Created for CC0 TEXTURES by Lennart Demes, 2017 - 2020. Available at https://cc0textures.com/view?id=Marble012

circles.jpg - 'Sheet Metal 001'. Created for CC0 TEXTURES by Lennart Demes, 2017 - 2020. Available at https://cc0textures.com/view?id=SheetMetal001

Lamp model in 1.json from "Furniature Pack - Low Poly 3d Furniture Asset Pack" by Inborn Ninja. Available at https://mehrasaur.itch.io/3d-furnitre-pack. CC0 Liscence.