{"id":1862,"date":"2015-04-07T07:55:29","date_gmt":"2015-04-07T07:55:29","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=1862"},"modified":"2015-11-11T16:28:09","modified_gmt":"2015-11-11T16:28:09","slug":"1862","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=1862","title":{"rendered":"Principe du Z-buffer"},"content":{"rendered":"<div class=\"entry-content\">\n<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/zbuffer.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-1863\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/zbuffer.png\" alt=\"zbuffer\" width=\"469\" height=\"352\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/zbuffer.png 600w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/zbuffer-300x225.png 300w\" sizes=\"(max-width: 469px) 100vw, 469px\" \/><\/a><\/p>\n<p><strong>Intro :<\/strong><\/p>\n<p>L&rsquo;utilisation du <b>Z-buffer<\/b> est une m\u00e9thode consistant \u00e0 afficher dans le bon ordre de profondeur les primitives g\u00e9om\u00e9triques envoy\u00e9es au rendu 3D.<\/p>\n<p><strong>Pr\u00e9requis :<\/strong><\/p>\n<p>&#8211; Comprendre les principales \u00e9tapes de rendu de DirectX : voir cet article<\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>La technique du Z-buffer consiste \u00e0 enregistrer pour chaque pixel une valeur de profondeur dans un <strong>tampon <\/strong>d\u00e9di\u00e9 (en l\u2019occurrence le <em>Z-buffer<\/em>). Ce tampon a la m\u00eame dimension que celui du <em>frame buffer<\/em>. Ces valeurs dans le tampon varient de 0.0f \u00e0 1.0f.<\/p>\n<p>Lors de la transformation du rep\u00e8re 3D (celui des meshes \/ mod\u00e8les) vers le rep\u00e8re 2D (celui de l&rsquo;\u00e9cran) nous avons bien les pixels sur les coordonn\u00e9es (x, y) conserv\u00e9es mais nous avons perdu l&rsquo;information sur la profondeur (z) ; il faut la recalculer par un algorithme adjacent.<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>1)<\/strong> Comment \u00e7a fonctionne ?<\/span><\/p>\n<p>Avant qu&rsquo;un pixel est affich\u00e9 dans le tampon de rendu, sa valeur de profondeur est compar\u00e9e<br \/>\npar sa valeur correspondante actuelle dans le Z-buffer. Si le pixel a sa valeur de profondeur inf\u00e9rieure ou \u00e9gale alors le pixel est affich\u00e9 et cette valeur est enregistr\u00e9e dans le Z-buffer ; autrement le pixel est ignor\u00e9.<\/p>\n<p>La carte graphique compare deux profondeurs (Z) une \u00e0 une, et n&rsquo;affiche que le pixel le plus proche de la cam\u00e9ra. Ensuite DirectX va automatiquement ignorer l&rsquo;affichage des triangles cach\u00e9s par d&rsquo;autres triangles.<\/p>\n<p><strong>2) <\/strong><span style=\"text-decoration: underline;\">Comment le param\u00e9trer ?<br \/>\n<\/span><br \/>\nLe calcul effectu\u00e9 par le Z-buffer peut \u00eatre ignor\u00e9 et d\u00e9sactiver par un appel de l&rsquo;API DirectX (voir cet article). Lorsqu\u2019il est ignor\u00e9 par DirectX, les derniers \u00e9l\u00e9ments dessin\u00e9s seront affich\u00e9 par dessus tous les autres.<\/p>\n<p>Il faut noter aussi qu&rsquo;\u00e0 chaque tour de boucle le Z-buffer est r\u00e9initialis\u00e9 et recalcul\u00e9 par cet appel :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\nm_pDevice-&gt;Clear(...)\r\n<\/pre>\n<p><strong><br \/>\nR\u00e9sum\u00e9 : <\/strong><\/p>\n<p>Nous avons expliqu\u00e9 quel est le r\u00f4le du <strong>tampon de profondeur<\/strong> (le Z-buffer) dans le rendu 3D.<br \/>\nEn effet cette \u00e9tape permet de cacher les triangles plac\u00e9s \u00e0 l&rsquo;arri\u00e8re d&rsquo;autres triangles moins proches de la cam\u00e9ra.<\/p>\n<p><strong>R\u00e9f\u00e9rences :<\/strong><\/p>\n<p>&#8211; http:\/\/fr.wikipedia.org\/wiki\/Z-buffer<\/p>\n<p>&#8211; http:\/\/www.toymaker.info\/Games\/html\/z-buffer.html<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Intro : L&rsquo;utilisation du Z-buffer est une m\u00e9thode consistant \u00e0 afficher dans le bon ordre de profondeur les primitives g\u00e9om\u00e9triques envoy\u00e9es au rendu 3D. Pr\u00e9requis : &#8211; Comprendre les principales \u00e9tapes de rendu de DirectX : voir cet article Explications : La technique du Z-buffer consiste \u00e0 enregistrer pour chaque pixel une valeur de profondeur [&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\/1862"}],"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=1862"}],"version-history":[{"count":36,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/1862\/revisions"}],"predecessor-version":[{"id":3383,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/1862\/revisions\/3383"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}