Características de Direct3D 11

La guía de programación contiene información sobre cómo usar la canalización programable de Direct3D 11 para crear gráficos 3D en tiempo real para juegos y para aplicaciones científicas y de escritorio.

Sombreador de cálculo

Un sombreador de proceso es un sombreador programable diseñado para el procesamiento paralelo de datos de uso general. En otras palabras, los sombreadores de proceso permiten usar una GPU como procesador paralelo de uso general. El sombreador de proceso es similar a los otros sombreadores de canalización programables (como vértice, píxel, geometría) de la forma en que accede a las entradas y salidas. La tecnología de sombreador de proceso también se conoce como tecnología DirectCompute. Un sombreador de proceso se integra en Direct3D y es accesible a través de un dispositivo Direct3D. Puede compartir directamente recursos de memoria con sombreadores de gráficos mediante el dispositivo Direct3D. Sin embargo, no está conectado directamente a otras fases del sombreador.

Un sombreador de proceso está diseñado para aplicaciones de mercado masivo que realizan cálculos a velocidades interactivas, cuando el costo de la transición entre la API (y su pila de software asociada) y una CPU consumiría demasiada sobrecarga.

Un sombreador de proceso tiene su propio conjunto de estados. Un sombreador de proceso no tiene necesariamente una asignación forzada de 1 a 1 a los registros de entrada (como lo hace un sombreador de vértices) o los registros de salida (como lo hace el sombreador de píxeles). Se admiten algunas características del sombreador de gráficos, pero otras se han quitado para que se puedan agregar nuevas características específicas del sombreador de proceso.

Para admitir las características específicas del sombreador de proceso, ahora hay varios tipos de recursos nuevos disponibles, como búferes de lectura y escritura, texturas y búferes estructurados.

Consulte Información general sobre el sombreador de proceso para obtener información adicional.

Vinculación dinámica de sombreador

Los sistemas de representación deben tratar con una complejidad significativa cuando administran sombreadores, al tiempo que proporcionan la oportunidad de optimizar el código del sombreador. Esto se convierte en un desafío aún mayor porque los sombreadores deben admitir una variedad de materiales diferentes en una escena representada en varias configuraciones de hardware. Para abordar este desafío, los desarrolladores de sombreador a menudo han recurrido a uno de los dos enfoques generales. Han creado sombreadores de uso general, grandes y completos, que pueden ser utilizados por una amplia variedad de elementos de escena, lo que contrae algún rendimiento para la flexibilidad o ha creado sombreadores individuales para cada secuencia de geometría, tipo de material o combinación de tipos de luz necesarios.

Estos sombreadores de uso general grandes controlan este desafío mediante la recompilación del mismo sombreador con definiciones de preprocesador diferentes y el último método usa la potencia de desarrollador por fuerza bruta para lograr el mismo resultado. La explosión de permutación del sombreador a menudo ha sido un problema para los desarrolladores que ahora deben administrar miles de permutaciones de sombreador diferentes dentro de su canalización de juegos y recursos.

Direct3D 11 y el modelo de sombreador 5 presentan construcciones de lenguaje orientadas a objetos y proporcionan compatibilidad en tiempo de ejecución con la vinculación del sombreador para ayudar a los desarrolladores a programar sombreadores.

Consulte Vinculación dinámica para obtener información adicional.

Subprocesamiento múltiple

Muchas aplicaciones de gráficos están enlazadas a cpu debido a actividades costosas, como recorrido de gráfico de escenas, ordenación de objetos y simulaciones físicas. Dado que los sistemas de varios núcleos están cada vez más disponibles, Direct3D 11 ha mejorado su compatibilidad con multithreading para permitir una interacción eficaz entre varios subprocesos de CPU y las API de gráficos D3D11.

Direct3D 11 permite que la funcionalidad siguiente admita multithreading:

  • Ahora se crean objetos simultáneos en subprocesos independientes: la creación de funciones de punto de entrada que crean objetos sin subprocesos permite que muchos subprocesos creen objetos simultáneamente. Por ejemplo, una aplicación ahora puede compilar un sombreador o cargar una textura en un subproceso mientras se representa en otro.
  • Las listas de comandos se pueden crear en varios subprocesos: una lista de comandos es una secuencia grabada de comandos gráficos. Con Direct3D 11, puede crear listas de comandos en varios subprocesos de CPU, lo que permite el recorrido paralelo de la base de datos de escena o el procesamiento físico en varios subprocesos. Esto libera el subproceso de representación principal para enviar búferes de comandos al hardware.

Consulte MultiThreading para obtener más información.

Teselación

La teselación se puede usar para representar un único modelo con distintos niveles de detalle. Este enfoque genera un modelo más geométricomente preciso que depende del nivel de detalle necesario para una escena. Use la teselación en una escena en la que el nivel de detalle permite un modelo de geometría inferior, lo que reduce la demanda de ancho de banda de memoria consumido durante la representación.

En Direct3D, la teselación se implementa en la GPU para calcular una superficie curva más suave a partir de una revisión de entrada gruesa (menos detallada). Cada cara de parche (cuadrángulo o triángulo) se subdivide en caras triangulares más pequeñas que mejor se aproximan a la superficie que desea.

Para obtener información sobre cómo implementar la teselación en la canalización de gráficos, consulte Información general sobre teselación.

Lista completa de características

Esta es una lista completa de las características de Direct3D 11.

  • Puede ejecutar Direct3D 11 en hardware de nivel inferior especificando un nivel de característica al crear un dispositivo.

  • Puede realizar la teselación (consulte Información general sobre teselación) mediante los siguientes tipos de sombreador:

    • Sombreador de casco
    • Sombreador de dominios
  • Direct3D 11 admite multithreading (consulte MultiThreading)

    • Creación de recursos/sombreador/objetos multiproceso
    • Creación de la lista de visualización multiproceso
  • Direct3D 11 expande sombreadores con las siguientes características (vea Shader Model 5)

    • Recursos direccionables: texturas, búferes de constantes y muestreadores

    • Tipos de recursos adicionales, como búferes de lectura y escritura y texturas (consulte Nuevos tipos de recursos).

    • Subrutinas

    • Sombreador de proceso (consulte Información general del sombreador de proceso): sombreador que acelera los cálculos dividiendo el espacio de problemas entre varios subprocesos de software o grupos de subprocesos, y compartiendo datos entre registros de sombreador para reducir significativamente la cantidad de datos necesarios para introducirlos en un sombreador. Los algoritmos que el sombreador de proceso puede mejorar significativamente incluyen el procesamiento posterior, la animación, la física y la inteligencia artificial.

    • Sombreador de geometría (consulte Características del sombreador de geometría)

      • Creación de instancias: permite al sombreador de geometría generar un máximo de 1024 vértices, o cualquier combinación de instancias y vértices hasta 1024 (máximo de 32 instancias de 32 vértices cada uno).
    • Sombreador de píxeles

      • Cobertura como entrada de PS

      • Interpolación programable de entradas: el sombreador de píxeles puede evaluar los atributos dentro del píxel, en cualquier lugar de la cuadrícula de varias muestras

      • El muestreo centroide de atributos debe cumplir las siguientes reglas:

        • Si se tratan todas las muestras del primitivo, el atributo se evalúa en el centro de píxeles, independientemente de si el patrón de ejemplo tiene una ubicación de ejemplo en el centro de píxeles.

        • De lo contrario, el atributo se evalúa en el primer ejemplo cubierto, es decir, la muestra con el índice más bajo entre todos los índices de ejemplo. En esta situación, la cobertura de ejemplo se determina después de aplicar la operación AND lógica a la cobertura y al estado de rasterizador de máscara de ejemplo.

        • Si no se tratan ejemplos (por ejemplo, en píxeles auxiliares que se ejecutan fuera de los límites de un primitivo para rellenar marcas de 2 x 2 píxeles), el atributo se evalúa de una de las siguientes maneras:

          • Si el estado del rasterizador de máscara de ejemplo es un subconjunto de las muestras del píxel, la primera muestra que cubre el estado de rasterizador de máscara de ejemplo es el punto de evaluación.
          • De lo contrario, en la condición de máscara de ejemplo completa, el centro de píxeles es el punto de evaluación.
  • Direct3D 11 expande texturas (consulte Información general sobre texturas) con las siguientes características

    • Recopilación4

      • Compatibilidad con texturas de varios componentes: especifique un canal desde el que se va a cargar.
      • Compatibilidad con desplazamientos programables
    • Streaming

      • Abrazaderas de textura para limitar la carga previa de WDDM
    • Límites de textura de 16 000

    • Requerir 8 bits de precisión de subtexel y sub-mip en el filtrado de texturas

    • Nuevos formatos de compresión de textura (1 nuevo formato LDR y 1 nuevo formato HDR)

  • Direct3D 11 admite oDepth conservador: este algoritmo permite que un sombreador de píxeles compare el valor de profundidad por píxel del sombreador de píxeles con el del rasterizador. El resultado permite las operaciones de selección de profundidad tempranas al tiempo que mantiene la capacidad de generar la salida de un sombreador de píxeles.

  • Direct3D 11 admite memoria grande

    • Permitir recursos > de 4 GB
    • Mantenga los índices de recursos de 32 bits, pero el recurso sea mayor.
  • Direct3D 11 admite mejoras de salida de flujo

    • Salida de flujo direccionable
    • Aumentar el número de salidas de stream a 4
    • Cambiar todos los búferes de salida de flujo para que sean de varios elementos
  • Direct3D 11 admite el modelo de sombreador 5 (consulte El modelo de sombreador 5)

    • Dobles con desnormas
    • Instrucción de conjunto de bits de recuento
    • Búsqueda de la primera instrucción de conjunto de bits
    • Control de transporte/desbordamiento
    • Instrucciones de reversión de bits para FFT
    • Intrínseco de intercambio condicional
    • Resinfo en búferes
    • Precisión reducida recíproca
    • Instrucciones de conversión del sombreador: fp16 a fp32 y viceversa
    • Búfer estructurado, que es un nuevo tipo de búfer que contiene elementos estructurados.
  • Direct3D 11 admite vistas de galería de símbolos o profundidad de solo lectura

    • Deshabilita las escrituras en el elemento que es de solo lectura, permite usar la textura como entrada y para la selección de profundidad.
  • Direct3D 11 admite draw indirect: Direct3D 10 implementa DrawAuto, que toma contenido (generado por la GPU) y lo representa (en la GPU). Direct3D 11 generaliza DrawAuto para que un sombreador de proceso pueda llamarlo mediante DrawInstanced y DrawIndexedInstanced.

  • Direct3D 11 admite características varias

    • Ventanillas de punto flotante
    • Fijación de mapa mip por recurso
    • Sesgo de profundidad: este algoritmo actualiza el comportamiento del sesgo de profundidad mediante el estado de rasterizador. El resultado elimina los escenarios en los que el sesgo calculado podría ser NaN.
    • Límites de recursos: los índices de recursos siguen siendo necesarios para ser <= 32 bits, pero los recursos pueden tener más de 4 GB.
    • Precisión del rasterizador
    • Requisitos de MSAA
    • Contadores reducidos
    • Formato de 1 bits y filtro de texto quitados

Características agregadas en versiones anteriores

Para obtener la lista de las características agregadas en versiones anteriores, consulte los temas siguientes:

Novedades de Direct3D 11