{"id":654,"date":"2015-02-27T10:27:27","date_gmt":"2015-02-27T10:27:27","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=654"},"modified":"2015-11-16T00:12:29","modified_gmt":"2015-11-16T00:12:29","slug":"les-principales-etapes-de-rendu","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=654","title":{"rendered":"Les principales \u00e9tapes de rendu de DirectX 10"},"content":{"rendered":"<p><strong>Intro :<\/strong><\/p>\n<p>Le rendu graphique de DirectX 10 consiste en plusieurs \u00e9tapes.<\/p>\n<p><strong>Pr\u00e9requis :<\/strong><\/p>\n<p>Savoir utiliser et impl\u00e9menter DirectX 10.<\/p>\n<p><strong>Explications :<br \/>\n<\/strong><br \/>\nVoici un sch\u00e9ma qui les r\u00e9sume :<\/p>\n<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/02\/220px-D3D_Pipeline.svg_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-705\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/02\/220px-D3D_Pipeline.svg_.png\" alt=\"220px-D3D_Pipeline.svg\" width=\"220\" height=\"381\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/02\/220px-D3D_Pipeline.svg_.png 220w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/02\/220px-D3D_Pipeline.svg_-173x300.png 173w\" sizes=\"(max-width: 220px) 100vw, 220px\" \/><\/a><\/p>\n<p>Les rectangles carr\u00e9s indiquent que l&rsquo;\u00e9tape de rendu ne peut <strong>pas \u00eatre configur\u00e9e<\/strong> par un script ou programme HLSL.<\/p>\n<p>A l&rsquo;inverse, les rectangles arrondies indiquent que l&rsquo;\u00e9tape de rendu <strong>peut \u00eatre configur\u00e9e<\/strong> par un script ou programme HLSL.<\/p>\n<p>Voir cet article si vous ne savez ce qu&rsquo;est le HLSL.<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p><strong>\u00c9tape Input Assembler :<\/strong><\/p>\n<p>Cette \u00e9tape pr\u00e9pare les donn\u00e9es g\u00e9om\u00e9triques \u00e0 la cha\u00eene de rendu 3D. Les donn\u00e9es des Vertex Buffers et des Indexes Buffers sont agenc\u00e9es d&rsquo;une certaine fa\u00e7on dans la m\u00e9moire de la carte graphique et \u00e0 partir de ceux-ci, l&rsquo;\u00e9tape Input Assembler cr\u00e9\u00e9e les primitives g\u00e9om\u00e9triques correspondantes (triangles, lignes, points, etc&#8230;) afin de les passer au Vertex Shader.<\/p>\n<p><strong>\u00c9tape Vertex Shader :<\/strong><\/p>\n<p>Cette \u00e9tape permet de modifier les vertices en entr\u00e9e. Elle consiste \u00e0 transformer ces vertices depuis les coordonn\u00e9es Object-space vers les coordonn\u00e9es Clip-Space ; c&rsquo;est-\u00e0-dire les coordonn\u00e9es du mod\u00e8le d&rsquo;origine vers les coordonnes du cadre de vue de l&rsquo;\u00e9cran 2D.<br \/>\nElle sert aussi \u00e0 changer la position des vertex dans le rep\u00e8re 3D. Elle est responsable aussi d&rsquo;effectuer les animations des mod\u00e8les \/ personnages du jeu et permet aussi d&rsquo;effectuer un rendu basique de lumi\u00e8re (en l&rsquo;occurence du per-pixel ligthing).<\/p>\n<p>Voir le <a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/?page_id=36\">Lexique<\/a> si vous ne comprenez pas tous ces termes.<\/p>\n<p>Elle traite un vertex \u00e0 la fois : c&rsquo;est-\u00e0-dire que cette \u00e9tape est ex\u00e9cut\u00e9e en boucle pour chaque vertex.<\/p>\n<p>Les donn\u00e9es en sortie de cette \u00e9tape vers le Vertex shader (qui est en fait une fonction toute simple avec entr\u00e9e et sortie) peuvent \u00eatre : les coordonn\u00e9es des textures, la couleur des vertex, etc&#8230;<\/p>\n<p><strong>\u00c9tape Geometry Shader :<\/strong><\/p>\n<p>Cette \u00e9tape optionnelle permet de modifier compl\u00e8tement la g\u00e9om\u00e9trie des mod\u00e8les \/ meshes.<br \/>\nAu lieu de recevoir vertex par vertex cette \u00e9tape re\u00e7oit une primitive totalement assembl\u00e9e (une ligne ou un triangle par exemple) ; de l\u00e0 on peut g\u00e9n\u00e9rer d&rsquo;autres primitives \u00e0 la vol\u00e9e. Le Geometry Shader peut ignorer une primitive ou en g\u00e9n\u00e9rer de nouvelles.<\/p>\n<p><strong>\u00c9tape Stream-Output Stage :<\/strong><\/p>\n<p>G\u00e9n\u00e8re le flux des primitives g\u00e9om\u00e9triques depuis la m\u00e9moire vers l&rsquo;\u00e9tape Rasterizer.<\/p>\n<p><strong>\u00c9tape Rasterizer :<\/strong><\/p>\n<p>Cette \u00e9tape permet de rassembler les primitives afin de les envoyer au Pixel Shader. Elle s&rsquo;occupe aussi de couper les primitives qui d\u00e9passent le cadre de vue de l&rsquo;\u00e9cran.<\/p>\n<p><strong>\u00c9tape Pixel Shader :<\/strong><\/p>\n<p>Cette \u00e9tape s&rsquo;occupe de modifier l&rsquo;affichage de chaque pixel et pour chacun de ceux-ci elle renvoie une couleur en sortie.<\/p>\n<p><strong>\u00c9tape Output Merger :<\/strong><\/p>\n<p>Cette \u00e9tape s&rsquo;occupe quel pixel doit \u00eatre affich\u00e9e \u00e0 l&rsquo;\u00e9cran. Les pixels g\u00e9n\u00e9r\u00e9s sont calcul\u00e9s sur la base du Pixel Shader, du contenu des Render Targerts, du contenu du Depth Buffer et du contenu du Stencil Buffer.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9sum\u00e9 :<\/strong><\/p>\n<p>Nous avons \u00e9num\u00e9r\u00e9 toutes les \u00e9tapes du rendu 3D de DirectX 10.<\/p>\n<p><strong>R\u00e9f\u00e9rences :<\/strong><\/p>\n<p>&#8211; Pipeline Stages (Direct3D 10) &#8211; DirectX10 June 2010 SDK Documentation<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Le rendu graphique de DirectX 10 consiste en plusieurs \u00e9tapes. Pr\u00e9requis : Savoir utiliser et impl\u00e9menter DirectX 10. Explications : Voici un sch\u00e9ma qui les r\u00e9sume : Les rectangles carr\u00e9s indiquent que l&rsquo;\u00e9tape de rendu ne peut pas \u00eatre configur\u00e9e par un script ou programme HLSL. A l&rsquo;inverse, les rectangles arrondies indiquent que [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/654"}],"collection":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=654"}],"version-history":[{"count":89,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/654\/revisions"}],"predecessor-version":[{"id":3389,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/654\/revisions\/3389"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}