{"video_id":"fp_diIEPnP87U","title":"TQ: PC Graphics Are Changing BIG TIME","channel":"Techquickie","show":"Techquickie","published_at":"2021-04-14T20:37:00.148Z","duration_s":358,"segments":[{"start_s":0.0,"end_s":3.22,"text":"So you've finally gotten your hot little hands","speaker":null,"is_sponsor":0},{"start_s":3.22,"end_s":9.0,"text":"on a shiny new graphics card for your PC, and you're confident that by pushing it to its limits,","speaker":null,"is_sponsor":0},{"start_s":9.0,"end_s":13.52,"text":"you'll be able to run any game at mouth-watering settings.","speaker":null,"is_sponsor":0},{"start_s":15.56,"end_s":18.84,"text":"But it turns out there's a long-standing bottleneck","speaker":null,"is_sponsor":0},{"start_s":18.84,"end_s":21.92,"text":"that limits how many frames your GPU can push.","speaker":null,"is_sponsor":0},{"start_s":21.92,"end_s":25.92,"text":"And we're not talking about your CPU or the PCI Express slot.","speaker":null,"is_sponsor":0},{"start_s":25.92,"end_s":31.04,"text":"It's actually the GPU's pipeline, the set of steps that visual data has to go through","speaker":null,"is_sponsor":0},{"start_s":31.04,"end_s":35.26,"text":"in order to become a fully rendered image. But how does that pipeline bottleneck","speaker":null,"is_sponsor":0},{"start_s":35.26,"end_s":39.84,"text":"your gaming experience? Let's find out by learning how a graphics pipeline works.","speaker":null,"is_sponsor":0},{"start_s":39.84,"end_s":44.68,"text":"And we'd like to extend our warm thanks to Jianye Liu, Senior Program Manager at Microsoft","speaker":null,"is_sponsor":0},{"start_s":44.68,"end_s":49.78,"text":"for helping us understand the problem and the solution that's starting to gain adoption.","speaker":null,"is_sponsor":0},{"start_s":51.36,"end_s":56.16,"text":"The first three steps of the pipeline, called the geometry pipeline, are really important","speaker":null,"is_sponsor":0},{"start_s":56.16,"end_s":61.2,"text":"and actually end up being where the bottleneck is. Step one is when the raw visual data,","speaker":null,"is_sponsor":0},{"start_s":61.2,"end_s":67.16,"text":"basically just numbers, plain numbers, like mama used to make them, goes through an input assembler,","speaker":null,"is_sponsor":0},{"start_s":67.16,"end_s":71.36,"text":"which takes the vertices of the triangles that ultimately make up a finished image","speaker":null,"is_sponsor":0},{"start_s":71.36,"end_s":74.76,"text":"and organizes them so that they're pointing at each other correctly.","speaker":null,"is_sponsor":0},{"start_s":74.76,"end_s":80.0,"text":"Step two takes this organized set of vertices and puts them through a vertex shader,","speaker":null,"is_sponsor":0},{"start_s":80.0,"end_s":84.32,"text":"which raises or lowers the vertices to create a 3D mesh of sorts.","speaker":null,"is_sponsor":0},{"start_s":84.32,"end_s":89.6,"text":"For example, the vertex shader can create a bumpy texture on a wall or ripples on a pond.","speaker":null,"is_sponsor":0},{"start_s":89.6,"end_s":95.36,"text":"The third step is a rasterizer. This is the bit that puts pixels inside each triangle","speaker":null,"is_sponsor":0},{"start_s":95.36,"end_s":99.2,"text":"to fill out the image. Now, there are other steps beyond these three,","speaker":null,"is_sponsor":0},{"start_s":99.2,"end_s":102.24,"text":"namely pixel shading, which gives each pixel","speaker":null,"is_sponsor":0},{"start_s":102.24,"end_s":107.08,"text":"the appropriate color and lighting, and the output merger, which puts different visual elements","speaker":null,"is_sponsor":0},{"start_s":107.08,"end_s":111.24,"text":"together, such as ensuring a character standing in front of a wall is displayed properly","speaker":null,"is_sponsor":0},{"start_s":111.28,"end_s":114.92,"text":"so you only see the character and not the wall behind them.","speaker":null,"is_sponsor":0},{"start_s":114.92,"end_s":119.6,"text":"However, the big bottleneck we're talking about today involves those first three steps.","speaker":null,"is_sponsor":0},{"start_s":119.6,"end_s":123.72,"text":"But why are they such a bottleneck? I mean, the process seems pretty straightforward.","speaker":null,"is_sponsor":0},{"start_s":123.72,"end_s":128.92,"text":"Well, there are a few big reasons for this. One is that that first step, the input assembler,","speaker":null,"is_sponsor":0},{"start_s":128.92,"end_s":132.68,"text":"can only understand data that's organized in a very specific way.","speaker":null,"is_sponsor":0},{"start_s":132.68,"end_s":137.08,"text":"Typically, it can't accept compressed data that can be moved around more quickly.","speaker":null,"is_sponsor":0},{"start_s":137.08,"end_s":140.22,"text":"Or if a developer thinks of a more efficient way to organize their data,","speaker":null,"is_sponsor":0},{"start_s":140.22,"end_s":145.74,"text":"the input assembler simply won't be able to understand it. Two, there are actually several optional stages","speaker":null,"is_sponsor":0},{"start_s":145.74,"end_s":149.66,"text":"after the vertex shader. For example, one is called a geometry shader","speaker":null,"is_sponsor":0},{"start_s":149.66,"end_s":154.78,"text":"that can take a point and expand it out to a particular shape, such as a strand of hair.","speaker":null,"is_sponsor":0},{"start_s":154.78,"end_s":159.9,"text":"This is quicker than drawing a bunch of new triangles, but the geometry shader and other optional steps","speaker":null,"is_sponsor":0},{"start_s":159.9,"end_s":163.46,"text":"have been added over the years as games have become more complex.","speaker":null,"is_sponsor":0},{"start_s":163.46,"end_s":168.9,"text":"They're essentially glommed onto the pipeline in a rigid, sequential way that can't be processed","speaker":null,"is_sponsor":0},{"start_s":168.94,"end_s":173.86,"text":"in parallel, meaning they take longer. Three, because of this rigid sequence,","speaker":null,"is_sponsor":0},{"start_s":173.86,"end_s":177.74,"text":"you have to wait until you get to the rasterizer to start culling.","speaker":null,"is_sponsor":0},{"start_s":177.74,"end_s":181.78,"text":"Sounds dangerous. Or throwing away unused triangles that are way off","speaker":null,"is_sponsor":0},{"start_s":181.78,"end_s":186.82,"text":"in the distance or obscured by an object on the screen. This is a problem because by the time the data","speaker":null,"is_sponsor":0},{"start_s":186.82,"end_s":191.74,"text":"has gotten to the rasterizer phase of the pipeline, the GPU has already done a ton of legwork","speaker":null,"is_sponsor":0},{"start_s":191.74,"end_s":194.9,"text":"rendering unnecessary triangles.","speaker":null,"is_sponsor":0},{"start_s":194.9,"end_s":200.1,"text":"Sounds like my typical Wednesday evening. So because the geometry pipeline is so inflexible,","speaker":null,"is_sponsor":0},{"start_s":200.1,"end_s":205.34,"text":"the solution isn't to retool it. It's to replace it completely.","speaker":null,"is_sponsor":0},{"start_s":205.34,"end_s":210.86,"text":"This is where mesh shading comes in, one of the biggest features in the DirectX 12 Ultimate API.","speaker":null,"is_sponsor":0},{"start_s":210.86,"end_s":214.3,"text":"Instead of having discrete steps before the rasterizer,","speaker":null,"is_sponsor":0},{"start_s":214.3,"end_s":219.5,"text":"the mesh shader is one stage that can do a few really cool things.","speaker":null,"is_sponsor":0},{"start_s":219.5,"end_s":222.94,"text":"First, the data that you feed into it can be much more arbitrary","speaker":null,"is_sponsor":0},{"start_s":222.94,"end_s":227.94,"text":"so it can understand compressed data and other data sets an old school input assembler couldn't.","speaker":null,"is_sponsor":0},{"start_s":227.94,"end_s":232.5,"text":"You can't handle this new data old man. Essentially, the mesh shader is almost","speaker":null,"is_sponsor":0},{"start_s":232.5,"end_s":237.18,"text":"like a mini programmable computer. So if a developer wants to accomplish some rendering task","speaker":null,"is_sponsor":0},{"start_s":237.18,"end_s":242.3,"text":"more efficiently, they can just code it in. Each of the processes above can also intelligently","speaker":null,"is_sponsor":0},{"start_s":242.3,"end_s":246.58,"text":"communicate with each other within a mesh shader. So instead of waiting to cull triangles","speaker":null,"is_sponsor":0},{"start_s":246.58,"end_s":251.3,"text":"so late in the process, it can be done earlier. And the geometry can even be arranged in a way","speaker":null,"is_sponsor":0},{"start_s":251.3,"end_s":255.54,"text":"to make culling easier, demanding even less GPU power.","speaker":null,"is_sponsor":0},{"start_s":255.54,"end_s":260.54,"text":"Oh, and we haven't even talked about the whole reason it's called mesh shading in the first place.","speaker":null,"is_sponsor":0},{"start_s":260.54,"end_s":263.54,"text":"It's a really fun term, meshlets.","speaker":null,"is_sponsor":0},{"start_s":263.54,"end_s":267.98,"text":"Instead of working on one triangle at once, your GPU can instead work on meshes","speaker":null,"is_sponsor":0},{"start_s":267.98,"end_s":273.9,"text":"of multiple triangles in parallel. So instead of making a decision about culling one triangle,","speaker":null,"is_sponsor":0},{"start_s":273.9,"end_s":278.34,"text":"your GPU can instead do them in batches. Throwing out data, it doesn't need a process","speaker":null,"is_sponsor":0},{"start_s":278.34,"end_s":283.9,"text":"and saving precious resources. Older vertex shaders only saw a soup of points","speaker":null,"is_sponsor":0},{"start_s":283.9,"end_s":287.94,"text":"instead of an actual mesh, but mesh shaders are much smarter","speaker":null,"is_sponsor":0},{"start_s":287.94,"end_s":291.62,"text":"and they can know exactly what they're working with much earlier in the rendering process.","speaker":null,"is_sponsor":0},{"start_s":291.62,"end_s":296.3,"text":"So what does all of this mean? Well, because your GPU doesn't have to work","speaker":null,"is_sponsor":0},{"start_s":296.3,"end_s":300.5,"text":"as hard for each frame, it means faster frame rates and more detailed environments.","speaker":null,"is_sponsor":0},{"start_s":300.5,"end_s":303.66,"text":"Ultimately, the things we all want from our graphics cards.","speaker":null,"is_sponsor":0},{"start_s":303.66,"end_s":308.22,"text":"Currently, many game developers are looking at the best ways to implement mesh shading into their titles","speaker":null,"is_sponsor":0},{"start_s":308.26,"end_s":312.1,"text":"because it's such a customizable tool and the old geometry pipeline","speaker":null,"is_sponsor":0},{"start_s":312.1,"end_s":316.58,"text":"has been around for such a long time. It might take a few years before we see widespread adoption","speaker":null,"is_sponsor":0},{"start_s":316.58,"end_s":320.14,"text":"of mesh shading in popular games. The good news though, is that there's already","speaker":null,"is_sponsor":0},{"start_s":320.14,"end_s":323.26,"text":"hardware support for it with newer consumer graphics cards.","speaker":null,"is_sponsor":0},{"start_s":323.26,"end_s":328.3,"text":"So by the time we see these games on the market, chances are we'll all have next-gen graphics cards","speaker":null,"is_sponsor":0},{"start_s":328.3,"end_s":331.38,"text":"that support these new features. Every one of us.","speaker":null,"is_sponsor":0},{"start_s":333.38,"end_s":335.94,"text":"Yes! I can't wait.","speaker":null,"is_sponsor":0},{"start_s":336.94,"end_s":341.18,"text":"Well guys, that's a Techquickie video. Not sure if you've ever seen one before,","speaker":null,"is_sponsor":0},{"start_s":341.18,"end_s":345.22,"text":"but that's what it's like. Hey, speaking of like, you wanna like the video","speaker":null,"is_sponsor":0},{"start_s":345.22,"end_s":348.98,"text":"if you liked it? Hey, do you have a like? Do you have a like to give out?","speaker":null,"is_sponsor":0},{"start_s":348.98,"end_s":352.9,"text":"Please, we love your likes. Also check out other videos,","speaker":null,"is_sponsor":0},{"start_s":352.9,"end_s":357.3,"text":"comment below with video suggestions and don't forget to subscribe and follow Techquickie.","speaker":null,"is_sponsor":0},{"start_s":357.3,"end_s":358.14,"text":"Love you.","speaker":null,"is_sponsor":0}],"full_text":"So you've finally gotten your hot little hands on a shiny new graphics card for your PC, and you're confident that by pushing it to its limits, you'll be able to run any game at mouth-watering settings. But it turns out there's a long-standing bottleneck that limits how many frames your GPU can push. And we're not talking about your CPU or the PCI Express slot. It's actually the GPU's pipeline, the set of steps that visual data has to go through in order to become a fully rendered image. But how does that pipeline bottleneck your gaming experience? Let's find out by learning how a graphics pipeline works. And we'd like to extend our warm thanks to Jianye Liu, Senior Program Manager at Microsoft for helping us understand the problem and the solution that's starting to gain adoption. The first three steps of the pipeline, called the geometry pipeline, are really important and actually end up being where the bottleneck is. Step one is when the raw visual data, basically just numbers, plain numbers, like mama used to make them, goes through an input assembler, which takes the vertices of the triangles that ultimately make up a finished image and organizes them so that they're pointing at each other correctly. Step two takes this organized set of vertices and puts them through a vertex shader, which raises or lowers the vertices to create a 3D mesh of sorts. For example, the vertex shader can create a bumpy texture on a wall or ripples on a pond. The third step is a rasterizer. This is the bit that puts pixels inside each triangle to fill out the image. Now, there are other steps beyond these three, namely pixel shading, which gives each pixel the appropriate color and lighting, and the output merger, which puts different visual elements together, such as ensuring a character standing in front of a wall is displayed properly so you only see the character and not the wall behind them. However, the big bottleneck we're talking about today involves those first three steps. But why are they such a bottleneck? I mean, the process seems pretty straightforward. Well, there are a few big reasons for this. One is that that first step, the input assembler, can only understand data that's organized in a very specific way. Typically, it can't accept compressed data that can be moved around more quickly. Or if a developer thinks of a more efficient way to organize their data, the input assembler simply won't be able to understand it. Two, there are actually several optional stages after the vertex shader. For example, one is called a geometry shader that can take a point and expand it out to a particular shape, such as a strand of hair. This is quicker than drawing a bunch of new triangles, but the geometry shader and other optional steps have been added over the years as games have become more complex. They're essentially glommed onto the pipeline in a rigid, sequential way that can't be processed in parallel, meaning they take longer. Three, because of this rigid sequence, you have to wait until you get to the rasterizer to start culling. Sounds dangerous. Or throwing away unused triangles that are way off in the distance or obscured by an object on the screen. This is a problem because by the time the data has gotten to the rasterizer phase of the pipeline, the GPU has already done a ton of legwork rendering unnecessary triangles. Sounds like my typical Wednesday evening. So because the geometry pipeline is so inflexible, the solution isn't to retool it. It's to replace it completely. This is where mesh shading comes in, one of the biggest features in the DirectX 12 Ultimate API. Instead of having discrete steps before the rasterizer, the mesh shader is one stage that can do a few really cool things. First, the data that you feed into it can be much more arbitrary so it can understand compressed data and other data sets an old school input assembler couldn't. You can't handle this new data old man. Essentially, the mesh shader is almost like a mini programmable computer. So if a developer wants to accomplish some rendering task more efficiently, they can just code it in. Each of the processes above can also intelligently communicate with each other within a mesh shader. So instead of waiting to cull triangles so late in the process, it can be done earlier. And the geometry can even be arranged in a way to make culling easier, demanding even less GPU power. Oh, and we haven't even talked about the whole reason it's called mesh shading in the first place. It's a really fun term, meshlets. Instead of working on one triangle at once, your GPU can instead work on meshes of multiple triangles in parallel. So instead of making a decision about culling one triangle, your GPU can instead do them in batches. Throwing out data, it doesn't need a process and saving precious resources. Older vertex shaders only saw a soup of points instead of an actual mesh, but mesh shaders are much smarter and they can know exactly what they're working with much earlier in the rendering process. So what does all of this mean? Well, because your GPU doesn't have to work as hard for each frame, it means faster frame rates and more detailed environments. Ultimately, the things we all want from our graphics cards. Currently, many game developers are looking at the best ways to implement mesh shading into their titles because it's such a customizable tool and the old geometry pipeline has been around for such a long time. It might take a few years before we see widespread adoption of mesh shading in popular games. The good news though, is that there's already hardware support for it with newer consumer graphics cards. So by the time we see these games on the market, chances are we'll all have next-gen graphics cards that support these new features. Every one of us. Yes! I can't wait. Well guys, that's a Techquickie video. Not sure if you've ever seen one before, but that's what it's like. Hey, speaking of like, you wanna like the video if you liked it? Hey, do you have a like? Do you have a like to give out? Please, we love your likes. Also check out other videos, comment below with video suggestions and don't forget to subscribe and follow Techquickie. Love you."}