Deferred Rendering Using Compute Shaders
Total Page:16
File Type:pdf, Size:1020Kb
Deferred rendering using Compute shaders A comparative study using shader model 4.0 and 5.0 Benjamin Golba 1 | P a g e This thesis is submitted to the Department of Interaction and System Design at Blekinge Institute of Technology in partial fulfillment of the requirements for the Bachelor degree in Computer Science. The thesis is equivalent to 10 weeks of full time studies. Contact Information: Author: Benjamin Golba Address: Folkparksvägen 10:17, 372 40 Ronneby E-mail: [email protected] University advisor: Stefan Petersson Department of Software Engineering and Computer Science Address: Soft Center, RONNEBY Phone: +46 457 38 58 15 Department of Interaction and System Design Blekinge Institute of Technology SE - 372 25 RONNEBY Sweden Internet: http://www.bth.se/tek/ais Phone: +46 457 38 58 00 Fax: +46 457 271 25 2 | P a g e Abstract Game developers today are putting a lot of effort into their games. Consumers are hard to please and demand a game which can provide both fun and visual quality. This is why developers aim to make the most use of what hardware resources are available to them to achieve the best possible quality of the game. It is easy to use too many performance demanding techniques in a game, making the game unplayable. The hard part is to make the game look good without decreasing the performance. This can be done by using techniques in a smart way to make the graphics as smooth and efficient as they can be without compromising the visual quality. One of these techniques is deferred rendering. The latest version of Microsoft’s graphics platform, DirectX 11, comes with several new features. One of these is the Compute shader which is a feature making it easier to execute general computation on the graphics card. Developers do not need to use DirectX 11 cards to be able to use this feature though. Microsoft has made it available on graphic cards made for DirectX 10 as well. There are however a few differences between the two versions. The focus of this report will be to investigate the possible performance differences between these versions on when using deferred rendering. An application was made supporting both shader model 4 and 5 of the compute shader, to be able to investigate this. Keywords Deferred rendering, DirectX, Direct3D, Vertex shader, Pixel shader, Compute shader 3 | P a g e Table of contents Abstract ................................................................................................................................................... 3 Keywords ............................................................................................................................................. 3 1. Introduction ......................................................................................................................................... 6 1.1 Background ........................................................................................................................................ 6 1.2 Research objectives ........................................................................................................................... 7 1.3 Hypothesis ......................................................................................................................................... 7 1.4 Methodology ..................................................................................................................................... 7 1.5 Delimitations ..................................................................................................................................... 7 1.6 Acknowledgements ........................................................................................................................... 7 2. Programming in three dimensions using Direct3D ............................................................................. 8 2.1 Primitives ........................................................................................................................................... 9 2.2 Resources ........................................................................................................................................ 10 2.2.1 Textures .................................................................................................................................... 10 2.2.2 Buffers ...................................................................................................................................... 11 2.2.3 Unordered Access Views .......................................................................................................... 11 2.3 Programmable shaders ................................................................................................................... 11 2.3.1 Vertex shader ........................................................................................................................... 12 2.3.2 Pixel shader .............................................................................................................................. 12 2.3.3 Compute shader ....................................................................................................................... 12 3. Deferred rendering ............................................................................................................................ 14 3.1 Forward rendering ........................................................................................................................... 14 3.2 Deferred rendering .......................................................................................................................... 14 3.2.1 Multiple Render Targets ........................................................................................................... 15 3.2.2 Filling the G-buffer ................................................................................................................... 15 3.2.3 Rendering lights ........................................................................................................................ 15 4. Prototype performance ..................................................................................................................... 17 4.1 The prototype .................................................................................................................................. 17 4.2 Performance testing ........................................................................................................................ 18 4.2.1 Test 1 ........................................................................................................................................ 19 4.2.2 Test 2 ........................................................................................................................................ 20 4 | P a g e 4.2.3 Test 3 ........................................................................................................................................ 21 4.2.4 Test 4 ........................................................................................................................................ 22 5. Discussion and conclusion ................................................................................................................. 23 5.1 Discussion of test 1 and 2 ................................................................................................................ 23 5.2 Discussion of test 3 and 4 ................................................................................................................ 24 5.3 Discussion ........................................................................................................................................ 25 5.2 Conclusion ....................................................................................................................................... 26 6. References ......................................................................................................................................... 27 6.1 Bibliography ..................................................................................................................................... 27 6.2 Papers .............................................................................................................................................. 27 6.3 Presentations ................................................................................................................................... 27 6.4 Websites .......................................................................................................................................... 27 Apendix A – Compute shader code ....................................................................................................... 28 Apendix B – G-buffer filling code ........................................................................................................... 29 5 | P a g e 1. Introduction This chapter is an introduction to what this thesis is about and the work I have put into it. I will mention the background information to the topic as well as the methodology chosen to investigate the hypothesis. Research objectives and delimitations are also present in this chapter. 1.1 Background Most games that use some kind of graphical interface have a rendering procedure. There are two rasterization-based rendering methods today: forward rendering and deferred rendering. This report will focus on deferred rendering using Microsoft DirectX and Compute shaders[15]. Forward rendering, which