And Inline Ray Tracing in DXR an Application in Soft Shadows
Total Page:16
File Type:pdf, Size:1020Kb
Master of Science in Engineering: Game and Software Engineering June 2021 A Performance Comparison of Dynamic- and Inline Ray Tracing in DXR An application in soft shadows Joakim Sjöberg Filip Zachrisson Faculty of Computing, Blekinge Institute of Technology, 371 79 Karlskrona, Sweden This thesis is submitted to the Faculty of Computing at Blekinge Institute of Technology in partial fulfillment of the requirements for the degree of Master of Science in Engineering: Game and Software Engineering. The thesis is equivalent to 20 weeks of full-time studies. The authors declare that they are the sole authors of this thesis and that they have not used any sources other than those listed in the bibliography and identified as references. They further declare that they have not submitted this thesis at any other institution to obtain a degree. Contact Information: Author(s): Joakim Sjöberg E-mail: [email protected] Filip Zachrisson E-mail: fi[email protected] University advisor: Associate Professor, Veronica Sundstedt Department of Computer Science External advisor at AMD: SMTS Software Development Engineer, Stefan Petersson Faculty of Computing Internet : www.bth.se Blekinge Institute of Technology Phone : +46 455 38 50 00 SE–371 79 Karlskrona, Sweden Fax : +46 455 38 50 57 Abstract Background. Ray tracing is a tool that can be used to increase the quality of the graphics in games. One application in graphics that ray tracing excels in is generat- ing shadows because ray tracing can simulate how shadows are generated in real life more accurately than rasterization techniques can. With the release of GPUs with hardware support for ray tracing, it can now be used in real-time graphics appli- cations to some extent. However, it is still a computationally heavy task requiring performance improvements. Objectives. This thesis will evaluate the difference in performance of three ray- tracing methods in DXR Tier 1.1, namely dynamic ray tracing and two forms of inline ray tracing. To further investigate the ray-tracing performance, soft shadows will be implemented to see if the driver can perform optimizations differently (de- pending on the choice of ray-tracing method) on the subsequent and/or preceding API interactions. With the pipelines implemented, benchmarks will be performed using different GPUs, scenes, and a varying amount of shadow-casting lights. Methods. The scientific method is based on an experimental approach, using both implementation and performance tests. The experimental approach will begin by extending an in-house DirectX 12 renderer. The extension includes ray-tracing func- tionality, so that hard shadows can be generated using both dynamic- and the inline forms ray tracing. Afterwards, soft shadows are generated by implementing a state- of-the-art-denoiser with some modifications, which will be added to each ray-tracing method. Finally, the renderer is used to perform benchmarks of various scenes with varying amounts of shadow-casting lights and object complexity to cover a broad area of scenarios that could occur in a game and/or in other similar applications. Results and Conclusions. The results gathered in this experiment suggest that under the experimental conditions of the chosen scenes, objects, and number of lights, AMD’s GPUs were faster in performance when using dynamic ray tracing than using inline ray tracing, whilst Nvidia’s GPUs were faster when using inline ray tracing compared to when using dynamic ray tracing. Also, with an increasing amount of shadow-casting lights, the choice of ray-tracing method had low to no impact except for linearly increasing the execution time in each test. Finally, adding soft shadows (subsequent and preceding API interactions) also had low to no relative impact on the results depending on the different ray-tracing methods. Keywords: dynamic ray tracing, inline ray tracing, hard shadows, soft shadows, rendering i Sammanfattning Bakgrund. Strålspårning (ray tracing) är ett verktyg som kan användas för att öka kvalitén på grafiken i spel. En tillämpning i grafik som strålspårning utmärker sig i är när skuggor ska skapas eftersom att strålspårning lättare kan simulera hur skug- gor skapas i verkligheten, vilket tidigare tekniker i rasterisering inte hade möjlighet för. Med ny hårdvara där det finns support för strålspårning inbyggt i grafikkorten finns det nu möjligheter att använda strålspårning i realtids-applikationer inom vissa gränser. Det är fortfarande tunga beräkningar som behöver slutföras och det är därav att det finns behov av förbättringar. Syfte. Denna uppsats kommer att utvärdera skillnaderna i prestanda mellan tre olika strålspårningsmetoder i DXR nivå 1.1, nämligen dynamisk strålspårning och två olika former av inline strålspårning. För att ge en bredare utredning på prestan- dan mellan strålspårningsmetoderna kommer mjuka skuggor att implementeras för att se om drivrutinen kan göra olika optimiseringar (beroende på valet av strålspårn- ingsmetod) på de efterföljande och/eller föregående API anropen. Efter att dessa rörledningar (pipelines) är implementerade kommer prestandatester att utföras med olika grafikkort, scener, och antal ljus som kastar skuggor. Metod. Den vetenskapliga metoden är baserat på ett experimentellt tillvägagångssätt, som kommer innehålla både ett experiment och ett flertal prestandatester. Det ex- perimentella tillvägagångssättet kommer att börja med att utöka en egenskapad Di- rectX 12 renderare. Utökningen kommer tillföra ny funktionalitet för att kunna hantera strålspårning så att hårda skuggor ska kunna genereras med både dynamisk- och de olika formerna av inline strålspårning. Efter det kommer mjuka skuggor att skapas genom att implementera en väletablerad avbrusningsteknik med några modi- fikationer, vilket kommer att bli tillagt på varje strålspårningssteg. Till slut kommer olika prestandatester att mätas med olika grafikkort, olika antal ljus, och olika scener för att täcka olika scenarion som skulle kunna uppstå i ett spel och/eller i andra lik- nande applikationer. Resultat och Slutsatser. De resultat från testerna i detta experiment påvisar att under dessa förutsättningar så är AMD’s grafikkort snabbare på dynamisk strål- spårning än på inline strålspårning, samtidigt som Nvidias grafikkort är snabbare på inline strålspårning än på den dynamiska varianten. Ökandet av ljus som kastar skuggor påvisade låg till ingen förändring förutom ett linjärt ökande av exekver- ingstiden i de flesta testerna. Slutligen så visade det sig även att tillägget av mjuka skuggor (efterföljande och föregående API interaktioner) hade låg till ingen påverkan på valet av strålspårningsmetod. Nyckelord: dynamisk strålspårning, inline strålspårning (inline ray tracing), hårda skuggor, mjuka skuggor, rendering iii Acknowledgments We wish to express our appreciation to our primary supervisor, Veronica Sundstedt, for the invaluable feedback, the fast replies, and the general guidance throughout this research. We would also like to sincerely thank Stefan Petersson for pitching the original re- search idea and for all the time and efforts he has spent to support us in many different ways throughout this study. v Nomenclature AMD Advanced Micro Devices API Application Programming Interface AS Acceleration Structure BLAS Bottom-Level Acceleration Structure DRT Dynamic Ray Tracing DXR DirectX Ray Tracing EA Electronic Arts GPU Graphics Processing Unit IRT Inline Ray Tracing IRTC Inline Ray Tracing using the Compute Shader IRTP Inline Ray Tracing using the Pixel Shader RPP Rays Per Pixel TLAS Top-Level Acceleration Structure vii Contents Abstract i Sammanfattning iii Acknowledgments v 1 Introduction 1 1.1 Motivation . 1 1.2 Aim . 2 1.2.1 Research Questions . 3 1.2.2 Objectives . 3 1.3 Scope and Delimitations . 3 1.3.1 Static Scenes . 3 1.3.2 Static Camera . 4 1.3.3 API . 4 1.4 Outline . 4 2 Background 5 2.1 Ray-Tracing Essentials . 5 2.2 DirectX Ray Tracing . 6 2.2.1 Ray-Tracing Pipeline . 6 2.2.2 Acceleration Structures . 7 2.2.3 Dynamic Ray Tracing . 8 2.2.4 Shader Tables . 8 2.2.5 Inline Ray Tracing . 8 2.3 Hard Shadows . 9 2.4 Soft Shadows . 10 3 Related Work 13 3.1 Inline Ray Tracing . 13 3.2 Ray Tracing in Games . 13 3.3 Soft Shadows using DXR . 13 4 Method 15 4.1 Soft-Shadow Selection . 15 4.2 Implementation . 15 4.2.1 Depth Pre-Pass . 16 4.2.2 Geometry Buffer . 16 ix 4.2.3 Ray Tracing . 16 4.2.4 Spatial Accumulation . 18 4.2.5 Temporal Accumulation . 18 4.2.6 Final Blur . 19 4.2.7 Deferred Shading . 19 4.2.8 Temporal Anti-Aliasing . 19 4.3 Benchmarking . 19 4.3.1 System under Test . 19 4.3.2 Scenes . 20 4.3.3 Mean Squared Error . 21 4.3.4 Performance Measurement . 22 5 Results and Analyzis 25 5.1 Performance Results . 25 5.1.1 Sponza . 25 5.1.2 Dragon . 27 5.1.3 Sponza and four Stanford Dragons . 29 5.2 Analyzis . 31 5.2.1 Ray-Tracing Performance . 31 5.2.2 Whole Pipeline Performance . 32 5.2.3 Mean Squared Error Results . 32 6 Discussion 33 6.1 Ray Tracing in DXR . 33 6.2 Validity Threats . 34 6.2.1 Identical Visibility Buffers . 34 6.2.2 Method . 34 6.2.3 Spikes in the Tests . 35 6.2.4 Scene Setup . 35 6.3 Similarities with Related Benchmarks . 35 6.4 Contribution and Recommendations . 36 7 Conclusions and Future Work 37 7.1 Conclusions . 37 7.1.1 Scene and Object Complexity (RQ1) . 37 7.1.2 Graphic Processing Units (RQ2) . 37 7.2 Future Work . 37 7.2.1 Benchmarking . 38 7.2.2 Ray-Tracing Complexity . 38 7.2.3 Pipeline Complexity . 38 7.2.4 Vulkan . 38 7.2.5 Cast Fewer Rays . 38 7.3 Final Words . 39 x A Detailed Results 45 A.1 Sponza . 46 A.2 Dragon . 48 A.3 Sponza4Dragons . 50 B Code Snippets 53 B.1 Random number generation . 53 B.2 Ray-Generation Shader .