¿Qué es Direct3D 12?

DirectX 12 presenta la próxima versión de Direct3D: la API de gráficos 3D en el corazón de DirectX. Direct3D 12 es más rápido y eficaz que cualquier versión anterior. Direct3D 12 permite escenas más enriquecidas, más objetos, efectos más complejos y un uso completo del hardware de GPU moderno.

¿Cómo puede Direct3D 12 ser mucho más rápido y más eficiente?

Direct3D 12 es único en que proporciona un nivel inferior de abstracción de hardware que las versiones anteriores, lo que le permite mejorar significativamente el escalado de CPU de varios núcleos del título (u otra aplicación). Para una cosa, con Direct3D 12, el título es responsable de su propia administración de memoria. Además, mediante Direct3D 12, los títulos y las aplicaciones se benefician de una sobrecarga reducida de GPU a través de características como colas de comandos y listas, tablas de descriptores y objetos de estado de canalización concisos.

Direct3D 12 y Direct3D 11.3 presentan un conjunto de nuevas características para la canalización de representación.

  • Rasterización conservadora para habilitar la detección de aciertos confiable.
  • Recursos en mosaico de volumen para permitir que los recursos tridimensionales transmitidos se traten como si todos estuvieran en memoria de vídeo.
  • Vistas ordenadas por rasterizador para habilitar la representación de transparencia confiable.
  • Establecer la referencia de galería de símbolos dentro de un sombreador para habilitar sombras especiales y otros efectos.
  • Asignación de texturas mejorada y cargas de vista de acceso sin ordenar (UAV) con tipo.

¿Qué profundidad debo invertir en Direct3D 12?

Direct3D 12 proporciona cuatro ventajas principales para los desarrolladores de gráficos (en comparación con Direct3D 11).

  • Se ha reducido enormemente la sobrecarga de CPU.
  • Consumo de energía significativamente reducido.
  • Hasta (aproximadamente) mejora del 20 % en la eficiencia de la GPU.
  • Desarrollo multiplataforma para un dispositivo Windows 10 (PC, tableta, consola, móvil).

Direct3D 12 está diseñado para programadores de gráficos avanzados que se van a usar. Requiere una gran experiencia en gráficos y un alto nivel de ajuste. Direct3D 12 está diseñado para hacer un uso completo de varios subprocesos, una sincronización cuidadosa de CPU/GPU y la transición y reutilización de recursos de un propósito a otro. Estas son técnicas que requieren una cantidad considerable de aptitudes de programación de nivel de memoria.

Otra ventaja que tiene Direct3D 12 es su superficie de API pequeña. Hay alrededor de 200 funciones; y aproximadamente un tercio de ellos hacen todo el trabajo pesado. Esto significa que, como desarrollador de gráficos, debe ser capaz de educarse sobre el conjunto completo de API sin tener que memorizar demasiados nombres de API.

Direct3D 11 sigue siendo una opción viable junto con Direct3D 12. Muchas de las nuevas características de representación de Direct3D 12 están disponibles en Direct3D 11.3. Direct3D 11.3 es una API de motor gráfico de bajo nivel; y Direct3D 12 va aún más profundo.

Hay al menos dos maneras de que el equipo de desarrollo pueda abordar un título de Direct3D 12.

Uso exclusivo de Direct3D 12

Para un proyecto que aproveche las ventajas definitivas de todas las ventajas de Direct3D 12, debe desarrollar un motor direct3D 12 altamente personalizado desde cero.

Si, como desarrollador de gráficos, comprende el uso y el reutilización de recursos dentro de los títulos, y puede aprovecharlo minimizando la carga y la copia, puede desarrollar y personalizar un motor altamente eficaz para esos títulos. Las mejoras de rendimiento podrían ser muy considerables, liberando tiempo de CPU para aumentar el número de llamadas de dibujo y, por tanto, agregar más luster a los gráficos.

La inversión de programación es significativa y debe considerar la depuración e instrumentación del proyecto desde el principio. Los subprocesos, la sincronización y otros errores de tiempo pueden ser complicados.

Uso de Direct3D 12 en concierto con Direct3D 11

Un enfoque a corto plazo sería abordar cuellos de botella conocidos en el título de Direct3D 11. Puede abordarlos mediante la interoperabilidad de Direct3D 12 o las técnicas D3D11On12 , que permiten que las dos versiones de API funcionen juntas. Este enfoque minimiza los cambios necesarios en un motor gráfico de Direct3D 11 existente. Sin embargo, las ganancias de rendimiento se limitarán al alivio del cuello de botella que direcciona el código de Direct3D 12.

Vídeos de Microsoft DirectX 12 (y educación gráfica)

Educación mejorada para desarrolladores de gráficos. Estos vídeos tratan temas como modos de presentación, portabilidad a DirectX 12, rasterización conservadora, herramientas de gráficos, Ángulo, Win2D y eventos como GDC, Build, etc. El contenido técnico de DirectX 12 está precedido de DirectX 12. Ven aquí para aprender sugerencias y trucos directamente desde el equipo de características de Direct3D 12. Queremos ayudarte a usar nuestras últimas versiones y herramientas para que tu juego sea lo mejor que pueda ser!

Conclusión

Direct3D 12 es todo sobre el rendimiento dramático del motor de gráficos. Se ha escalado horizontalmente la facilidad de desarrollo, las construcciones de alto nivel y la compatibilidad con el compilador para habilitarlo. El soporte técnico del controlador y la facilidad de depuración permanecen a la par con Direct3D 11.

Direct3D 12 es un nuevo territorio. Territorio que está esperando a que el experto inquisitivo venga y explore.