Saltar al contenido
PS5PCEM
ParcialGráficos

Shaders de vértice NGG

Los programas de vértice NGG fusionados, incluido un fetch shader que continúa con S_SETPC_B64, se traducen como una sola etapa de gráficos. El programa de exportación conserva su propia ventana de user-data.

Notas del repositorio hasta el 10 de octubre de 2026

Fetch y export son programas distintos

Un dibujo de PlayStation 5 a menudo parte el trabajo de vértices en un fetch shader y un shader de exportación. El fetch shader termina su prólogo de atributos saltando al código de exportación con S_SETPC_B64. PS5PCEM trata esa continuación como parte del mismo programa de vértices y traduce el resultado fusionado.

El programa de exportación NGG no toma prestado el banco de user-data del shader de geometría. Sus registros escalares se inicializan desde su propia instantánea de user-data, en s8 para el programa de exportación. Suponer que la tabla de recursos vive en s0:s1 es un fallo que el traductor evita a propósito. El puntero de la tabla viene del par user-SGPR de ShaderResourceTable que declararon los metadatos.

Atributos de vértice

El fetch shader y los user data extendidos se resuelven junto con las tablas incrustadas de búfer de vértices y de atributos de vértice. Hasta 32 semánticas de entrada conservan su índice semántico, el VGPR de hardware en el que aterrizan, el formato de atributo de AGC, el desplazamiento en bytes, la tasa de instancia y el descriptor de búfer de 128 bits.

La búsqueda de atributos usa el byte semántico, no el byte de mapeo de hardware. Un par de tablas incompleto o un índice fuera del dominio admitido se rechaza antes de cualquier lectura del invitado. Las exportaciones PARAM de la etapa de vértices se convierten en las entradas de interpolación del fragmento, que es como un shader de píxeles posterior ve las variables interpoladas.

Llamadas a un fetch shader

Un fetch shader externo verificado también puede enlazarse desde S_SWAPPC_B64 o S_CALL_B64 cuando el par de user-data de la llamada sigue conteniendo la dirección que registró AGC. El cuerpo de fetch se descodifica a través de su S_SETPC_B64 de retorno, y ese retorno debe leer el par de enlace del llamador. Los detalles de qué llamadas son admisibles están en la página de llamadas escalares.

La traducción NGG fusionada es lo que permite a las escenas tridimensionales superar un prólogo de fetch que antes detenía al decodificador. Por sí sola no aporta un shader de píxeles ausente ni un destino de render ausente.

Qué está implementado

  • Programas de vértice NGG fusionados, incluidos prólogos de fetch que terminan en S_SETPC_B64.
  • Una ventana de user-data distinta para el programa de exportación.
  • Hasta 32 semánticas de vértice con formatos, desplazamientos, tasas de instancia y descriptores de búfer.
  • Exportaciones PARAM conectadas a las entradas de interpolación del fragmento.

Qué falta todavía

  • Un fetch shader cuyo retorno no coincide con el par de enlace del llamador no se enlaza.
  • Las llamadas dinámicas generales siguen sin admitirse. Véanse las llamadas escalares.
  • La geometría que depende de una exportación o un interpolante no admitidos sigue haciendo fallar ese dibujo.

Mecanismos relacionados

Qué describen estas páginas

El texto sigue las notas de arquitectura y los informes de octubre de 2026 del repositorio PS5PCEM. Un test concreto que pasa no es una tasa de fotogramas nueva ni una partida terminada nueva.

Todas las tecnologías