Aller au contenu
PS5PCEM
PartielGraphisme

Shaders de sommets NGG

Les programmes de sommets NGG fusionnés, y compris un shader de fetch qui continue par S_SETPC_B64, se traduisent comme un seul étage graphique. Le programme d'export conserve sa propre fenêtre de données utilisateur.

Notes du dépôt jusqu’au 10 octobre 2026

Le fetch et l'export sont des programmes différents

Un draw PlayStation 5 sépare souvent le travail de sommets en un shader de fetch et un shader d'export. Le shader de fetch termine son prologue d'attributs en sautant vers le code d'export avec S_SETPC_B64. PS5PCEM traite cette continuation comme une partie du même programme de sommets et traduit le résultat fusionné.

Le programme d'export NGG n'emprunte pas la banque de données utilisateur du geometry shader. Ses registres scalaires sont initialisés à partir de son propre instantané de données utilisateur, en s8 pour le programme d'export. Supposer que la table de ressources se trouve dans s0:s1 est un bug que le traducteur évite expressément. Le pointeur de table vient de la paire de user-SGPR ShaderResourceTable déclarée par les métadonnées.

Attributs de sommets

Le shader de fetch et les données utilisateur étendues sont résolus en même temps que les tables embarquées de tampons de sommets et d'attributs de sommets. Jusqu'à 32 sémantiques d'entrée conservent leur indice sémantique, le VGPR matériel où elles arrivent, le format d'attribut AGC, le décalage en octets, le taux d'instance et le descripteur de tampon de 128 bits.

La recherche d'attribut utilise l'octet sémantique, pas l'octet de mappage matériel. Une paire de tables incomplète ou un indice hors du domaine pris en charge est rejeté avant toute lecture invitée. Les exports PARAM de l'étage de sommets deviennent les entrées d'interpolation du fragment, et c'est ainsi qu'un pixel shader ultérieur voit les varyings.

Appels vers un shader de fetch

Un shader de fetch externe vérifié peut aussi être lié depuis S_SWAPPC_B64 ou S_CALL_B64 lorsque la paire de données utilisateur de l'appel contient encore l'adresse enregistrée par AGC. Le corps de fetch est décodé jusqu'à son S_SETPC_B64 de retour, et ce retour doit lire la paire de lien de l'appelant. Le détail des appels légaux se trouve sur la page des appels scalaires.

La traduction NGG fusionnée est ce qui permet aux scènes tridimensionnelles de dépasser un prologue de fetch qui arrêtait auparavant le décodeur. Elle ne fournit pas, à elle seule, un pixel shader manquant ni une cible de rendu manquante.

Ce qui est en place

  • Programmes de sommets NGG fusionnés, y compris les prologues de fetch qui se terminent par S_SETPC_B64.
  • Une fenêtre de données utilisateur distincte pour le programme d'export.
  • Jusqu'à 32 sémantiques de sommets, avec formats, décalages, taux d'instance et descripteurs de tampon.
  • Exports PARAM reliés aux entrées d'interpolation du fragment.

Ce qui manque encore

  • Un shader de fetch dont le retour ne correspond pas à la paire de lien de l'appelant n'est pas lié.
  • Les appels dynamiques généraux restent non pris en charge. Voir les appels scalaires.
  • Une géométrie qui dépend d'un export ou d'un interpolant non pris en charge fait encore échouer ce draw.

Mécanismes liés

Ce que ces pages décrivent

Le texte suit les notes d’architecture et les rapports d’octobre 2026 du dépôt PS5PCEM. Un test ciblé qui passe n’est ni une nouvelle cadence d’images ni une nouvelle partie terminée.

Toutes les technologies