s
19 708 Pages

le terme shaders (Pas traduire correctement langue italienne) Indique la manière qui a un matériau à réagir à la lumière et à faire la transition d'un point entièrement éclairé à une dans l'ombre.[1] Techniquement, au lieu d'envoyer des polygones ou des images à un carte vidéo, une application peut envoyer des petits spécifique programmes, décrivant comment des polygones et des images contiguës doivent être traitées jusqu'à ce que l'affichage à l'écran. Les étapes de pipeline graphique, et dans certains cas, l'ensemble du pipeline, sera remplacé par ces programmes.[2]

aspects théoriques

Le shader doit reproduire le comportement physique du matériau qui compose l'objet auquel ils sont appliqués. Vous pouvez ensuite créer un shader pour les métaux, pour le plastique, l'un pour le verre et ainsi de suite, et le réutiliser plusieurs fois dans une scène. une fois moulé un objet complexe, comme peut être par exemple une fenêtre, vous rejoindrez le modèle de cadre, un shader pour le bois, l'une pour la poignée, et un pour le verre. La fonction de réutilisabilité de cet outil est inestimable dans le travail avec infographie 3D, tant en termes de temps et le résultat final.

Cependant il ne faut pas confondre les shaders avec le matériel (dans un programme de modélisation comme Blender), parce que la première règle les propriétés optiques de l'ombrage, tandis que le second est son récipient - qui vous permet de définir d'autres paramètres en plus de l'ombrage des mailles, telles que la couleur ou la transparence de fond.

Pour déterminer l'apparence de la surface, un shader est déjà en utilisant des techniques établies telles que l'application de textures et la gestion des ombres. Shaders peuvent également être utilisés pour appliquer des effets post-traitement. Parce que les programmes en vigueur, vous pouvez aussi les utiliser pour la réplication des événements physique très complexe, comme collisions et simulations fluide. Dans le cadre de 'optique Ils sont couramment utilisés pour simuler: propagation, réflexion, réfraction, et diffusion de la lumière.

moderne Graphics Processing Unit Ils ont différents pipeline utilisé pour la transformation d'une scène 3D en une image raster qui peuvent être représentés à l'écran. Un tel pipeline d'effectuer une série d'opérations basées sur les shaders programmables.

La bibliothèque graphique DirectX et OpenGL en utilisant trois types de shaders, qui exploitent la capacité d'ombrage Graphics Processing Unit présenter cartes vidéo. Avec un dixième de la version DirectX, intégrée dans Microsoft windows Vista, les trois types ont été rejoints dans 'modèle de shaders unifiés, et Shader Model 4.0.

vertex Shader

Shader
Position (en rouge) du vertex shader dans le pipeline graphique

la vertex shader Ils sont utilisés pour manipuler sommets, en prenant la configuration initiale du sommet (opérant sur un seul sommet à la fois) et la modification en changeant les valeurs de position, normal, ou coordonnées de texture (Cependant, un vertex shader ne peut pas créer plus de sommets que il y a déjà). Il prépare aussi l'environnement de nuanceur pour tout traitement ultérieur des sommets pour shader tessellation et de la géométrie et de la nuanceur de traitement de tramage et de fragment. Un inconvénient est représenté par la normale des sommets, étant donné que, une fois la géométrie a changé, il est nécessaire de calculer la nouvelle norme du modèle. La façon dont vous pouvez le faire, dépend de la manière dont la géométrie a été définie.[3] Tout ce qui nécessite le déplacement des sommets, comme des drapeaux, des vêtements ondulant qui se balancent, les cheveux dans le vent, les particules d'eau des fontaines, des projections d'eau, etc ... peut utiliser ce mécanisme de programmation.[4]

Shader
Entrée et sortie du vertex shader

tessellation Shader

Shader
Position (en rouge) du shader tessellation dans le pipeline graphique

Résumé: Un tessellation (en anglais tessellation) Dans l'infographie, il est un processus qui divise une surface d'un maillage, ce qui rend plus lisse et formée par des triangles.[5]

la tessellation shader peuvent éventuellement suivre les vertex shaders dans le pipeline. Leur fonction principale est de développer un original primitive géométrique en un ensemble de primitives, qui exprime en géométrie plus détaillée. Introduit avec l'OpenGL 4.0, ils interpoler la géométrie pour créer supplémentaire, qui peut[3]:

  • Permettant de réaliser la subdivision adaptative basée sur une variété de critères tels que la taille ou la courbure
  • Permettre de terminer modèles bruts en utilisant la GPU, ce qui donne une sorte de taux de compression géométrique
  • Laisser appliquer la carte de déplacement plus détaillée sans fournir de manière équitable la géométrie détaillée
  • Laisser adapter au niveau de détail requis la qualité visuelle
  • Ce qui vous permet de créer la silhouette plus lisse
  • Ce qui vous permet d'effectuer écorcher plus facile

Tessellation et Shader Géométrie Shader?[3]

Les deux geometry shader que les shaders de tessellation sont capables de créer une nouvelle géométrie de la géométrie existante, et les deux sont utilisés pour fournir un soutien au niveau de détail, il peut y avoir confusion sur le moment d'utiliser l'un ou l'autre type. Alors que les capacités de chacun sont assez semblables, il existe des différences distinctes.

Un shader tessellation crée beaucoup de la géométrie, mais toute la nouvelle géométrie est du même type que celui de départ - vous pouvez obtenir plusieurs segments pour une ligne, plus les triangles pour un patch triangulaire, ou plus isolignes ou quadrilatères pour un carré, mais vous obtenez ont toujours la même géométrie. Les shaders tessellation doivent être utilisés quand il est nécessaire de générer de nombreux nouveaux sommets et l'une des topologies de tessellation répond à la nécessité, ou lorsqu'une entrée d'un patch demandé implique beaucoup (plus de six) sommets. D'autre part, un geometry shader donne plus d'opportunités et différentes. Un geometry shader est utilisé quand il est nécessaire de convertir une topologie à une géométrie différente, ou si vous avez besoin de traitement géométrique après les shaders tessellation.

Enfin, le fait que le geometry shader suivent le shader tessellation dans le pipeline, crée une limitation dans l'utilisation de ce dernier. Un shader tessellation ne peut générer des segments de ligne ou des triangles; Il ne peut pas générer une géométrie avec contiguïté. Si vous avez besoin de créer une nouvelle géométrie dans un geometry shader et la géométrie Cela nécessite contiguïté, le geometry shader ne peut pas suivre les shaders tessellation dans le pipeline, et vous pouvez donc pas utiliser.

géométrie Shader

Shader
Position (en rouge) du nuanceur géométrique dans le pipeline graphique

la nuanceur géométrique Il a représenté une nouvelle occasion dans le Shader, quand il a été introduit à la fin de 2006 avec la sortie du Shader Model 4 pour obtenir un avantage sur la capacité de plus en plus de cartes graphiques haut de gamme. Il élargit les compétences graphiques du programmeur fournissant des outils pour développer la géométrie de base du modèle, par l'inclusion d'un plus grand nombre ou différents types de primitives graphiques, en plus de celles initialement définies.[3]

Si vous utilisez un geometry shader, l'application ou le vertex shader peut générer tous les types familiers de topologies:

  • points
  • lignes
  • bandes ligne
  • boucles de ligne
  • Lignes avec contiguïté
  • Line avec des bandes adjacentes
  • triangles
  • bandes Triangle
  • les fans de Triangle
  • Triangles avec adjacent
  • bandes triangle avec adjacent
  • quadrilatères
  • bandes Quad

tous ces topologies Ils peuvent être utilisés par l'application, mais le geometry shader ont un nombre limité de topologies qui peuvent accepter. Ce sont des points, des lignes, des lignes avec contiguïté, des triangles ou des triangles avec contiguïté.[3]

Dans le cas de vertex shaders, la gestion d'un seul sommet à la fois, il est difficile pour le calcul de la normale basée sur produits vectoriels des bords. En travaillant avec le geometry shader, nous utilisons encore normal calculée à partir de la géométrie d'origine, car ils contiennent une meilleure information, par rapport au vecteur normal calculé par les produits des bords. Cependant, la géométrie shader donner accès à toutes les informations de tous les sommets d'un triangle ou d'un triangle avec la contiguïté (entrée), ce qui peut permettre de calculer le vecteur normal du produit. En effet, il peut être suffisant pour ajouter un geometry shader à une application qui utilise un vertex shader ou tessellation, mais cela ne prend pas en charge l'analyse, tout simplement normal d'être en mesure de calculer le vecteur normal du produit, pour l'éclairage.[3]

fragment Shader

Shader
Position (en rouge) du fragment shader dans le pipeline graphique

La dernière phase dans l'environnement de fragment shader est le traitement effectué par fragment shader ou pixel shader. Cela prend l'information mis au point par le traitement de sommet (vertex shaders, nuanceur de tessellation, ou un nuanceur géométrique) et élargit les opérations traditionnelles de fragmentation qui permettent d'opérer sur chaque fragment individuel pour générer la couleur de ses pixels. Ceci est une opération hautement parallèle qui peut appliquer des textures traditionnelles ou de procédure; couleur spéciale, par exemple une des fonctions de transfert de pseudo-; et types avancés de l'ombrage, tels que l'ombrage Phong ou anisotrope. Le fragment shader a le plus grand impact sur l'effet image visuelle.[3]

La fonction de base d'un fragment shader est de prendre les variables uniformes et la sortie du dispositif de tramage et de calculer la couleur de pixel pour chaque fragment. De toute évidence, beaucoup d'autres propriétés intégrées des sommets, ainsi que la couleur et l'intensité lumineuse, peuvent être interpolées dans le traitement des fragments. Le plus important parmi ceux-ci, sont les coordonnées de texture et la profondeur des pixels. Si vous êtes texturizzando, puisque les coordonnées de texture sont interpolés, vous pouvez utiliser les coordonnées pour échantillonner une texture (ou plusieurs textures), pour aider à déterminer la couleur de chaque pixel.[3]

L'utilisation de shaders de pixels vous permet d'appliquer des effets tels que bump mapping, ombres, des explosions, des effets diffraction, réfraction et la simulation de 'effet de fresnel (Mis en œuvre en jeu vidéo Half-Life 2) Permettant une meilleure simulation des effets d'éclairage et une apparence plus réaliste des surfaces par les propriétés optiques particulières (comme par exemple, les effets de réfraction dans les liquides).

Shader
Entrée et sortie du fragment shader

éclairage

La meilleure façon de le faire à travers l'éclairage est calculé par sommet, qui placerait la responsabilité de la plupart des travaux sur les épaules du vertex shader. Si l'illumination est réalisée de cette façon, la couleur est calculée sur la base des propriétés de la lumière et le matériau - qui déterminent la couleur de chaque sommet - sur la base du modèle d'éclairement standard ambiant diffuse spéculaire (ADS). Ce calcul par vertex peut être utilisé aussi bien pour l'ombrage plat que pour l'ombrage lisse. Cependant, si un modèle est utilisé ombres plus complexes, tels que l'ombrage Phong ou anisotrope, le calcul de la couleur est susceptible d'être reportée au fragment shader, où le calcul peut être effectué par pixel de la couleur.

Considérons, pour simplifier, les shaders dans Blender.

diffuse Shader

Les images montrent le shader diffus combiné avec chaque shaders spéculaires (voir plus loin), mis en œuvre dans le mélangeur de programme.

Lambert

Il shader deafult. Il ne dispose pas des propriétés particulières et permet d'obtenir une dégradation douce par des points d'ombre de points lumineux.[1]

Oren-Nayar

Ce shader permet de mieux reproduire les irrégularités microscopiques présentes sur la surface de presque tous les matériaux.[1] Lié au modèle de réflexion développé au début des années 90 par Michael Oren et Shree Nayar K., il est une généralisation de la loi de Lambert largement utilisé aujourd'hui dans l'infographie.[6]

Toon

Toon Il appartient à la catégorie des shaders physiquement inexacts. Son but est de fournir un résultat similaire à celui des illustrations en deux dimensions de couleur de la bande dessinée éclosent. Les zones claires seront donc très homogène et bien distinct des domaines aussi homogènes d'ombre.[1]

Minnaert

Ce shader consiste essentiellement en un shader reimplementation Lambert.[1] Marcel Minnaert (1893-1970), était un astronome belge qui est intéressé par les effets de l'atmosphère sur la lumière et les images, qui a publié en 1954 un livre intitulé « La nature de la lumière et la couleur dans l'air libre ».[6]

Fresnel

Dans le calcul de la diffusion, un shader Fresnel Il ne prend pas en considération que le coin qui est créé entre le plan du point de vue et la surface éclairée de l'objet, mais ajoute également aux calculs l'angle d'incidence de la lumière sur la surface de l'objet. En particulier, plus le faisceau parallèle viennent par rapport à la normale d'une surface, la plus faible sera la diffusion; au contraire, seront rayons plus perpendiculaires, plus la propagation.[1]

spéculaires Shader

Il ne faut pas se laisser berner par le terme spéculaire, qui ne sont pas du tout lié au phénomène caractéristique des miroirs de réflexion, mais se rapporte au phénomène connu de la formation d'un point de luminosité maximale (ou de la lumière élevé, ou un point de lumière, ceci est le terme correct en italien, en référence à Faits saillants spéculaires) Sur toute surface apte à réfléchir la lumière. Souvent, ces deux phénomènes ne sont pas faciles à distinguer, cependant, la méthode suivante peut être utilisée pour obtenir une idée plus claire: plus la surface du matériau sera lisse, uniforme et sans imperfections, la plupart seront reflet visible de la haute lumières. Par exemple, une boule de billard est si lisse pour créer un effet de réflexion spéculaire; d'autre part, plus la surface est rugueuse et irrégulière, la réflexion plus diffuse prévaudra.[1] Vous pouvez créer différentes combinaisons de shaders Diffuse (à l'intérieur des crochets) et spéculaires. L'image ci-dessous propose une et illustre simultanément l'effet de chaque Specular Shader.

Shader
shaders spéculaires dans Blender

CookToor

Le nom complet de ce shader est Cook-Torrance et il peut être considéré comme une version de shaders Phong. Il est particulièrement adapté à la production de surfaces organiques ou inorganiques non SOEC, tels que le plastique et le cuir.[1] Robert L. Cook (Lucasfilm) et Kenneth E. Torrance (Université Cornell) dans son document 1982 "Un modèle de réflectance pour Computer Graphics"[7], Ils ont décrit « un nouveau modèle de réflexion pour rendre les images de synthèse informatiques » et appliquée au métal et à la simulation en plastique.[8]

Phong

Phong L'une des premières méthodes d'ombrage développées dans l'histoire de l'infographie. Il est un très shader simple, qui adapte bien au rendement des matériaux métalliques.[1]

Blinn

Blinn ajoute un contrôle IOR (indice de réfraction, indice de réfraction), ce qui permet un plus grand réalisme. Dans le cas de Blinn le point de réflexion des hautes lumières peut avoir un diamètre beaucoup plus petit que Phong et CookToor.[1] Il est souvent utilisé avec le shader diffus Oren-Nayar.[8] Le modèle a été décrit par Jim Blinn en 1977.[9]

Toon

Ce shader est soliamente coordonnée avec la propagation Toon. Il est capable de produire (d'une manière similaire à se propager) un point lumineux très défini.[1]

WardIso

Le shader-ci est utile dans la création de matériaux plastiques ou métalliques.[1] Gregory J. Ward a développé un modèle relativement simple qui obéit aux lois de la physique les plus élémentaires. Dans sa publication de 1992 "Meauring et la modélisation de réaction anisotrope« Ward a introduit une fonction de distribution de réflectance bidirectionnelle (BRDF), depuis lors, largement utilisé dans l'infographie, car les quelques paramètres considérés sont faciles à contrôler. Son modèle peut représenter les deux surfaces isotropes (lumière non directionnelle), les deux surfaces anisotropes (en fonction de la direction de la lumière). Dans shader spéculaire Blender quartier Il est encore appelé « Ward isotropique », mais est en fait anisotrope.

notes

  1. ^ à b c et fa g h la j k l Francesco Siddi, Blender 3D Graphics.
  2. ^ J. F. Hughes, Andries van Dam, Morgan McGuire, David F. Sklar, James D. Foley, Steven K. Feiner, Kurt Akeley, Principes et pratiques INFOGRAPHIE, 3e éd ..
  3. ^ à b c et fa g h Mike Bailey, Steve Cunningham, Graphiques Shaders: Théorie et pratique, 2e éd ..
  4. ^ James Leiterman, Apprendre Vertex et Pixel Shader Programmation avec DirectX 9.
  5. ^ DirectX 11 Tessellation, nvidia.it.
  6. ^ à b Page Blender Manuel de référence sur Diffuse Shaders, docs.blender.org.
  7. ^ Robert L. Cook, Kenneth E. Torrance, Un modèle de réflectance pour Computer Graphics.
  8. ^ à b Page Blender Manuel de référence sur spéculaires Shaders, docs.blender.org.
  9. ^ Jim Blinn, Les modèles de réflexion Lumière pour ordinateur Synthétisé Photos.

Articles connexes

autorités de contrôle GND: (DE7673243-5