La définition du tampon de pochoir par Wikipedia n'est en effet pas excellente, elle se concentre trop sur les détails des implémentations modernes (OpenGL). Je trouve la version sans ambiguïté plus facile à comprendre:
Un pochoir est un modèle utilisé pour dessiner ou peindre des lettres, des symboles, des formes ou des motifs identiques à chaque fois qu'il est utilisé. Le dessin produit par un tel modèle est également appelé pochoir.
C'est ce que signifiait le pochoir avant l'infographie. Si vous tapez pochoir sur Google Images, c'est l'un des premiers résultats:
Comme vous pouvez le voir, c'est simplement un masque ou un motif qui peut être utilisé pour «peindre» le négatif du motif sur quelque chose.
Le tampon de gabarit fonctionne exactement de la même manière. On peut remplir le tampon de gabarit avec un motif sélectionné en effectuant une passe de rendu de gabarit, puis définir la fonction de gabarit appropriée qui définira la façon dont le motif doit être interprété sur les dessins suivants, puis rendre la scène finale. Les pixels qui tombent dans les zones rejetées du masque de pochoir, selon la fonction de comparaison, ne sont pas dessinés.
Lorsqu'il s'agit d'implémenter le tampon de gabarit, il est parfois en effet couplé au tampon de profondeur. La plupart du matériel graphique utilise un tampon de gabarit de 1 octet (8 bits), ce qui est suffisant pour la plupart des applications. Les tampons de profondeur sont généralement implémentés en utilisant 3 octets (24 bits), ce qui est normalement suffisant pour la plupart des types de rendu 3D. Il est donc logique de regrouper les 8 bits du tampon de gabarit avec les 24 autres du tampon de profondeur, ce qui permet de stocker chaque pixel profondeur + gabarit dans un entier de 32 bits. C'est ce que Wikipédia voulait dire par:
Le tampon de profondeur et le tampon de gabarit partagent souvent la même zone dans la RAM du matériel graphique.
Une application dans laquelle le tampon de gabarit était roi était pour le rendu des ombres, dans une technique appelée volumes d'ombres , ou parfois aussi convenablement appelées ombres de pochoirs . C'était une utilisation très intelligente du tampon, mais de nos jours, la plupart du champ de rendu semble s'être déplacé vers des cartes d'ombre basées sur la profondeur.
cleaver
->clever
. Je ne peux pas le modifier D: Excellente réponse d'ailleurs, cela a le plus de sens jusqu'à présent.Le tampon de gabarit est un tampon d'entier non signé, généralement de 8 bits de nos jours, où vous pouvez remplir les informations par pixel comme vous le souhaitez en fonction de l'utilisation de diverses opérations ( OpenGL Ops ici par exemple ) après un test de gabarit.
Le test de gabarit est simplement une opération par pixel dans laquelle la valeur de gabarit de pixel actuelle est testée par rapport au contenu du tampon de gabarit. Vous définissez la condition à laquelle le test de gabarit est réussi (par exemple TOUJOURS, MOINS, etc.).
Vous pouvez décider de ce qui arrive à la valeur du gabarit en fonction du résultat du test (dans OpenGL en utilisant l'opération que je vous ai liée ci-dessus)
Le tampon de pochoir a plusieurs utilisations, les premières qui me viennent à l'esprit sont:
Dans le passé, il a également été utilisé pour des techniques d'observation telles que le volume de l'ombre.
Le pauvre tampon de pochoir est souvent assez sous-estimé, mais peut être une bonne arme dans l'armurerie d'un programmeur graphique.
[*] Valeur à relire dans un post-processus en utilisant le bon SRV!
EDIT: Il convient également de mentionner que dans Shader Model 5.1 (donc D3D11.3 et D3D12), vous avez accès à la valeur de référence du pochoir via
SV_StencilRef
la source
Source: Qu'est-ce qu'un tampon de pochoir? | Réseau de développeurs Microsoft
L'idée générale est que vous pouvez définir une valeur pour chaque pixel, puis régler le fonctionnement (
GREATER
,SMALLER
,EQUAL
etc.), lorsque cette valeur True pixel est ombrées et représentés.Une application est la réflexion en temps réel, lors du rendu de la texture de réflexion, le tampon de gabarit est utilisé pour créer un masque pour l'endroit où la réflexion est appliquée. Par exemple, n'appliquez la réflexion qu'aux triangles ombrés en verre. Il peut également être utilisé pour créer des masques bidimensionnels arbitraires pour l'ensemble du framebuffer.
la source