Ray tracing is a computer graphics method that renders images realistically. As the name suggests, this technique primarily traces the path of light rays interacting with objects in a scene [1], permitting the calculation of lighting and reflecting impact [2]. As ray tracing is a time-consuming process, the need for parallelization to solve this problem arises. One downside of this solution is the existence of race conditions. In this work, we explore and experiment with a different, well-known solution for this race condition. Starting with the introduction and the background section, a brief overview of the topic is followed by a detailed part of how the race conditions may occur in the case of the ray tracing algorithm. Continuing with the methods and results section, we have used OpenMP to parallelize the Ray tracing algorithm with the different compiler directives critical, atomic, and first-private. Hence, it concluded that both critical and atomic are not efficient solutions to produce a good-quality picture, but first-private succeeded in producing a high-quality picture.
References
[1]
Nicks, S. (2023, February 17). RTX Cards Information and Review 2023. StoneAgeHacks. https://stoneagehacks.com/rtx/
[2]
Pharr, M. and Humphreys, G. (2016) Physically Based Rendering: From Theory to Implementation. Morgan Kaufmann, Burlington.
[3]
Breitenmoser, S. (2023) The Ray Tracing Update Is Finally Coming to Elden Ring. EarlyGame. https://earlygame.com/gaming/ray-tracing-update-elden-ring
[4]
Geeks, L. (2023) Ray Tracing Techniques: A Comprehensive Guide for Stunning Visuals. https://lambdageeks.com/ray-tracing-techniques/
Ahmad, S. (2023, February 17) Technology. https://expertsadvices.net/technology/page/3/
[7]
Kirvan, P. (2022, May 26) What Is Multithreading? WhatIs. https://www.techtarget.com/whatis/definition/multithreading
[8]
Awati, R., Gillis, A.S. and Steele, C. (n.d.) Graphics Processing Unit (GPU). https://www.techtarget.com/searchvirtualdesktop/definition/GPU-graphics-processing-unit
[9]
Sanderson, J. (2023, September 6) The Evolution of Metaverse Gaming and Its Impact. Textually. https://textually.org/the-evolution-of-metaverse-gaming-and-its-impact/
[10]
Larus, J. and Kozyrakis, C. (2008) Transactional Memory. Communications of the ACM, 51, 80-88. https://doi.org/10.1145/1364782.1364800
[11]
Slusallek, C. and Daniel, P. (2003) PVG 2003 (Parallel and Large-Data Visualization and Graphics). Computers & Graphics, 27, 662. https://doi.org/10.1016/S0097-8493(03)00098-0
[12]
User (n.d.) Java Core Technology Volume 18. Java Concurrency. https://topic.alibabacloud.com/a/java-core-technology-volume-18-java-concurrency_1_27_30242925.html
[13]
Trobec, R. (2018) Introduction to Parallel Computing: From Algorithms to Programming on State. Springer International Publishing. https://doi.org/10.1007/978-3-319-98833-7
[14]
TNW (n.d.) Ray Tracing (Graphics) News. https://thenextweb.com/topic/ray-tracing-graphics
[15]
Manjunath, A. (n.d.) Adarshkoppmanjunath/Raytracing. GitHub. https://github.com/AdarshKoppManjunath/Raytracing