Compartir a través de


Depurador de HLSL

El depurador de HLSL, que es una de las herramientas de Diagnóstico de gráficos de Visual Studio, puede ayudarle a entender cómo funciona el código del sombreador HLSL con datos de gráficos registrados durante una sesión de captura de Diagnóstico de gráficos.

Este es el depurador de HLSL:

Depurar HLSL mediante las ventanas Inspección y Pila de llamadas.

Introducción al depurador de HLSL

El depurador de HLSL puede ayudarle a entender los problemas que surgen en el código del sombreador. Depurar código HLSL en Visual Studio es similar a depurar código escrito en otros lenguajes, por ejemplo, en C++, C# o Visual Basic. Puede inspeccionar el contenido de las variables, establecer puntos de interrupción, ejecutar el código paso a paso y recorrer la pila de llamadas, exactamente igual que cuando depura otros lenguajes.

Sin embargo, como con las GPU se consigue un alto rendimiento cuando se ejecuta código del sombreador en cientos de subprocesos al mismo tiempo, el depurador de HLSL se ha diseñado para que funcione con las demás herramientas de Diagnóstico de gráficos para presentar toda la información de forma que tenga sentido. Diagnóstico de gráficos vuelve a crear los fotogramas capturados usando la información que se recopiló en un registro de gráficos; el depurador de HLSL no supervisa la ejecución de la GPU en tiempo real mientras ejecuta código de sombreador. Dado que un registro de gráficos contiene información suficiente para volver a crear cualquier parte del resultado y, como Diagnóstico de gráficos proporciona herramientas que pueden ayudarle a aislar el píxel y el evento exactos donde se ha producido el error, el depurador de HLSL solo tiene que simular el subproceso exacto del sombreador en el que está interesado. Esto significa que el trabajo del sombreador se puede simular en la CPU, donde se puede obtener una vista completa de sus mecanismos internos. Esto es lo que proporciona al depurador de HLSL una experiencia de depuración de tipo CPU.

Sin embargo, el depurador de HLSL tiene las siguientes limitaciones:

  • No es posible depurar una aplicación y su código del sombreador al mismo tiempo. Sin embargo, puede alternar entre ellos.

  • Puede agregar variables y registros a la ventana Inspección, pero no se admiten expresiones.

Sin embargo, el depurador de HLSL proporciona un uso mejor y más parecido a la depuración de tipo CPU que lo que sería posible de cualquier otra forma.

Editar y aplicar en el sombreador HLSL

El depurador del sombreador HLSL no admite Editar y continuar del mismo modo que el depurador de la CPU, porque el modelo de ejecución de la GPU no permite deshacer el estado del sombreador. En su lugar, el depurador HLSL admite Editar y aplicar, lo que le permite editar archivos de código fuente HLSL y, luego, elegir Aplicar para regenerar el marco y ver el efecto de los cambios. El código del sombreador modificado se almacena en un archivo independiente para preservar la integridad del archivo de origen HLSL del proyecto original, pero una vez que esté satisfecho con los cambios, puede elegir Copiar a… para copiar los cambios al proyecto. Con esta característica, puede iterar rápidamente sobre el código de sombreador que contiene errores y evitar los pasos de recompilación y captura del flujo de trabajo de depuración de HLSL, con el gran coste que conllevan.

Nota importanteImportante

El sombreado modificado no se aplica al Análisis de fotogramas.

Desensamblado de HLSL

El depurador del sombreador de HLSL proporciona una lista de ensamblados de sombreador HLSL a la derecha de la lista de códigos de origen HLSL.

Depurar código HLSL

Puede acceder al depurador de HLSL desde la ventana Etapas de canalización de gráficos o desde Historial de píxeles de gráfico.

Para iniciar el depurador de HLSL desde la ventana Etapas de canalización de gráficos

  1. En la ventana Etapas de canalización de gráficos, establezca la etapa de canalización asociada el sombreador que desea depurar.

  2. Debajo del título de la etapa de canalización, elija Iniciar depuración, que aparece como una pequeña flecha verde.

    NotaNota

    Este punto de entrada en el depurador HLSL solo depura el primer subproceso del sombreador para la etapa correspondiente, es decir, el primer vértice o píxel que se procesa.Puede utilizar Historial de píxeles de gráfico para acceder a otros subprocesos de estas etapas del sombreador.

Para iniciar el depurador de HLSL desde el historial de píxeles de gráfico

  1. En Historial de píxeles de gráfico, expanda la llamada de dibujo asociada al sombreador que desea depurar. Cada llamada de dibujo se puede corresponder con varios primitivos.

  2. En los detalles de la llamada de dibujo, expanda un primitivo cuya contribución de color resultante sugiera que hay un error en el código del sombreador. Si hay varios primitivos que sugieren un error, elija el primer primitivo para evitar que se acumulen los errores, lo que podría dificultar el diagnóstico del problema.

  3. En los detalles de primitivos, elija si desea depurar el Sombreador de vértices o el Sombreador de píxeles. Depure el sombreador de vértices si sospecha que el sombreador de píxeles es correcto pero está generando una contribución de color incorrecta porque el sombreador de vértices le está pasando constantes incorrectas. En caso contrario, depure el sombreador de píxeles.

    A la derecha del sombreador seleccionado, elija Iniciar depuración, que aparece como una pequeña flecha verde.

    NotaNota

    Este punto de entrada en el depurador de HLSL depura el subproceso del sombreador de píxeles que corresponde a la llamada de dibujo, primitivo y píxel elegidos, o los subprocesos del sombreador de vértices cuyos resultados están interpolados por la llamada de dibujo, primitivo y píxel elegidos.En el caso de los sombreadores de vértices, puede delimitar aún más el punto de entrada a un vértice concreto expandiendo los detalles del sombreador de vértices.

Para obtener ejemplos sobre cómo utilizar el depurador de HLSL para depurar errores del sombreador, vea Ejemplos de diagnóstico de gráficos o los tutoriales que se indican en la sección Vea también.

Vea también

Tareas

Tutorial: Objetos ausentes debido al sombreado de vértices

Tutorial: Depurar errores de representación debidos al sombreado

Tutorial: Usar diagnósticos de gráficos para depurar un sombreador de cálculo