{"id":2246,"date":"2015-04-16T15:51:47","date_gmt":"2015-04-16T15:51:47","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=2246"},"modified":"2016-08-04T18:09:10","modified_gmt":"2016-08-04T18:09:10","slug":"theorie-sur-les-lumieres","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=2246","title":{"rendered":"Th\u00e9orie sur les lumi\u00e8res"},"content":{"rendered":"<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/light.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-4600\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/light.jpg\" alt=\"light\" width=\"590\" height=\"369\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/light.jpg 1680w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/light-300x188.jpg 300w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/light-1024x640.jpg 1024w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/light-624x390.jpg 624w\" sizes=\"(max-width: 590px) 100vw, 590px\" \/><\/a><\/p>\n<p><strong>Intro :<\/strong><\/p>\n<p>Dans les jeux vid\u00e9o, la gestion du rendu des lumi\u00e8res est cruciale pour effectuer un rendu \u00e0 la fois <strong>r\u00e9aliste<\/strong> et <strong>joli<\/strong>.<\/p>\n<p>Dans cet article nous allons pr\u00e9senter les <strong>rudiments<\/strong> de la <strong>th\u00e9orie<\/strong> sur le rendu des lumi\u00e8res.<\/p>\n<p>Le rendu lumineux est un sujet <strong>vaste<\/strong> et <strong>complexe<\/strong> et pour cause le sujet est encore soumis \u00e0 des recherches acad\u00e9miques ou en R&amp;D.<\/p>\n<p>En effet, ces derni\u00e8res ann\u00e9es les jeux vid\u00e9os <strong>les plus r\u00e9cents<\/strong> affichent des rendus de lumi\u00e8re de plus en plus r\u00e9alistes, en utilisant par exemple un type de rendu nomm\u00e9\u00a0<em>Deferred Shading<\/em>.<\/p>\n<p>[\u00e9clater en plusieurs articles]<\/p>\n<p><strong>Pr\u00e9requis :\u00a0<\/strong><\/p>\n<p>&#8211; Savoir ce qu&rsquo;est une <em>normale<\/em><\/p>\n<p>&#8211; Savoir lire du <em>C++<\/em><\/p>\n<p>&#8211; Savoir lire un programme <em>shader HLSL<\/em><\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>Avant tout, <strong>\u00e9claircissons<\/strong> un peu de vocabulaire.<\/p>\n<p>Les deux notions qui suivent ont des propri\u00e9t\u00e9s de nature diff\u00e9rente :<\/p>\n<h3><span style=\"text-decoration: underline;\">Les propri\u00e9t\u00e9s d&rsquo;un <strong>mat\u00e9riau<\/strong> donn\u00e9e (or, glace, bois, m\u00e9tal, etc&#8230;) d\u00e9terminent comment un mod\u00e8le est affich\u00e9 :<\/span><\/h3>\n<p style=\"padding-left: 30px;\">&#8211; <em><strong>Emissive<\/strong> <\/em>:<\/p>\n<p style=\"padding-left: 60px;\">&#8211; ce terme d\u00e9signe la valeur d&rsquo;\u00e9mission d&rsquo;un mat\u00e9riau permettant d&rsquo;\u00e9mettre une couleur de lumi\u00e8re comme si elles avaient \u00e9t\u00e9 <strong>toutes d\u00e9sactiv\u00e9es<\/strong>. Not\u00e9e Ke.<\/p>\n<p style=\"padding-left: 30px;\">&#8211; <strong><em>Ambient<\/em> <\/strong>:<\/p>\n<p style=\"padding-left: 60px;\">&#8211; ce terme d\u00e9signe la valeur ambiante d&rsquo;\u00e9mission d&rsquo;une lumi\u00e8re, comme le <strong>soleil<\/strong>.<\/p>\n<p style=\"padding-left: 30px;\">&#8211; <strong><em>Diffuse<\/em> <\/strong>:<\/p>\n<p style=\"padding-left: 60px;\">&#8211; ce terme d\u00e9signe la couleur diffuse qu&rsquo;\u00e9met la lumi\u00e8re dans <strong>toutes les directions<\/strong>.<\/p>\n<p style=\"padding-left: 30px;\">&#8211; <em><strong>Specular<\/strong> <\/em>:<\/p>\n<p style=\"padding-left: 30px;\">&#8211; <em><strong>Specular power<\/strong> <\/em>:<\/p>\n<p style=\"padding-left: 60px;\">&#8211; repr\u00e9sente le degr\u00e9 d&rsquo;\u00e9clat de brillance.<\/p>\n<h3><span style=\"text-decoration: underline;\">Les propri\u00e9t\u00e9s\u00a0d&rsquo;une <strong>lumi\u00e8re<\/strong> donn\u00e9e\u00a0d\u00e9terminent comment la sc\u00e8ne est affich\u00e9e :<\/span><\/h3>\n<p style=\"padding-left: 30px;\">&#8211;<em><strong> Type de lumi\u00e8re <\/strong><\/em>:<\/p>\n<p style=\"padding-left: 60px;\">&#8211; il y a 3 types de lumi\u00e8re :<\/p>\n<p style=\"padding-left: 90px;\"><strong>Point <\/strong>:\u00a0une lumi\u00e8re qui \u00e9met dans <strong>toutes les directions<\/strong>.<\/p>\n<p style=\"padding-left: 90px;\"><strong>Spot <\/strong>:\u00a0une lumi\u00e8re qui \u00e9met dans une <strong>direction sp\u00e9cifique<\/strong>.<\/p>\n<p style=\"padding-left: 90px;\"><strong>Directional<\/strong> :<strong>\u00a0<\/strong>une lumi\u00e8re qui a une direction donn\u00e9e mais n&rsquo;a <strong>pas de position<\/strong> donn\u00e9e, comme par exemple le soleil.<\/p>\n<p style=\"padding-left: 30px;\">&#8211; <strong><em>Color<\/em> <\/strong>:<\/p>\n<p style=\"padding-left: 60px;\">&#8211; la <strong>couleur<\/strong> de la source de\u00a0lumi\u00e8re<\/p>\n<p style=\"padding-left: 30px;\">&#8211; <strong><em>Position<\/em> <\/strong>:<\/p>\n<p style=\"padding-left: 60px;\">&#8211; d\u00e9finie la <strong>position<\/strong> de la lumi\u00e8re par trois valeurs de coordonn\u00e9es<\/p>\n<p style=\"padding-left: 30px;\">&#8211; \u00a0<strong>Direction<\/strong> :<\/p>\n<p style=\"padding-left: 60px;\">&#8211; d\u00e9finie la <strong>direction<\/strong> \u00e0 laquelle pointe la lumi\u00e8re<\/p>\n<p>Le but du calcul lumineux est de <strong>combiner<\/strong> ces deux cat\u00e9gories de propri\u00e9t\u00e9s afin d\u00e9terminer la <strong>couleur finale<\/strong> de la lumi\u00e8re (avec ses nuances d&rsquo;ombre).<\/p>\n<h3><span style=\"text-decoration: underline;\">Lumi\u00e8re ambiante :<\/span><\/h3>\n<p>La lumi\u00e8re ambiante d\u00e9signe, comme son nom l&rsquo;indique, une lumi\u00e8re qui <strong>\u00e9claire dans toutes les directions<\/strong>. C&rsquo;est comme un soleil qui illumine partout.<\/p>\n<p>L&rsquo;\u00e9quation est toute simple :<\/p>\n<p><strong>Ip = pa \u00a0* Ia\u00a0<\/strong><\/p>\n<p>[utiliser ambient = Ka + Ga]<\/p>\n<p><strong>Ia<\/strong> d\u00e9signe l&rsquo;intensit\u00e9 de la lumi\u00e8re ; et <strong>pa<\/strong> le coefficient de r\u00e9flexion de la lumi\u00e8re ambiante. Ip d\u00e9signe l&rsquo;intensit\u00e9 de la lumi\u00e8re r\u00e9sultant de la r\u00e9flexion sur la surface finale.<\/p>\n<p>Ce principe de calcul de la lumi\u00e8re illuminative est tr\u00e8s rudimentaire car il n&rsquo;affiche <strong>pas les ombres<\/strong>\u00a0des mod\u00e8les que font appara\u00eetre <strong>indirectement<\/strong> la lumi\u00e8re \u00e9missive.<\/p>\n<p>[image lumi\u00e8re ambiante]<\/p>\n<h3><span style=\"text-decoration: underline;\">La r\u00e9flexion diffuse :<\/span><\/h3>\n<p>Le principe de la r\u00e9flexion diffuse consiste \u00e0 consid\u00e9rer la <strong>position d&rsquo;\u00e9mission<\/strong> d&rsquo;une lumi\u00e8re quelconque (ou plusieurs)<\/p>\n<p>On a remarqu\u00e9, <strong>math\u00e9matiquement<\/strong>, que <strong>l&rsquo;intensit\u00e9<\/strong> <strong>en un point<\/strong> de l&rsquo;effet d&rsquo;une lumi\u00e8re quelconque\u00a0d\u00e9pend de<strong> l&rsquo;angle form\u00e9<\/strong> entre le <strong>rayon de lumi\u00e8re<\/strong> qui touche le point de la surface et <strong>la normale<\/strong> \u00e0 la surface.<\/p>\n<p>Il se trouve que, plus l&rsquo;angle form\u00e9 <strong>entre le rayon<\/strong> de lumi\u00e8re <strong>et la normale<\/strong> au plan est faible, plus l&rsquo;intensit\u00e9 lumineuse r\u00e9fl\u00e9chie visible par l&rsquo;observateur est forte.<\/p>\n<p>[ajouter sch\u00e9ma dot product]<\/p>\n<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/Diffuse-Lighting.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-4593\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/Diffuse-Lighting.png\" alt=\"Diffuse-Lighting\" width=\"342\" height=\"310\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/Diffuse-Lighting.png 487w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2015\/04\/Diffuse-Lighting-300x272.png 300w\" sizes=\"(max-width: 342px) 100vw, 342px\" \/><\/a><\/p>\n<p><span style=\"text-decoration: underline;\">Types de calcul lumineux :<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9sum\u00e9 :<\/strong><\/p>\n<p><strong>R\u00e9f\u00e9rences : <\/strong><\/p>\n<p>&#8211; http:\/\/irrlicht-fr.org\/lire_tuto.php?id=1014<\/p>\n<p>&#8211; \u00a0https:\/\/takinginitiative.wordpress.com\/2010\/08\/30\/directx-10-tutorial-8-lighting-theory-and-hlsl\/<\/p>\n<p>&#8211;\u00a0http:\/\/www.3dgep.com\/texturing-lighting-directx-11\/<\/p>\n<p>&#8211; http:\/\/http.developer.nvidia.com\/CgTutorial\/cg_tutorial_chapter05.html<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Dans les jeux vid\u00e9o, la gestion du rendu des lumi\u00e8res est cruciale pour effectuer un rendu \u00e0 la fois r\u00e9aliste et joli. Dans cet article nous allons pr\u00e9senter les rudiments de la th\u00e9orie sur le rendu des lumi\u00e8res. Le rendu lumineux est un sujet vaste et complexe et pour cause le sujet est [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[13],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/2246"}],"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=2246"}],"version-history":[{"count":20,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/2246\/revisions"}],"predecessor-version":[{"id":4601,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/2246\/revisions\/4601"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}