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