TL;DR: A ray tracer is a program that takes inputs of objects (like spheres or light sources), renders them using principles of optics and computer graphics, and outputs an image! In fact, this is how CGI (Computer-Generated Imagery) is made, and so is a very useful tool.
Specifics: A ray tracer uses basic principles of optics (e.g., reflection, refraction, etc.). It traces every light ray from a source to a certain object, determines if it intersects that object, and at what angle it does so (in order to determine the color of that specific pixel). Java proves a useful language for this, as Object-Oriented Programming is helpful when dealing with multiple instances of a type of object. Furthermore, rendering and displaying graphics is a lot simpler with Java than with several other languages (e.g., Python).
Further Research: To learn more about ray tracers, click here. To learn more about Object-Oriented Programming, click here. To learn more about Java, click here. Finally, to learn more about CGI, click here.
Actually, Google Searches for ray tracing were on an all-time high in August of 2019. Now, in the September of that year, they've hit another all-time high. Thus, it seems that the popularity is increasing. Click here for a helpful graphic from Google Trends... Additionally, for the first time in the 15 years of data recorded, ray tracing has had a greater popularity than CGI in August of 2019 (this is still occuring now, in September 2019). During this time period, most states in the US had more searches for ray tracing than they did for CGI. Click here for the graphic.
- Sept. 2, 2019 -- v0.48
- Initial code with 48% functional ray-tracer. Many times, the output image is obviously inaccurate.
- Sept. 3, 2019 -- v0.48-2
- No change in functionality. Tester class was updated and improved.
- Sept. 4, 2019 -- v0.48-3
- New user-friendly file created which takes input for easy scene creation.