J'essaye de créer un rendu différé dans vulkan avec un renderpass et deux sous-passes. Le premier devrait être le passage de géométrie pour remplir le G-Buffer et le second devrait être la passe d'ombrage pour appliquer l'éclairage. Le problème est maintenant que je ne peux pas comprendre comment je devrais décrire les dépendances entre les sous-classes dans le VkRenderPassCreateInfo
.Décrire les pièces jointes pour le rendu multipass
Le VkRenderPassCreateInfo
a un champ:
pAttachments
pointe vers un tableau de attachmentCount
nombre de VkAttachmentDescription
structures décrivant les propriétés des pièces jointes ou NULL
si attachmentCount
est égal à zéro.
Mais le VkSubpassDescription
a un champ:
pColorAttachments
est un tableau de colorAttachmentCount
VkAttachmentReference
structures qui répertorie des pièces jointes du passage rendu sera utilisé comme pièces jointes de couleur dans la subpass, et que la mise en page chaque pièce jointe sera en cours le subpass. Chaque élément du tableau correspond à un emplacement de sortie de fragment shader, à savoir si le shader a déclaré une variable de sortie layout(location=X)
il utilise l'accessoire fourni dans pColorAttachments[X]
donc à ma compréhension de la pColorAttachments
du VkSubpassDescription
déclarer la mise en page de la sortie chaque passe. Donc dans mon exemple, le premier subpass aurait 4 sorties: 1 position, 1 normale, 1 spéculaire et 1 profondeur. Et le second subpass aurait 1 sortie: la couleur qui est affichée sur l'écran. Si tel est le cas, quel est le but du champ pAttachments
dans le champ ?
Ainsi, le renderpass spécifie la quantité totale et le type de pièces jointes et les sous-classes ne font que référence à celles qu'elles utiliseront. Merci beaucoup. – Dynamitos
C'est vrai. C'est pourquoi, lorsque vous créez un framebuffer, ses images correspondent aux attachements du pass de rendu (ceux spécifiés avec un tableau d'objets 'VkAttachmentDescription'). – Ekzuzy