Zum Inhalt springen
PS5PCEM
TeilweiseGrafik

NGG-Vertex-Shader

Zusammengeführte NGG-Vertexprogramme, einschließlich eines Fetch-Shaders, der mit S_SETPC_B64 fortsetzt, werden als eine Grafikstufe übersetzt. Das Exportprogramm behält sein eigenes User-Data-Fenster.

Repository-Notizen bis 10. Oktober 2026

Fetch und Export sind verschiedene Programme

Ein Zeichenaufruf der PlayStation 5 teilt Vertexarbeit oft in einen Fetch-Shader und einen Export-Shader. Der Fetch-Shader beendet seinen Attributprolog, indem er mit S_SETPC_B64 in den Exportcode springt. PS5PCEM behandelt diese Fortsetzung als Teil desselben Vertexprogramms und übersetzt das zusammengeführte Ergebnis.

Das NGG-Exportprogramm leiht sich nicht die User-Data-Bank des Geometry-Shaders. Seine skalaren Register werden aus seinem eigenen User-Data-Schnappschuss initialisiert, bei s8 für das Exportprogramm. Anzunehmen, die Ressourcentabelle liege in s0:s1, ist ein Fehler, den der Übersetzer gezielt vermeidet. Der Tabellenzeiger kommt aus dem User-SGPR-Paar der ShaderResourceTable, das die Metadaten deklariert haben.

Vertexattribute

Der Fetch-Shader und die erweiterten User Data werden zusammen mit den eingebetteten Tabellen für Vertexpuffer und Vertexattribute aufgelöst. Bis zu 32 Eingabesemantiken behalten ihren semantischen Index, das Hardware-VGPR, in dem sie landen, das AGC-Attributformat, den Byteoffset, die Instanzrate und den 128-Bit-Pufferdeskriptor.

Die Attributsuche nutzt das semantische Byte, nicht das Byte der Hardware-Zuordnung. Ein unvollständiges Tabellenpaar oder ein Index außerhalb des unterstützten Bereichs wird abgelehnt, bevor irgendein Gastlese erfolgt. PARAM-Exporte der Vertexstufe werden zu den Eingängen der Fragmentinterpolation, und so sieht ein späterer Pixel-Shader die Varyings.

Aufrufe in einen Fetch-Shader

Ein geprüfter externer Fetch-Shader kann auch von S_SWAPPC_B64 oder S_CALL_B64 aus verbunden werden, wenn das User-Data-Paar des Aufrufs noch die Adresse hält, die AGC registriert hat. Der Fetch-Rumpf wird bis zu seinem zurückkehrenden S_SETPC_B64 dekodiert, und diese Rückkehr muss das Link-Paar des Aufrufers lesen. Welche Aufrufe zulässig sind, steht auf der Seite der skalaren Aufrufe.

Die zusammengeführte NGG-Übersetzung lässt dreidimensionale Szenen an einem Fetch-Prolog vorbeikommen, der den Decoder früher angehalten hat. Sie liefert für sich genommen weder einen fehlenden Pixel-Shader noch ein fehlendes Renderziel.

Was umgesetzt ist

  • Zusammengeführte NGG-Vertexprogramme, einschließlich Fetch-Prologen, die mit S_SETPC_B64 enden.
  • Ein eigenes User-Data-Fenster für das Exportprogramm.
  • Bis zu 32 Vertexsemantiken mit Formaten, Offsets, Instanzraten und Pufferdeskriptoren.
  • PARAM-Exporte, verbunden mit den Eingängen der Fragmentinterpolation.

Was noch fehlt

  • Ein Fetch-Shader, dessen Rückkehr nicht zum Link-Paar des Aufrufers passt, wird nicht verbunden.
  • Allgemeine dynamische Aufrufe bleiben nicht unterstützt. Siehe skalare Aufrufe.
  • Geometrie, die von einem nicht unterstützten Export oder Interpolanten abhängt, lässt diesen Zeichenaufruf weiterhin fehlschlagen.

Verwandte Mechanismen

Worum es auf diesen Seiten geht

Der Text folgt den Architektur-Notizen und den Berichten vom Oktober 2026 im PS5PCEM-Repository. Ein bestandener Einzeltest ist keine neue Bildrate und kein neuer Durchspielstand.

Alle Techniken