Articulo de referencia

Direct3D

Direct3D es una interfaz de programación de aplicaciones (API) gráfica para Microsoft Windows . Parte de DirectX , Direct3D se utiliza para renderizar gráficos tridimensionales ...

Direct3D es una interfaz de programación de aplicaciones (API) gráfica para Microsoft Windows . Parte de DirectX , Direct3D se utiliza para renderizar gráficos tridimensionales en aplicaciones donde el rendimiento es importante, como los juegos. Direct3D utiliza la aceleración por hardware si está disponible en la tarjeta gráfica , lo que permite la aceleración por hardware de toda la canalización de renderizado 3D o incluso solo una aceleración parcial. Direct3D expone las capacidades gráficas avanzadas del hardware gráfico 3D, incluyendo Z-buffering , [ 1 ] W-buffering, [ 2 ] stencil buffering , suavizado espacial , mezcla alfa , mezcla de color, mipmapping , mezcla de texturas, [ 3 ] [ 4 ] recorte , culling , efectos atmosféricos, mapeo de texturas con corrección de perspectiva, sombreadores HLSL programables [ 5 ] y efectos. [ 6 ] La integración con otras tecnologías DirectX permite que Direct3D ofrezca características como mapeo de video, renderizado 3D por hardware en planos de superposición 2D e incluso sprites , lo que permite el uso de gráficos 2D y 3D en vínculos de medios interactivos.

Direct3D contiene muchos comandos para la renderización de gráficos 3D por computadora ; sin embargo, desde la versión 8, Direct3D ha reemplazado al marco DirectDraw y también se ha hecho cargo de la renderización de gráficos 2D . [ 7 ] Microsoft se esfuerza por actualizar continuamente Direct3D para admitir la última tecnología disponible en tarjetas gráficas 3D. Direct3D ofrece emulación de software de vértices completa , pero no emulación de software de píxeles para características no disponibles en el hardware. Por ejemplo, si el software programado con Direct3D requiere sombreadores de píxeles y la tarjeta de video en la computadora del usuario no admite esa característica, Direct3D no la emulará, aunque calculará y renderizará los polígonos y texturas de los modelos 3D, aunque con una calidad y rendimiento generalmente degradados en comparación con el equivalente de hardware. La API incluye un Rasterizador de Referencia (o dispositivo REF), que emula una tarjeta gráfica genérica en software, aunque es demasiado lento para la mayoría de las aplicaciones 3D en tiempo real y normalmente solo se usa para depuración. Un nuevo rasterizador de software en tiempo real, WARP , diseñado para emular el conjunto completo de funciones de Direct3D 10.1, se incluye con Windows 7 y Windows Vista Service Pack 2 con la Actualización de plataforma; se dice que su rendimiento está a la par con las tarjetas 3D de gama baja en CPU multinúcleo. [ 8 ]

Como parte de DirectX , Direct3D está disponible para Windows 95 y versiones posteriores, y constituye la base de la API de gráficos vectoriales en las distintas versiones de las consolas Xbox . La capa de compatibilidad Wine , una reimplementación de software libre de varias API de Windows, incluye una implementación de Direct3D.

El principal competidor de Direct3D es OpenGL de Khronos y su sucesor, Vulkan . Fahrenheit fue un intento de Microsoft y SGI por unificar OpenGL y Direct3D en la década de 1990, pero finalmente fue cancelado.

Descripción general

  • Direct3D 6.0 – Multitexturizado
  • Direct3D 7.0 – Transformación, recorte e iluminación por hardware (TCL/T&L), DXVA 1.0
  • Direct3D 8.0 – Pixel Shader 1.0/1.1 y Vertex Shader 1.0/1.1 [ 9 ]
  • Direct3D 8.1 – Pixel Shader 1.2/1.3/1.4 [ 10 ] [ 11 ] [ 12 ]
  • Direct3D 9.0 – Shader Model 2.0 (Pixel Shader 2.0 y Vertex Shader 2.0)
  • Direct3D 9.0a – Shader Model 2.0a (Pixel Shader 2.0a y Vertex Shader 2.0a)
  • Direct3D 9.0b – Pixel Shader 2.0b, H.264
  • Direct3D 9.0c: última versión compatible con Windows 98 / ME (versiones iniciales) [ 13 ] y con Windows 2000 / XP (todas las versiones); [ 14 ] Shader Model 3.0 (Pixel Shader 3.0 y Vertex Shader 3.0)
  • Direct3D 9Ex – Solo para Windows Vista ; Direct3D 9.0c, Shader Model 3.0, Windows Graphics Foundation 1.0, GPGPU , DXVA 2.0
  • Direct3D 10.0 – Windows Vista/Windows 7; Shader Model 4.0 , Windows Graphics Foundation 2.0
  • Direct3D 10.1 – Windows Vista SP1/Windows 7; Shader Model 4.1, Windows Graphics Foundation 2.1
  • Direct3D 11.0 – Windows Vista SP2/ Windows 7 ; Shader Model 5.0, Teselación, Renderizado multihilo, Shaders de cómputo , implementados por hardware y software que ejecutan Direct3D 9/10/10.1
  • Direct3D 11.1 – Windows 8 (compatible parcialmente también con Windows 7 SP1); Renderizado 3D estereoscópico, H.265
  • Direct3D 11.2 – Windows 8.1 ; Recursos en mosaico
  • Direct3D 11.3 – Windows 10
  • Direct3D 12.0 – Windows 10 ; API de renderizado de bajo nivel , Shader Model 5.1 y 6.0
  • Direct3D 12.1 – Windows 10; DirectX Raytracing
  • Direct3D 12.2 – Windows 10; DirectX 12 Ultimate

Direct3D 2.0 y 3.0

En 1992, Servan Keondjian, Doug Rabson y Kate Seekings fundaron una empresa llamada RenderMorphics, que desarrolló una API de gráficos 3D llamada Reality Lab , la cual se utilizó en software de imágenes médicas y CAD. [ 15 ] Se lanzaron dos versiones de esta API. [ 16 ] Microsoft compró RenderMorphics en febrero de 1995, incorporando a su personal para implementar un motor de gráficos 3D para Windows 95.  [ 17 ] La primera versión de Direct3D se lanzó en DirectX 2.0 (2 de junio de 1996) y DirectX 3.0 (26 de septiembre de 1996).

Direct3D implementó inicialmente una API 3D de " modo inmediato " y sobre ella una API 3D de " modo retenido ". [ 18 ] Ambos tipos de API ya se ofrecían con la segunda versión de Reality Lab antes del lanzamiento de Direct3D. [ 16 ] Al igual que otras API de DirectX, como DirectDraw , ambas se basaban en COM . La API de modo retenido era una API de grafo de escena que tuvo poca adopción. Los desarrolladores de juegos clamaban por un control más directo de las actividades del hardware del que podía proporcionar el modo retenido de Direct3D. Solo dos juegos que vendieron un volumen significativo, Lego Island y Lego Rock Raiders , se basaban en el modo retenido de Direct3D, por lo que Microsoft no actualizó la API de modo retenido después de DirectX 3.0.

Para DirectX 2.0 y 3.0, el modo inmediato de Direct3D utilizaba un modelo de programación de "búfer de ejecución" que Microsoft esperaba que los fabricantes de hardware soportaran directamente. Los búferes de ejecución estaban diseñados para asignarse en la memoria del hardware y ser procesados ​​por este para realizar la renderización 3D. Sin embargo, en aquel momento se consideraban extremadamente difíciles de programar, lo que dificultó la adopción de la nueva API y provocó peticiones para que Microsoft adoptara OpenGL como la API oficial de renderización 3D tanto para juegos como para aplicaciones de estaciones de trabajo. [ 19 ]

En lugar de adoptar OpenGL como API para juegos, Microsoft optó por seguir mejorando Direct3D, no solo para ser competitivo con OpenGL, sino para competir de manera más efectiva con otras API propietarias como Glide de 3dfx .

Desde el principio, el modo inmediato también admitía la representación en mosaico de Talisman con los métodos BeginScene/EndScene de la interfaz IDirect3DDevice.

Direct3D 4.0

No se planificaron cambios sustanciales en Direct3D para DirectX 4.0 , cuyo lanzamiento estaba previsto para finales de 1996 y que posteriormente se canceló. [ 20 ]

Direct3D 5.0

En diciembre de 1996, un equipo en Redmond se hizo cargo del desarrollo del modo inmediato de Direct3D, mientras que el equipo de RenderMorphics, con sede en Londres, continuó trabajando en el modo retenido. El equipo de Redmond añadió la API DrawPrimitive, que eliminó la necesidad de que las aplicaciones construyeran búferes de ejecución, haciendo que Direct3D se pareciera más a otras API de renderizado en modo inmediato como Glide y OpenGL . La primera versión beta de DrawPrimitive se lanzó en febrero de 1997, [ 21 ] y la versión final se lanzó con DirectX 5.0 en agosto de 1997. [ 22 ]

Además de introducir una API de modo inmediato más fácil de usar, DirectX 5.0 añadió el método SetRenderTarget que permitió a los dispositivos Direct3D escribir su salida gráfica en una variedad de superficies DirectDraw. [ 23 ]

Direct3D 6.0

DirectX 6.0 (lanzado en agosto de 1998) introdujo numerosas características para cubrir el hardware contemporáneo (como multitextura [ 24 ] y búferes de plantilla ), así como canalizaciones de geometría optimizadas para x87 , SSE y 3DNow! y administración de texturas opcional para simplificar la programación. [ 25 ] Direct3D 6.0 también incluyó soporte para características que Microsoft había licenciado de proveedores de hardware específicos para su inclusión en la API, a cambio de la ventaja de tiempo de comercialización para el proveedor de la licencia. El soporte para compresión de texturas S3 fue una de esas características, renombrada como DXTC para fines de inclusión en la API. Otra fue la técnica de mapeo de relieve propietaria de TriTech . Microsoft incluyó estas características en DirectX, luego las agregó a los requisitos necesarios para que los controladores obtuvieran un logotipo de Windows para fomentar una adopción generalizada de las características en el hardware de otros proveedores.

Una actualización menor de DirectX 6.0 llegó con la actualización DirectX 6.1 de febrero de 1999. Además de agregar soporte para DirectMusic por primera vez, esta versión mejoró el soporte para las extensiones 3D de Intel Pentium III . [ 26 ]

Un memorándum confidencial enviado en 1997 [ 27 ] muestra que Microsoft planeaba anunciar soporte completo para Talisman en DirectX 6.0, pero la API terminó siendo cancelada (consulte la página de Microsoft Talisman para obtener más detalles).

Direct3D 7.0

DirectX 7.0 (lanzado en septiembre de 1999) introdujo el formato de textura .dds [ 28 ] y soporte para aceleración de hardware de transformación e iluminación [ 29 ] (disponible por primera vez en hardware de PC con GeForce 256 de Nvidia ), así como la capacidad de asignar búferes de vértices en memoria de hardware. Los búferes de vértices de hardware representan la primera mejora sustancial sobre OpenGL en la historia de DirectX. Direct3D 7.0 también aumentó el soporte de DirectX para hardware de multitexturizado y representa la cúspide de las características de canalización de multitexturizado de función fija: aunque potente, era tan complicado de programar que se necesitaba un nuevo modelo de programación para exponer las capacidades de sombreado del hardware gráfico. Direct3D 7.0 también introdujo características DXVA .

Direct3D 8.0

DirectX 8.0 (lanzado en noviembre de 2000) introdujo la programabilidad en forma de sombreadores de vértices y píxeles , lo que permitió a los desarrolladores escribir código sin preocuparse por estados de hardware superfluos. [ 30 ] La complejidad de los programas de sombreado dependía de la complejidad de la tarea, y el controlador de pantalla compilaba esos sombreadores en instrucciones que el hardware podía entender. Direct3D 8.0 y sus capacidades de sombreado programable fueron la primera gran ruptura con una arquitectura de función fija al estilo OpenGL, donde el dibujo está controlado por una máquina de estados compleja. Direct3D 8.0 también eliminó DirectDraw como una API separada. [ 31 ] [ 32 ] Direct3D englobó todas las llamadas restantes a la API de DirectDraw que aún se necesitaban para el desarrollo de aplicaciones, como Present(), la función utilizada para mostrar los resultados de renderizado.

Direct3D no se consideraba fácil de usar, pero a partir de la versión 8.1 de DirectX, se resolvieron muchos problemas de usabilidad. Direct3D 8 incluía muchas funciones potentes de gráficos 3D, como sombreadores de vértices , sombreadores de píxeles , niebla , mapeo de relieve y mapeo de texturas .

Direct3D 9

Direct3D 9.0 [ 33 ] (lanzado en diciembre de 2002) agregó una nueva versión del lenguaje de sombreado de alto nivel [ 34 ] [ 35 ] soporte para formatos de textura de punto flotante, objetivos de renderizado múltiples (MRT), [ 36 ] texturas de múltiples elementos, [ 37 ] búsquedas de texturas en el sombreador de vértices y técnicas de búfer de plantilla. [ 38 ]

Direct3D 9Ex

Direct3D 9Ex [ 39 ] (anteriormente versión 9.0L, donde "L" significa Longhorn, el nombre en clave de Windows Vista), una extensión disponible solo en Windows Vista y versiones posteriores, permite el uso de las ventajas que ofrece el Modelo de controlador de pantalla de Windows (WDDM) de Windows Vista y se utiliza para Windows Aero . [ 40 ] Direct3D 9Ex, junto con los controladores WDDM de la clase DirectX 9, permite que la memoria gráfica se virtualice y se pagina en la memoria del sistema, permite que las operaciones gráficas se interrumpan y se programen, y permite que las superficies de DirectX se compartan entre procesos. [ 41 ] Direct3D 9Ex era conocido anteriormente como la versión 1.0 de Windows Graphics Foundation (WGF).

Mejoras de Direct3D 9Ex - Aplicaciones Win32

Direct3D 10

Windows Vista incluye una actualización importante de la API Direct3D. Originalmente llamada WGF 2.0 (Windows Graphics Foundation 2.0), luego DirectX 10 y DirectX Next, Direct3D 10 [ 42 ] presenta un modelo de sombreado actualizado 4.0 y capacidad de interrupción opcional para programas de sombreado. [ 41 ] En este modelo, los sombreadores siguen constando de etapas fijas como en versiones anteriores, pero todas las etapas admiten una interfaz casi unificada, así como un paradigma de acceso unificado para recursos como texturas y constantes de sombreado. El lenguaje en sí se ha extendido para ser más expresivo, incluyendo operaciones con enteros, un número de instrucciones mucho mayor y construcciones de lenguaje más parecidas a C. Además de las etapas de sombreado de vértices y píxeles disponibles anteriormente , la API incluye una etapa de sombreado de geometría que rompe con el antiguo modelo de un vértice de entrada/un vértice de salida, para permitir que la geometría se genere desde dentro de un sombreador, lo que permite que la geometría compleja sea generada completamente por el hardware gráfico.

Windows XP y versiones anteriores no son compatibles con DirectX  10.0 y versiones posteriores. Además, Direct3D  10 dejó de ser compatible con la API de modo retenido, que había formado parte de Direct3D desde sus inicios, lo que hizo que Windows Vista fuera incompatible con los juegos 3D que habían utilizado la API de modo retenido como motor de renderizado . [ 43 ]

A diferencia de las versiones anteriores de la API, Direct3D 10 ya no utiliza bits de capacidad (o "caps") para indicar qué características son compatibles con un dispositivo gráfico determinado. En su lugar, define un estándar mínimo de capacidades de hardware que debe admitir un sistema de visualización para ser  compatible con Direct3D 10. Esto supone un cambio significativo, cuyo objetivo es simplificar el código de las aplicaciones eliminando el código de comprobación de capacidades y los casos especiales basados ​​en la presencia o ausencia de capacidades específicas.

Debido a que el hardware Direct3D  10 era relativamente escaso tras el lanzamiento inicial de Windows Vista y a la enorme base instalada de  tarjetas gráficas no compatibles con Direct3D 10, los primeros  juegos compatibles con Direct3D 10 aún ofrecían rutas de renderizado Direct3D 9. Ejemplos de estos títulos son juegos originalmente escritos para Direct3D  9 y portados a Direct3D  10 después de su lanzamiento, como Company of Heroes , o juegos desarrollados originalmente para Direct3D  9 con una  ruta Direct3D 10 adaptada posteriormente durante su desarrollo, como Hellgate: London o Crysis . El SDK de DirectX  10 estuvo disponible en febrero de 2007. [ 44 ]

Direct3D 10.0

El hardware de nivel Direct3D  10.0 debe admitir las siguientes características: la capacidad de procesar primitivas completas en la nueva etapa de sombreado de geometría, la capacidad de enviar datos de vértices generados por la canalización a la memoria utilizando la etapa de salida de flujo, compatibilidad con alfa a cobertura de muestreo múltiple, lectura de una superficie de profundidad/plantilla o un recurso de muestreo múltiple una vez que ya no esté vinculado como destino de renderizado, integración completa de HLSL: todos  los sombreadores de Direct3D 10 están escritos en HLSL e implementados con el núcleo de sombreado común, operaciones de sombreador enteras y a nivel de bits, organización del estado de la canalización en 5 objetos de estado inmutables, organización de constantes de sombreador en búferes constantes, mayor número de destinos de renderizado, texturas y muestreadores, sin límite de longitud de sombreador, nuevos tipos de recursos y formatos de recursos, [ 45 ] capas de tiempo de ejecución/API en capas, [ 46 ] opción de realizar intercambio de material por primitiva y configuración utilizando un sombreador de geometría, mayor generalización del acceso a recursos utilizando una vista, bits de capacidad de hardware heredados eliminados (caps).

  • Las tuberías fijas [ 47 ] se están eliminando en favor de tuberías totalmente programables (a menudo denominadas arquitectura de tuberías unificada), que pueden programarse para emular las mismas.
  • Nuevo objeto de estado para permitir (principalmente) que la CPU cambie de estado de manera eficiente.
  • El modelo de sombreado unificado mejora la programabilidad de la canalización gráfica . Añade instrucciones para cálculos enteros y a nivel de bits.
  • El núcleo de sombreado común [ 48 ] proporciona un conjunto completo de operaciones enteras y a nivel de bits de 32 bits compatibles con IEEE. Estas operaciones permiten una nueva clase de algoritmos en el hardware gráfico; algunos ejemplos incluyen técnicas de compresión y empaquetado, transformadas rápidas de Fourier (FFT) y control de flujo de programas de campos de bits.
  • Los sombreadores de geometría , [ 49 ] [ 50 ] que funcionan sobre triángulos adyacentes que forman una malla .
  • Los arreglos de texturas permiten intercambiar texturas en la GPU sin intervención de la CPU.
  • La renderización basada en predicados permite ignorar las llamadas de dibujo en función de ciertas condiciones. Esto posibilita la eliminación rápida de oclusiones , lo que impide que los objetos se rendericen si no son visibles o están demasiado lejos para serlo.
  • Compatibilidad con instanciación 2.0 , que permite renderizar múltiples instancias de mallas similares, como ejércitos, hierba o árboles, en una sola llamada de dibujo, reduciendo el tiempo de procesamiento necesario para múltiples objetos similares al de uno solo. [ 51 ]

Direct3D 10.1

Direct3D 10.1 [ 52 ] fue anunciado por Microsoft poco después del lanzamiento de Direct3D 10 como una actualización menor. La especificación se finalizó con el lanzamiento del SDK de DirectX en noviembre de 2007 y el entorno de ejecución se incluyó en Windows Vista SP1 , disponible desde mediados de marzo de 2008.

Direct3D 10.1 establece algunos estándares más de calidad de imagen para los proveedores de gráficos y brinda a los desarrolladores más control sobre la calidad de la imagen. [ 53 ] [ 54 ] Las características incluyen un control más fino sobre el suavizado (tanto multisampling como supersampling con sombreado por muestra y control de la aplicación sobre la posición de la muestra) y más flexibilidades para algunas de las características existentes (matrices de cubemap y modos de fusión independientes). El hardware de nivel Direct3D 10.1 debe admitir las siguientes características: El multisampling se ha mejorado para generalizar la transparencia basada en la cobertura y hacer que el multisampling funcione de manera más efectiva con la renderización de múltiples pasadas, mejor comportamiento de eliminación: las caras de área cero se eliminan automáticamente; Esto afecta solo a la representación de la estructura alámbrica, modos de mezcla independientes por destino de renderizado, nueva ejecución de sombreador de píxeles de frecuencia de muestreo con rasterización primitiva, mayor ancho de banda de la etapa de canalización, ahora se pueden usar superficies MSAA de color y profundidad/plantilla con CopyResource como origen o destino, MultisampleEnable solo afecta a la rasterización de líneas (los puntos y triángulos no se ven afectados) y se utiliza para elegir un algoritmo de dibujo de líneas. Esto significa que algunas rasterizaciones de muestreo múltiple de Direct3D 10 ya no son compatibles, Muestreo de texturas: las instrucciones sample_c y sample_c_lz están definidas para funcionar con Texture2DArrays y TextureCubeArrays, utilice el miembro Location (el componente alfa) para especificar un índice de matriz, compatibilidad con TextureCubeArrays.

  • Filtrado obligatorio de punto flotante de 32 bits .
  • Reglas de punto flotante: Utiliza las mismas reglas IEEE-754 para punto flotante, EXCEPTO que las operaciones de punto flotante de 32 bits se han ajustado para producir un resultado con una precisión de 0,5 unidades en la última posición (0,5 ULP) respecto al resultado de precisión infinita. Esto se aplica a la suma, la resta y la multiplicación (precisión de 0,5 ULP para la multiplicación y de 1,0 ULP para el recíproco).
  • Formatos: La precisión de la mezcla float16 ha aumentado a 0,5 ULP. La mezcla también es necesaria para los formatos UNORM16/SNORM16/SNORM8.
  • Conversión de formato al copiar entre ciertos recursos tipados y preestructurados de 32/64/128 bits y representaciones comprimidas del mismo ancho de bits.
  • Soporte obligatorio para 4x MSAA para todos los destinos de renderizado excepto R32G32B32A32 y R32G32B32. [ 55 ]
  • Modelo de sombreado 4.1

A diferencia de Direct3D 10, que requería estrictamente hardware e interfaces de controlador de la clase Direct3D 10, el entorno de ejecución de Direct3D 10.1 puede ejecutarse en hardware Direct3D 10.0 utilizando un concepto de " niveles de características ", [ 56 ] [ 57 ] [ 58 ] pero las nuevas características son compatibles exclusivamente con hardware nuevo que expone el nivel de características 10_1.

En junio de 2008, el único hardware compatible con Direct3D 10.1 disponible eran las series Radeon HD 3000 y Radeon HD 4000 de ATI ; en 2009, se les unieron las GPU Chrome 430/440GT de S3 Graphics y algunos modelos de gama baja de la serie GeForce 200 de Nvidia . En 2011, los chipsets de Intel comenzaron a ser compatibles con Direct3D 10.1 con la introducción de Intel HD Graphics 2000 (GMA HD).

Direct3D 11

Direct3D 11 [ 59 ] se lanzó como parte de Windows 7. Se presentó en Gamefest 2008 el 22 de julio de 2008 y se demostró en la conferencia técnica Nvision 08 el 26 de agosto de 2008. [ 60 ] [ 61 ] La vista previa técnica de Direct3D 11 se incluyó en la versión de noviembre de 2008 del SDK de DirectX. [ 62 ] AMD presentó hardware funcional de DirectX11 en Computex el 3 de junio de 2009, ejecutando algunas muestras del SDK de DirectX 11. [ 63 ]

El entorno de ejecución de Direct3D 11 puede ejecutarse en hardware y controladores de la clase Direct3D 9 y 10.x utilizando el concepto de "niveles de características" , ampliando la funcionalidad introducida por primera vez en el entorno de ejecución de Direct3D 10.1. [ 56 ] [ 64 ] [ 65 ] Los niveles de características permiten a los desarrolladores unificar la canalización de renderizado bajo la API de Direct3D 11 y utilizar mejoras de la API, como una mejor administración de recursos y multihilo, incluso en tarjetas de nivel básico, aunque las características avanzadas, como nuevos modelos de sombreado y etapas de renderizado, solo estarán expuestas en hardware de nivel superior. [ 64 ] [ 66 ] Hay tres perfiles "10 Nivel 9" que encapsulan varias capacidades de las tarjetas DirectX 9.0a populares, y Direct3D 10, 10.1 y 11 tienen cada uno un nivel de características separado; cada nivel superior es un superconjunto estricto de un nivel inferior. [ 67 ]

La teselación se consideró inicialmente para Direct3D 10, pero posteriormente se descartó. Las GPU como la Radeon R600 cuentan con un motor de teselación que puede utilizarse con Direct3D 9/10/10.1 [ 68 ] [ 69 ] [ 70 ] y OpenGL, [ 71 ] pero no es compatible con Direct3D 11 (según Microsoft). El hardware gráfico más antiguo, como Radeon 8xxx y GeForce 3/4, tenía soporte para otra forma de teselación (parches RT, parches N), pero esas tecnologías nunca se utilizaron de forma sustancial. Por lo tanto, se eliminó su soporte en el hardware más reciente.

Microsoft también ha dado pistas sobre otras características, como la transparencia independiente del orden , que nunca fue expuesta por la API de Direct3D, pero que era compatible casi de forma transparente con el hardware Direct3D inicial, como la línea de chips PowerVR de Videologic.

Direct3D 11.0

Las características de Direct3D 11.0 incluyen: Compatibilidad con Shader Model 5.0, enlace dinámico de sombreadores, recursos direccionables, tipos de recursos adicionales, [ 72 ] subrutinas, instanciación de geometría, cobertura como entrada de sombreador de píxeles, interpolación programable de entradas, nuevos formatos de compresión de texturas (1 nuevo formato LDR y 1 nuevo formato HDR), recortes de texturas para limitar la precarga de WDDM, requieren 8 bits de precisión de subtexel y submip en el filtrado de texturas, límites de textura de 16K, Gather4 (compatibilidad con texturas multicomponente, compatibilidad con desplazamientos programables), DrawIndirect, oDepth conservador, sesgo de profundidad, [ 73 ] [ 74 ] salida de flujo direccionable, recorte de mipmap por recurso, ventanas gráficas de punto flotante, instrucciones de conversión de sombreadores, multihilo mejorado.

  • Shader Model 5 [ 75 ]
  • Compatibilidad con Tessellation [ 76 ] y Tessellation Shaders [ 77 ] para aumentar en tiempo de ejecución el número de polígonos visibles de un modelo poligonal de bajo detalle.
  • Renderizado multihilo : permite renderizar el mismo objeto de dispositivo Direct3D desde diferentes hilos para CPU multinúcleo.
  • Shaders de cómputo : que expone la canalización de sombreadores para tareas no gráficas como el procesamiento de flujos y la aceleración de la física, similar en espíritu a lo que logran OpenCL , Nvidia CUDA , ATI Stream y HLSL Shader Model 5, entre otros. [ 60 ] [ 61 ]
  • Soporte obligatorio para 4x MSAA para todos los destinos de renderizado y 8x MSAA para todos los formatos de destino de renderizado excepto los formatos R32G32B32A32. [ 55 ]

Otras características destacables son la incorporación de dos nuevos algoritmos de compresión de texturas para un empaquetado más eficiente de texturas de alta calidad y HDR/alfa, y una caché de texturas ampliada .

Presentado por primera vez en la versión Release Candidate , Windows 7 integra la primera compatibilidad con Direct3D 11. La actualización de plataforma para Windows Vista incluye el entorno de ejecución Direct3D 11 completo y la actualización DXGI 1.1, así como otros componentes relacionados de Windows 7 como WARP , Direct2D , DirectWrite y WIC . [ 78 ] [ 79 ]

Direct3D 11.1

Direct3D 11.1 [ 80 ] [ 81 ] es una actualización de la API que viene con Windows 8. [ 82 ] [ 83 ] El entorno de ejecución de Direct3D en Windows 8 incluye DXGI 1.2 [ 84 ] y requiere nuevos controladores de dispositivo WDDM 1.2 [ 85 ] . [ 86 ] La versión preliminar del SDK de Windows para Windows 8 Developer Preview se publicó el 13 de septiembre de 2011.

La nueva API incluye seguimiento de sombreadores y mejoras del compilador HLSL, compatibilidad con tipos de datos escalares HLSL de precisión mínima, [ 87 ] UAVs (Vistas de acceso no ordenado) en cada etapa de la canalización, rasterización independiente del objetivo (TIR), opción para asignar SRVs de búferes dinámicos con NO_OVERWRITE, procesamiento de sombreadores de recursos de vídeo, opción para usar operaciones lógicas en un destino de renderizado, opción para vincular un subrango de un búfer constante a un sombreador y recuperarlo, opción para crear búferes constantes más grandes de los que un sombreador puede acceder, opción para descartar recursos y vistas de recursos, opción para cambiar subrecursos con nuevas opciones de copia, opción para forzar el recuento de muestras para crear un estado de rasterizador, opción para borrar total o parcialmente una vista de recurso, opción para usar Direct3D en procesos de Sesión 0, opción para especificar planos de recorte de usuario en HLSL en el nivel de características 9 y superior, compatibilidad con el búfer de sombras en el nivel de características 9, compatibilidad con la reproducción de vídeo, compatibilidad extendida con recursos Texture2D compartidos e intercambio sobre la marcha entre Direct3D 10 y 11 contextos y niveles de características. Direct3D 11.1 incluye el nuevo nivel de características 11_1, que trae actualizaciones menores al lenguaje de sombreado, como búferes constantes más grandes e instrucciones de doble precisión opcionales, así como modos de mezcla mejorados y soporte obligatorio para formatos de color de 16 bits para mejorar el rendimiento de las GPU de nivel básico como Intel HD Graphics . [ 86 ] [ 88 ] WARP se ha actualizado para admitir el nivel de características 11_1.

La actualización de plataforma para Windows 7 incluye un conjunto limitado de características de Direct3D 11.1, aunque no están presentes los componentes que dependen de WDDM 1.2, como el nivel de características 11_1 y sus API relacionadas, o el búfer cuádruple para la representación estereoscópica . [ 89 ] [ 90 ]

Direct3D 11.2

Direct3D 11.2 [ 91 ] [ 92 ] [ 93 ] se incluyó con Windows 8.1 . [ 94 ] [ 95 ] Las nuevas características de hardware requieren DXGI 1.3 [ 96 ] con controladores WDDM 1.3 [ 97 ] e incluyen modificación y enlace de sombreadores en tiempo de ejecución, gráfico de enlace de funciones (FLG), compilador HLSL integrado , opción para anotar comandos gráficos. [ 98 ] Los niveles de características 11_0 y 11_1 introducen soporte opcional para recursos en mosaico con limitación del nivel de detalle del sombreador (Tier2). [ 99 ] Esta última característica proporciona efectivamente control sobre las tablas de páginas de hardware presentes en muchas GPU actuales. [ 100 ] WARP se actualizó para admitir completamente las nuevas características. [ 94 ] [ 101 ] Sin embargo, no existe un nivel de características 11_2; las nuevas características están dispersas en los niveles de características existentes. Aquellas que dependen del hardware se pueden consultar individualmente a través de CheckFeatureSupport. [ 95 ] [ 102 ] Algunas de las "nuevas" características de Direct3D 11.2 en realidad exponen algunas características de hardware antiguas de una manera más granular; por ejemplo, D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORTexpone soporte parcial para instanciación en hardware de nivel de características 9_1 y 9_2, de lo contrario, soporte completo a partir del nivel de características 9_3 en adelante. [ 103 ]

Direct3D 11.X

Direct3D 11.X es un superconjunto de DirectX 11.2 que se ejecuta en Xbox One . [ 104 ] [ 105 ] Incluye algunas características, como los paquetes de dibujo, que posteriormente se anunciaron como parte de DirectX 12. [ 106 ]

Direct3D 11.3

Direct3D 11.3 [ 107 ] se lanzó en julio de 2015 con Windows 10; incluye características de renderizado menores de Direct3D 12, manteniendo la estructura general de la API Direct3D 11.x. [ 108 ] [ 109 ] [ 110 ] Direct3D 11.3 introduce valores de referencia de plantilla especificados por sombreador opcionales, cargas de vista de acceso desordenado tipado, vistas ordenadas de rasterizador (ROV), Swizzle estándar opcional, mapeo de textura predeterminado opcional, rasterización conservadora (de tres niveles), [ 111 ] compatibilidad con acceso a memoria unificada (UMA) opcional y recursos en mosaico adicionales (nivel 2) (recursos en mosaico de volumen). [ 112 ]

Direct3D 11.4

  • Direct3D 11.4 versión 1511 : La versión inicial de Direct3D 11.4 se introdujo con la actualización Threshold 2 de Windows 10 (versión 1511), mejorando la compatibilidad con adaptadores gráficos externos y DXGI 1.5. [ 113 ]
  • Direct3D 11.4 versión 1607 : la actualización de Direct3D 11.4 con la Actualización de Aniversario de Windows 10 (versión 1607) incluye compatibilidad con WDDM 2.1 y con el formato UHDTV HDR10 ( ST 2084 ), así como compatibilidad con frecuencias de actualización variables para aplicaciones UWP.

Direct3D 12

Direct3D 12 [ 114 ] permite un nivel de abstracción de hardware inferior al de versiones anteriores, lo que permite que futuras aplicaciones mejoren significativamente la escalabilidad multihilo y reduzcan la utilización de la CPU. Esto se logra mediante una mejor adaptación de la capa de abstracción de Direct3D al hardware subyacente, a través de nuevas características como el dibujo indirecto, las tablas de descriptores, los objetos de estado de canalización concisos y los paquetes de llamadas de dibujo. La reducción de la sobrecarga del controlador es el principal atractivo de Direct3D 12, de forma similar a Mantle de AMD . [ 114 ] En palabras de su desarrollador principal, Max McMullen, el objetivo principal de Direct3D 12 es lograr una "eficiencia a nivel de consola" y un paralelismo de CPU mejorado. [ 115 ] [ 116 ] [ 117 ]

Aunque Nvidia ha anunciado un amplio soporte para Direct3D 12, también se mostraron algo reservados sobre el atractivo universal de la nueva API, señalando que si bien los desarrolladores de motores de juegos pueden estar entusiasmados con la posibilidad de administrar directamente los recursos de la GPU desde el código de su aplicación, "muchas otras personas no estarían contentas" de tener que hacerlo. [ 118 ]

También se incluyen algunas características de hardware nuevas en Direct3D 12, [ 110 ] [ 108 ] [ 119 ] incluyendo Shader Model 5.1, [ 120 ] Volume Tiled Resources (Tier 2), [ 120 ] Shader Specified Stencil Reference Value, Typed UAV Load, Conservative Rasterization (Tier 1), mejor colisión y eliminación con Conservative Rasterization, Rasterizer Ordered Views (ROV), Standard Swizzles, Default Texture Mapping, Swap Chains, recursos swizzled y recursos comprimidos , [ 121 ] modos de mezcla adicionales , [ 122 ] mezcla programable y transparencia independiente del orden eficiente (OIT) con UAV ordenado por píxeles. [ 123 ]

Los objetos de estado de canalización (PSO) [ 124 ] han evolucionado a partir de Direct3D 11, y los nuevos estados de canalización concisos significan que el proceso se ha simplificado. DirectX 11 ofrecía flexibilidad en cómo se podían modificar sus estados, en detrimento del rendimiento. Simplificar el proceso y unificar las canalizaciones (por ejemplo, los estados del sombreador de píxeles) conduce a un proceso más optimizado, reduciendo significativamente la sobrecarga y permitiendo que la tarjeta gráfica realice más llamadas por cada fotograma. Una vez creado, el PSO es inmutable. [ 125 ]

Las firmas raíz introducen configuraciones para vincular las listas de comandos con los recursos que requieren los sombreadores. Definen la disposición de los recursos que usarán los sombreadores y especifican qué recursos se vincularán a la canalización. Una lista de comandos gráficos tiene una firma raíz tanto gráfica como de cómputo, mientras que una lista de comandos de cómputo solo tendrá una firma raíz de cómputo. Estas firmas raíz son completamente independientes entre sí. Si bien la firma raíz establece los tipos de datos que usarán los sombreadores, no define ni asigna la memoria o los datos reales. [ 126 ]

Los parámetros raíz son un tipo de entrada en una firma raíz. Los valores reales de los parámetros raíz que se modifican en tiempo de ejecución se denominan argumentos raíz. Estos son los datos que leen los sombreadores. [ 126 ]

En Direct3D 11, los comandos se envían de la CPU a la GPU uno a uno, y la GPU los procesa secuencialmente. Esto significa que el procesamiento de los comandos se ve limitado por la velocidad a la que la CPU puede enviarlos de forma lineal. En DirectX 12, estos comandos se envían como listas de comandos, que contienen toda la información necesaria en un solo paquete. De esta forma, la GPU puede calcular y ejecutar el comando en un único proceso, sin tener que esperar información adicional de la CPU.

Dentro de estas listas de comandos se encuentran los paquetes. Mientras que antes los comandos simplemente se tomaban, se usaban y luego la GPU los olvidaba, los paquetes se pueden reutilizar. Esto reduce la carga de trabajo de la GPU y permite que los recursos repetidos se utilicen mucho más rápido.

Si bien la vinculación de recursos resulta bastante conveniente para los desarrolladores en Direct3D 11, su ineficiencia implica que varias capacidades de hardware modernas se subutilizan drásticamente. En DX11, cuando un motor de juego necesitaba recursos, tenía que generar los datos desde cero cada vez, lo que generaba procesos repetitivos y usos innecesarios. En Direct3D 12, los montones y tablas de descriptores permiten a los desarrolladores asignar los recursos más utilizados en tablas, a las que la GPU puede acceder de forma rápida y sencilla. Esto puede contribuir a un mejor rendimiento que Direct3D 11 en hardware equivalente, pero también implica más trabajo para el desarrollador.

Los montones dinámicos también son una característica de Direct3D 12. [ 127 ]

Direct3D 12 ofrece soporte explícito para múltiples adaptadores, lo que permite el control explícito de sistemas con múltiples GPU (mGPU). Estas configuraciones pueden crearse con adaptadores gráficos del mismo fabricante de hardware, así como con adaptadores de hardware de diferentes fabricantes. [ 128 ]

Microsoft lanzó en 2019 una versión experimental con soporte para D3D 12 para Windows 7 SP1 a través de un paquete NuGet específico. [ 129 ] [ 130 ] [ 131 ]

  • Direct3D 12 versión 1607 : Con la actualización de aniversario de Windows 10 (versión 1607), publicada el 2 de agosto de 2016, el entorno de ejecución de Direct3D 12 se actualizó para admitir construcciones para multihilo explícito y comunicación entre procesos, lo que permite a los desarrolladores aprovechar las GPU masivamente paralelas modernas. [ 132 ] Otras características incluyen firmas raíz actualizadas versión 1.1, así como compatibilidad con el formato HDR10 y frecuencias de actualización variables .
  • Direct3D 12 versión 1703 : Con la actualización Windows 10 Creators Update (versión 1703), lanzada el 11 de abril de 2017, el entorno de ejecución de Direct3D 12 se actualizó para admitir Shader Model 6.0 y DXIL . Shader Model 6.0 requiere Windows 10 Anniversary Update (versión 1607) y WDDM 2.1. Las nuevas características gráficas son Depth Bounds Testing y Programmable MSAA. [ 133 ]
  • Direct3D 12 versión 1709 : Direct3D en Windows 10 Fall Creators Update (versión 1709), lanzado el 17 de octubre de 2017, incluye una depuración mejorada. [ 133 ]
  • Direct3D 12 versión 1809 : la actualización de Windows 10 de octubre de 2018 (versión 1809) incorpora compatibilidad con DirectX Raytracing para que las GPU puedan beneficiarse de su API.
  • Direct3D 12 versión 1903 : la actualización de Windows 10 de mayo de 2019 (versión 1903) trae soporte para DirectML y NPU . [ 134 ] [ 135 ] DirectML puede admitir sombreadores de cómputo y sombreadores tensoriales .
  • Direct3D 12 versión 2004 : la actualización de Windows 10 de mayo de 2020 (versión 2004) trae compatibilidad con DirectX 12 Ultimate , sombreadores de malla y amplificación, [ 136 ] retroalimentación de muestreo, [ 137 ] así como DirectX Raytracing Tier 1.1 [ 138 ] y mejoras en la asignación de memoria. [ 139 ]
  • Direct3D 12 versión 21H2 : Windows 10 versión 21H2 y Windows 11 versión 21H2 incorporan compatibilidad con DirectStorage .

Arquitectura

Capa abstracta

Direct3D es un componente del subsistema de la API DirectX de Microsoft . Su objetivo es abstraer la comunicación entre una aplicación gráfica y los controladores de hardware gráfico. Se presenta como una capa abstracta delgada, a un nivel comparable al de GDI (véase el diagrama adjunto). Direct3D incluye numerosas características de las que carece GDI.

Direct3D es una API gráfica de modo inmediato . Proporciona una interfaz de bajo nivel para todas las funciones 3D de la tarjeta gráfica ( transformaciones, recorte, iluminación , materiales , texturas , almacenamiento en búfer de profundidad , etc.). Anteriormente contaba con un componente de modo retenido de nivel superior , que ahora está oficialmente descontinuado.

El modo inmediato de Direct3D presenta tres abstracciones principales: dispositivos , recursos y cadenas de intercambio (véase el diagrama adjunto). Los dispositivos son responsables de renderizar la escena 3D. Proporcionan una interfaz con diferentes capacidades de renderizado. Por ejemplo, el dispositivo monocromático ofrece renderizado en blanco y negro, mientras que el dispositivo RGB renderiza en color. Existen cuatro tipos de dispositivos:

Dispositivo
  • Dispositivo de referencia : Simula nuevas funciones que aún no están disponibles en el hardware. Es necesario instalar el SDK de Direct3D para usar este tipo de dispositivo.
  • Dispositivo de referencia nulo : No hace nada. Este dispositivo se utiliza cuando el SDK no está instalado y se solicita un dispositivo de referencia.
  • Dispositivo de software conectable : Realiza renderizado por software. Este dispositivo se introdujo con DirectX 9.0 . [ 140 ]

Cada dispositivo contiene al menos una cadena de intercambio . Una cadena de intercambio está compuesta por una o más superficies de búfer posterior . El renderizado se realiza en el búfer posterior.

Además, los dispositivos contienen una colección de recursos ; datos específicos utilizados durante la renderización. Cada recurso tiene cuatro atributos:

  • Tipo : Determina el tipo de recurso: superficie, volumen, textura, textura de cubo, textura de volumen, textura de superficie, búfer de índice o búfer de vértice.
  • Grupo : [ 141 ] Describe cómo el entorno de ejecución gestiona el recurso y dónde se almacena. En el grupo predeterminado, el recurso solo existirá en la memoria del dispositivo. Los recursos del grupo gestionado se almacenarán en la memoria del sistema y se enviarán al dispositivo cuando sea necesario. Los recursos del grupo de memoria del sistema solo existirán en la memoria del sistema. Por último, el grupo de memoria temporal es básicamente igual que el grupo de memoria del sistema, pero los recursos no están sujetos a restricciones de hardware.
  • Formato : Describe la disposición de los datos de recursos en la memoria. Por ejemplo, el valor de formato D3DFMT_R8G8B8 significa una profundidad de color de 24 bits (8 bits para el rojo, 8 bits para el verde y 8 bits para el azul).
  • Uso : Describe, mediante un conjunto de indicadores , cómo la aplicación utilizará el recurso. Estos indicadores determinan qué recursos se utilizan en patrones de acceso dinámico o estático. Los valores de los recursos estáticos no cambian después de cargarse, mientras que los valores de los recursos dinámicos pueden modificarse.

Direct3D implementa dos modos de visualización:

  • Modo de pantalla completa: La aplicación Direct3D genera toda la salida gráfica para el dispositivo de visualización. En este modo, Direct3D captura automáticamente la combinación Alt+Tab y ajusta/restaura la resolución de pantalla y el formato de píxeles sin intervención del programador. Esto también genera numerosos problemas para la depuración debido al "Modo cooperativo exclusivo".
  • Modo ventana: El resultado se muestra dentro del área de una ventana. Direct3D se comunica con GDI para generar la salida gráfica en la pantalla. El modo ventana puede ofrecer el mismo rendimiento que el modo de pantalla completa, dependiendo de la compatibilidad del controlador.

Tubería

Proceso de canalización de gráficos de Direct3D 11

La API de Microsoft Direct3D 11 define un proceso para convertir un grupo de vértices, texturas, búferes y estado en una imagen en la pantalla. Este proceso se describe como una canalización de renderizado con varias etapas distintas. Las diferentes etapas de la canalización de Direct3D 11 son: [ 142 ]

  1. Ensamblador de entrada : [ 143 ] Lee datos de vértices desde un búfer de vértices proporcionado por la aplicación y los alimenta a través de la tubería.
  2. Vertex Shader : [ 144 ] Realiza operaciones en un solo vértice a la vez, como transformaciones, skinning o iluminación.
  3. Hull-Shader : [ 145 ] Realiza operaciones en conjuntos de puntos de control de parches y genera datos adicionales conocidos como constantes de parche.
  4. Tessellator : [ 146 ] Subdivide la geometría para crear representaciones de orden superior del casco.
  5. Domain-Shader : [ 147 ] Realiza operaciones en los vértices generados por la etapa de teselación, de forma muy similar a como lo haría un sombreador de vértices.
  6. Sombreador de geometría : [ 148 ] Procesa primitivas completas como triángulos, puntos o líneas. Dada una primitiva, esta etapa la descarta o genera una o más primitivas nuevas.
  7. Salida de flujo : [ 149 ] Puede escribir los resultados de la etapa anterior en la memoria. Esto es útil para recircular los datos de vuelta a la canalización.
  8. Rasterizador : [ 150 ] [ 151 ] Convierte primitivas en píxeles, alimentando estos píxeles al sombreador de píxeles. El rasterizador también puede realizar otras tareas, como recortar lo que no es visible o interpolar datos de vértices en datos por píxel.
  9. Pixel Shader : [ 152 ] Determina el color final del píxel que se escribirá en el destino de renderizado y también puede calcular un valor de profundidad que se escribirá en el búfer de profundidad.
  10. Output-Merger : [ 153 ] Combina varios tipos de datos de salida ( valores de sombreado de píxeles , mezcla alfa, profundidad/plantilla...) para construir el resultado final.

Las etapas del proceso, representadas con un recuadro redondo, son totalmente programables. La aplicación proporciona un programa de sombreado que describe las operaciones exactas que deben realizarse en cada etapa. Muchas etapas son opcionales y pueden desactivarse por completo.

Niveles de características

En Direct3D 5 a 9, cuando las nuevas versiones de la API introdujeron compatibilidad con nuevas capacidades de hardware, la mayoría de ellas eran opcionales: cada fabricante de tarjetas gráficas mantenía su propio conjunto de funciones compatibles, además de la funcionalidad básica requerida. La compatibilidad con funciones individuales debía determinarse mediante "bits de capacidad" o "límites", lo que convertía la programación gráfica entre diferentes fabricantes en una tarea compleja.

Direct3D 10 introdujo un conjunto mucho más simplificado de requisitos de hardware obligatorios basados ​​en las capacidades más populares de Direct3D 9, a los que debían ajustarse todas las tarjetas gráficas compatibles, con solo unas pocas capacidades opcionales para formatos de textura y operaciones compatibles.

Direct3D 10.1 añadió algunos requisitos de hardware obligatorios nuevos, y para mantener la compatibilidad con el hardware y los controladores de la versión 10.0, estas características se encapsularon en dos conjuntos denominados "niveles de características", donde el nivel 10.1 formaba un superconjunto del nivel 10.0. A medida que Direct3D 11.0, 11.1 y 12 añadieron compatibilidad con nuevo hardware, las nuevas capacidades obligatorias se agruparon aún más en niveles de características superiores. [ 56 ]

Direct3D 11 también introdujo "10level9", un subconjunto de la API de Direct3D 10 con tres niveles de características que encapsulan varias tarjetas Direct3D 9 con controladores WDDM , y Direct3D 11.1 reintrodujo algunas características opcionales para todos los niveles, [ 154 ] que se ampliaron en Direct3D 11.2 y versiones posteriores.

Este enfoque permite a los desarrolladores unificar la canalización de renderizado y utilizar una única versión de la API tanto en hardware nuevo como antiguo, aprovechando las mejoras de rendimiento y usabilidad del entorno de ejecución más reciente. [ 60 ]

Se introducen nuevos niveles de funcionalidades con las versiones actualizadas de la API y, por lo general, encapsulan:

  • Características obligatorias principales – (Direct3D 11.0, 12),
  • algunas características menores (Direct3D 10.1, 11.1), o
  • un conjunto común de características que antes eran opcionales (Direct3D 11.0 "10 nivel 9").

Cada nivel superior es un superconjunto estricto de un nivel inferior, con solo unas pocas características nuevas o previamente opcionales que se incorporan a la funcionalidad principal en un nivel superior. [ 67 ] Las características más avanzadas en una revisión importante de la API Direct3D, como los nuevos modelos de sombreado y las etapas de renderizado, solo se exponen en el hardware de nivel superior. [ 65 ] [ 66 ]

Existen capacidades separadas para indicar la compatibilidad con operaciones de textura y formatos de recursos específicos; estas se especifican para cada formato de textura mediante una combinación de indicadores de capacidad. [ 155 ] [ 156 ]

Los niveles de características utilizan el guion bajo como delimitador (por ejemplo, "12_1"), mientras que las versiones de API/tiempo de ejecución utilizan el punto (por ejemplo, "Direct3D 11.4").

Direct3D 11 niveles

En Direct3D 11.4 para Windows 10, hay nueve niveles de características proporcionados por D3D_FEATURE_LEVELla estructura; los niveles 9_1, 9_2 y 9_3 (conocidos colectivamente como Direct3D 10 Nivel 9 ) reencapsulan varias características de tarjetas Direct3D 9 populares, los niveles 10_0, 10_1 se refieren a las versiones heredadas respectivas de Direct3D 10, [ 65 ] 11_0 y 11_1 reflejan la característica introducida con las API y los tiempos de ejecución de Direct3D 11 y Direct3D 11.1, mientras que los niveles 12_0 y 12_1 corresponden a los nuevos niveles de características introducidos con la API Direct3D 12.

Direct3D 12 niveles

Direct3D 12 para Windows 10 requiere hardware gráfico compatible con los niveles de características 11_0 y 11_1, que admiten traducciones de direcciones de memoria virtual, y requiere controladores WDDM 2.0. Existen dos nuevos niveles de características, 12_0 y 12_1, que incluyen algunas características nuevas expuestas por Direct3D 12 que son opcionales en los niveles 11_0 y 11_1. [ 157 ] Algunas características que antes eran opcionales se han realineado como estándar en los niveles 11_0 y 11_1. Shader Model 6.0 se ha lanzado con Windows 10 Creators Update y requiere Windows 10 Anniversary Update y controladores WDDM 2.1.

Direct3D 12 introduce un modelo de enlace de recursos renovado que permite el control explícito de la memoria. Los objetos abstractos de "vista de recursos" [ 159 ] ahora se representan con descriptores de recursos, que se asignan utilizando montones y tablas de memoria. [ 160 ] Los niveles de enlace de recursos definen el número máximo de recursos que se pueden direccionar utilizando CBV (vista de búfer constante), SRV (vista de recurso de sombreado) y UAV (vista de acceso no ordenado), así como unidades de muestreo de texturas. El hardware de nivel 3 permite recursos totalmente sin enlace, restringidos únicamente por el tamaño del montón de descriptores, mientras que el hardware de nivel 1 y nivel 2 impone algunos límites al número de descriptores ("vistas") que se pueden usar simultáneamente. [ 161 ] [ 162 ]

Multihilo

El modelo de controlador WDDM en Windows Vista y versiones posteriores admite un número arbitrariamente grande de contextos de ejecución (o subprocesos) en hardware o software. Windows XP solo admitía el acceso multitarea a Direct3D, donde distintas aplicaciones podían ejecutarse en ventanas diferentes y ser aceleradas por hardware, y el sistema operativo tenía un control limitado sobre lo que la GPU podía hacer, y el controlador podía cambiar los subprocesos de ejecución arbitrariamente.

La capacidad de ejecutar el entorno de ejecución en modo multihilo se introdujo con el entorno de ejecución Direct3D 11. Cada contexto de ejecución se presenta con una vista de recursos de la GPU. Los contextos de ejecución están protegidos entre sí; sin embargo, una aplicación maliciosa o mal programada puede tomar el control de la ejecución en el controlador de modo de usuario y potencialmente acceder a datos de otro proceso en la memoria de la GPU mediante el envío de comandos modificados. Aunque está protegida del acceso de otras aplicaciones, una aplicación bien programada aún necesita protegerse contra fallas y pérdida de datos del dispositivo causadas por otras aplicaciones.

El sistema operativo gestiona los hilos de forma autónoma, permitiendo que el hardware cambie de un hilo a otro cuando sea apropiado, y también se encarga de la gestión de la memoria y la paginación (a la memoria del sistema y al disco) mediante la gestión de memoria integrada del núcleo del sistema operativo.

La conmutación de contexto más precisa, es decir, la capacidad de cambiar entre dos hilos de ejecución a nivel de instrucción de sombreado en lugar de a nivel de comando único o incluso de lote de comandos, se introdujo en WDDM/DXGI 1.2, incluido en Windows 8. [ 86 ] Esto supera un posible problema de planificación cuando la aplicación tendría una ejecución muy larga de un solo comando o lote de comandos y tendría que ser terminada por el temporizador de vigilancia del sistema operativo. [ 163 ]

WDDM 2.0 y DirectX 12 se han rediseñado para permitir llamadas de dibujo totalmente multihilo. Esto se logró haciendo que todos los recursos fueran inmutables (es decir, de solo lectura), serializando los estados de renderizado y utilizando paquetes de llamadas de dibujo. Esto evita la gestión compleja de recursos en el controlador en modo kernel, lo que posibilita múltiples llamadas reentrantes al controlador en modo usuario a través de contextos de ejecución concurrente proporcionados por hilos de renderizado independientes en la misma aplicación.

Direct3D Mobile

Direct3D Mobile deriva de Direct3D pero tiene un menor consumo de memoria . Windows CE ofrece compatibilidad con Direct3D Mobile. [ 164 ]

Implementaciones alternativas

Existen las siguientes implementaciones alternativas de la API Direct3D. Son útiles para plataformas que no son Windows y para hardware que no admite algunas versiones de DX:

  • DXVK : una capa de traducción de código abierto basada en Vulkan para Direct3D 8/9/10/11 que permite ejecutar aplicaciones 3D en Linux usando Wine. [ 165 ] [ 166 ] Es utilizada por Proton / Steam [ 167 ] para Linux. DXVK puede ejecutar una gran cantidad de juegos modernos de Windows en Linux.
    • D7VK – Una bifurcación de DXVK exclusivamente para Direct3D 3, 5, 6 y 7. [ 168 ] [ 169 ] [ 170 ] [ 171 ]
    • D8VK : una bifurcación obsoleta de DXVK para agregar soporte para Direct3D 8 en Linux. [ 172 ] Se fusionó con la versión 2.4 de DXVK, que se lanzó el 10 de julio de 2024.
    • D9VK : una bifurcación obsoleta de DXVK para agregar soporte para Direct3D 9, [ 173 ] incluida con Steam/Proton en Linux. [ 174 ] El 16 de diciembre de 2019, D9VK se fusionó con DXVK. [ 175 ]
  • Gallium Nine permite ejecutar aplicaciones Direct3D 9 en Linux de forma nativa, es decir, sin ninguna traducción de llamadas, lo que proporciona una velocidad casi nativa. Depende de Wine y Mesa . [ 176 ] [ 177 ]
  • vkd3d – vkd3d es una biblioteca de gráficos 3D de código abierto construida sobre Vulkan que permite ejecutar aplicaciones Direct3D 12 sobre Vulkan . [ 178 ] Es utilizada principalmente por el proyecto Wine , [ 179 ] [ 180 ] y ahora está incluida con el proyecto Proton de Valve incluido con Steam en Linux.
  • WineD3D : el proyecto de código abierto Wine cuenta con implementaciones funcionales de las API de Direct3D mediante traducción a OpenGL . [ 181 ] La implementación de Wine también puede ejecutarse en Windows bajo ciertas condiciones. [ 182 ]

D3DX

Direct3D incluye D3DX, una biblioteca de herramientas diseñada para realizar cálculos matemáticos comunes en vectores , matrices y colores, calcular matrices de vista y proyección , interpolaciones de splines y varias tareas más complejas, como compilar o ensamblar sombreadores utilizados para programación gráfica 3D, almacenamiento comprimido de animación esquelética y pilas de matrices. Hay varias funciones que proporcionan operaciones complejas sobre mallas 3D, como cálculo del espacio tangente, simplificación de malla, transferencia de radiancia precalculada , optimización para la compatibilidad con caché de vértices y eliminación de elementos, y generadores para mallas de texto 3D. Las características 2D incluyen clases para dibujar líneas en el espacio de la pantalla, texto y sistemas de partículas basados ​​en sprites . Las funciones espaciales incluyen varias rutinas de intersección, conversión desde/hacia coordenadas baricéntricas y generadores de cuadros delimitadores /esferas. D3DX se proporciona como una biblioteca de vínculos dinámicos (DLL). D3DX está obsoleto a partir de Windows 8 y no se puede usar en aplicaciones de la Tienda Windows. [ 183 ]

Algunas características presentes en versiones anteriores de D3DX se eliminaron en Direct3D 11 y ahora se proporcionan como fuentes separadas: [ 184 ]

  • SDK de Windows y Visual Studio [ 185 ]
  • Se ha eliminado gran parte de la biblioteca matemática. Microsoft recomienda utilizar la biblioteca DirectX Math en su lugar.
  • Se han eliminado las fórmulas matemáticas de armónicos esféricos y ahora se distribuyen como código fuente. [ 186 ]
  • El marco Effect se ha eliminado y ahora se distribuye como código fuente a través de CodePlex. [ 187 ]
  • Las funciones de interfaz y geometría de Mesh se han eliminado y ahora se distribuyen como código fuente a través de CodePlex bajo la biblioteca de procesamiento de geometría DirectXMesh. [ 188 ]
  • Las funciones de textura se han eliminado y ahora se distribuyen como código fuente a través de CodePlex bajo la biblioteca de procesamiento de texturas DirectXTex. [ 189 ]
  • Las funciones auxiliares generales se han eliminado y ahora se distribuyen como código fuente a través de CodePlex bajo el proyecto DirectX Tool Kit (DirectXTK). [ 190 ]
  • El atlas de texturas isochart se ha eliminado y ahora se distribuye como código fuente a través de CodePlex bajo el proyecto UVAtlas. [ 191 ]

DXUT

DXUT (también llamado marco de trabajo de ejemplo) es una capa construida sobre la API de Direct3D. El marco de trabajo está diseñado para ayudar al programador a dedicar menos tiempo a tareas rutinarias, como crear una ventana, crear un dispositivo, procesar mensajes de Windows y gestionar eventos de dispositivos. DXUT se eliminó con el SDK de Windows 8.0 y ahora se distribuye como código fuente a través de CodePlex. [ 192 ]

Véase también

Referencias

  1. "Configuración de la funcionalidad de la plantilla de profundidad" . Microsoft. 19 de agosto de 2020.
  2. "RenderStateManager.UseWBuffer" . Microsoft. 6 de noviembre de 2009.
  3. "Combinación de texturas (Direct3D 9)" . Microsoft. 6 de enero de 2021.
  4. "Combinación geométrica (Direct3D 9)" . Microsoft. 6 de enero de 2021.
  5. "HLSL" . Microsoft. 4 de agosto de 2021.
  6. "Efectos (Direct3D 11)" . Microsoft. 11 de junio de 2021.
  7. "Kit de desarrollo de software DirectX, octubre de 2006" . Microsoft. Archivado del original el 2 de noviembre de 2011.
  8. "Guía de la plataforma de rasterización avanzada de Windows (WARP): arquitectura y rendimiento de WARP" . MSDN. 11 de octubre de 2022.
  9. "DirectX 8: Elevando el nivel de realismo en gráficos" (PDF) . evga.com . Consultado el 6 de septiembre de 2023 .
  10. "Inicio > GPUs Tecnología ATI SMARTSHADER: impulsando la próxima generación de Radeon" . anandtech.com . Archivado del original el 4 de abril de 2017. Consultado el 6 de septiembre de 2023 .
  11. "Vertex Shaders and Pixel Shaders" . thg.ru/ . Consultado el 6 de septiembre de 2023 .
  12. Penfold, Dom (16 de enero de 2002). "Vertex Shaders and Pixel Shaders" . Archivado del original el 1 de septiembre de 2012. Recuperado el 15 de marzo de 2026 .
  13. "Descargas de Microsoft DirectX para Windows (Win95, Win98, Win98SE, WinME, Win2000, WinXP)" . www.falconfly.de . Archivado del original el 10 de noviembre de 2006. Consultado el 11 de enero de 2022 .
  14. "DirectX 9.0c End-User Runtime" . Microsoft . 17 de octubre de 2007. Archivado del original el 11 de septiembre de 2012. Consultado el 11 de enero de 2022 .
  15. "Equipo de gestión de Qube Soft" . qubesoft.com. 4 de abril de 2017. Archivado del original el 6 de abril de 2017. Consultado el 5 de abril de 2017 .
  16. 1 2 Claro, Nicole (abril de 1995). "Renderizado adicional" (PDF) . Game Developer Magazine . Archivado (PDF) del original el 26 de enero de 2021. Recuperado el 21 de agosto de 2022 .
  17. Prosise, Jeff (16 de mayo de 1995). "Unirse a la fiesta multimedia" . PC Magazine . Consultado el 20 de agosto de 2022 .
  18. Thompson, Nigel (agosto de 1996). "Construyendo una escena usando Direct3D en modo retenido" (PDF) . Game Developer Magazine . Archivado (PDF) del original el 26 de enero de 2021. Recuperado el 20 de agosto de 2022 .
  19. Berkes, Otto (12 de abril de 2015). "DirectX" . Blog de Otto Berkes . Consultado el 22 de agosto de 2022 .
  20. Chen, Raymond (22 de enero de 2004). "¿Qué pasó con DirectX 4?" . The Old New Thing . Microsoft . Consultado el 28 de agosto de 2022 .
  21. "Comunicado de prensa: Crisis de Microsoft (febrero de 1997)" . Microsoft Corporation. 18 de febrero de 1997.
  22. "Comunicado de prensa: Crisis de Microsoft (julio de 1997)" . Microsoft Corporation. 22 de julio de 1997.
  23. Ron Fosner. "Consigue una representación 3D rápida y sencilla con DrawPrimitive y DirectX 5.0" . Microsoft Systems Journal.
  24. "Direct3D 7 Immediate Mode Framework Programming 3: Multitexturing" . gamedev.net. 29 de mayo de 2000. Archivado del original el 5 de agosto de 2011. Consultado el 17 de septiembre de 2011 .
  25. "Microsoft lanza la versión final de DirectX 6.0" . Microsoft. 7 de agosto de 1998.
  26. "Microsoft lanza DirectX 6.1" . Microsoft. 3 de febrero de 1999.
  27. "Actualización de Talismán de Bill Gates de abril de 1997" (PDF) . Microsoft. 5 de mayo de 1997. Archivado del original (PDF) el 8 de diciembre de 2015. Consultado el 31 de octubre de 2015 .
  28. "DDS (formato de superficie DirectDraw)" . MSDN. 19 de agosto de 2020.
  29. "DirectX 7: [ previsto ] julio 99" . GameSpot . Reino Unido. Marzo de 1999. Archivado del original el 8 de mayo de 1999. Consultado el 20 de julio de 2019 .
  30. "Microsoft anuncia el lanzamiento de DirectX 8.0" . Microsoft. 9 de noviembre de 2000. Consultado el 7 de enero de 2015 .
  31. "Función de acción directa: DirectX 8.0" . GameSpot . Reino Unido. Archivado del original el 23 de febrero de 2001. Consultado el 20 de julio de 2019 .
  32. "DirectX 8 Graphics and Video: A Fresh Start" . gamedev.net. 30 de noviembre de 2000. Archivado del original el 4 de junio de 2007. Consultado el 18 de febrero de 2007 .
  33. "Direct3D 9 Graphics" . MSDN . Consultado el 30 de septiembre de 2014 .
  34. "Escribiendo sombreadores HLSL en Direct3D 9" . MSDN . Consultado el 30 de septiembre de 2014 .
  35. "HLSL en Direct3D 9.0" . Microsoft . Archivado del original el 27 de agosto de 2010.
  36. "Múltiples objetivos de renderizado (Direct3D 9)" . MSDN . Consultado el 30 de septiembre de 2014 .
  37. "Texturas de múltiples elementos (Direct3D 9)" . MSDN . Consultado el 30 de septiembre de 2014 .
  38. "Técnicas de búfer de plantilla (Direct3D 9)" . MSDN . Consultado el 30 de septiembre de 2014 .
  39. "Mejoras de Direct3D 9Ex" . MSDN . Consultado el 30 de septiembre de 2014 .
  40. "API de gráficos en Windows" . MSDN. Agosto de 2009.
  41. 1 2 "El papel del modelo de controlador de pantalla de Windows en el DWM" . 2 de abril de 2006.
  42. "Características de la API (Direct3D 10)" . MSDN . Consultado el 30 de septiembre de 2014 .
  43. Soporte técnico de Microsoft (17 de marzo de 2009). "Se eliminó el modo de retención de Direct3D de Windows Vista" . Archivado del original el 1 de junio de 2013.
  44. "Kit de desarrollo de software DirectX" . Microsoft. 2 de febrero de 2007. Archivado del original el 18 de noviembre de 2012.
  45. "Tipos de recursos (Direct3D 10)" . MSDN . Consultado el 30 de septiembre de 2014 .
  46. "Capas de API (Direct3D 10)" . MSDN . Consultado el 30 de septiembre de 2014 .
  47. "CNet News" . Consultado el 30 de septiembre de 2014 .
  48. "Common-Shader Core" . Microsoft. 30 de junio de 2021.
  49. "Funciones del sombreador de geometría" . Microsoft. 23 de agosto de 2019.
  50. "Shader Stages" . Microsoft. 11 de octubre de 2016.
  51. "De qué se trata Direct3D 10: mejoras adicionales" . Tom's Hardware. 8 de noviembre de 2006.
  52. "Características de Direct3D 10.1" . MSDN . Consultado el 30 de septiembre de 2014 .
  53. "Microsoft presenta detalles de DirectX 10.1 en SIGGRAPH" . ExtremeTech. 7 de agosto de 2007.
  54. "Características de Direct3D 10.1" . MSDN. 6 de enero de 2021.
  55. 1 2 "Método ID3D11Device::CheckMultisampleQualityLevels" . MSDN . Consultado el 30 de septiembre de 2014 .
  56. 1 2 3 Chuck Walbourn (20 de junio de 2012). "Niveles de características de Direct3D" . Blog de juegos para Windows y el SDK de DirectX .
  57. "Enumeración D3D10_FEATURE_LEVEL1" . MSDN . Consultado el 22 de noviembre de 2009 .
  58. "Niveles de características de Direct3D" . MSDN . Consultado el 30 de septiembre de 2014 .
  59. "Características de Direct3D 11" . MSDN . Consultado el 30 de septiembre de 2014 .
  60. 1 2 3 "Presentaciones de Gamefest 2008" . Microsoft. Archivado del original el 13 de noviembre de 2013.
  61. 1 2 "Presentaciones técnicas de Nvision 08" . Nvidia . Consultado el 16 de septiembre de 2011 .
  62. "Kit de desarrollo de software DirectX, noviembre de 2008" . Microsoft. 7 de noviembre de 2008.
  63. "AMD presenta la primera GPU compatible con DirectX 11 del mundo" . Engadget. 3 de junio de 2009.
  64. 1 2 "Introducción al pipeline gráfico de Direct3D 11 - Presentación de GameFest 2008" . Microsoft. 27 de agosto de 2008. Diapositiva 56. Archivado del original el 5 de noviembre de 2012.
  65. 1 2 3 "Direct3D 11 en hardware de nivel inferior" . MSDN . Consultado el 18 de noviembre de 2012 .
  66. 1 2 "Kit de controladores de Windows: compatibilidad con Direct3D 11" . MSDN . Consultado el 13 de junio de 2009 .
  67. 1 2 "Niveles de características de Direct3D" . MSDN . Consultado el 2 de julio de 2012 .
  68. "Uso de la teselación por hardware de ATI en DX9" . 14 de julio de 2008.
  69. "SDK de teselación AMD DX9" . Archivado del original el 8 de noviembre de 2010.
  70. "Programación para teselación en tiempo real en GPU" (PDF) . Archivado del original (PDF) el 27 de julio de 2011.
  71. "Ejemplos de teselación de OpenGL" . Archivado del original el 9 de abril de 2010.
  72. "Nuevos tipos de recursos" . MSDN . Consultado el 30 de septiembre de 2014 .
  73. "Sesgo de profundidad" . MSDN . Consultado el 30 de septiembre de 2014 .
  74. "Estructura D3D11_RASTERIZER_DESC1" . MSDN . Consultado el 30 de septiembre de 2014 .
  75. "Shader Model 5" . MSDN . Consultado el 30 de septiembre de 2014 .
  76. "Descripción general de la teselación" . Microsoft. 16 de septiembre de 2020.
  77. "Descripción general de la teselación" . MSDN . Consultado el 30 de septiembre de 2014 .
  78. "Descripción de la actualización de plataforma para Windows Server 2008 y la actualización de plataforma para Windows Vista" . Support.microsoft.com. 2 de octubre de 2012. Consultado el 15 de junio de 2013 .
  79. "Actualización de la plataforma para Windows Vista – Blog para desarrolladores de DirectX – Página principal – Blogs de MSDN" . Blogs.msdn.com. 10 de septiembre de 2009. Archivado del original el 8 de abril de 2014. Consultado el 15 de junio de 2013 .
  80. "Características de Direct3D 11.1" . MSDN . Consultado el 30 de septiembre de 2014 .
  81. "Estructura D3D11_FEATURE_DATA_D3D11_OPTIONS" . MSDN . Consultado el 30 de septiembre de 2014 .
  82. "Mejoras en las funciones de DirectX en Windows 8" . MSDN . Consultado el 30 de septiembre de 2014 .
  83. "Características de Direct3D 11.1" . MSDN . Consultado el 13 de septiembre de 2009 .
  84. "Mejoras de DXGI 1.2" . MSDN . Consultado el 30 de septiembre de 2014 .
  85. "Características de WDDM 1.2" . MSDN . Consultado el 30 de septiembre de 2014 .
  86. 1 2 3 "Mejoras en el modelo de controlador de pantalla de Windows en la versión preliminar para desarrolladores de Windows" . MSDN. 13 de septiembre de 2011.
  87. "Tipos escalares" . Consultado el 2 de octubre de 2014 .
  88. "La GPU integrada Haswell de Intel incluirá DirectX 11.1 y mayor compatibilidad con aplicaciones profesionales" . AnandTech. 5 de agosto de 2011. Archivado del original el 13 de septiembre de 2011.
  89. "DirectX Graphics – Actualización de plataforma para Windows 7" . MSDN. 14 de noviembre de 2012.
  90. "DirectX 11.1 y Windows 7" . Blog de juegos para Windows y el SDK de DirectX . 13 de noviembre de 2012.
  91. "Programación DirectX" . MSDN. Archivado del original el 31 de octubre de 2013. Consultado el 30 de septiembre de 2014 .
  92. "Características de Direct3D 11.2" . MSDN . Consultado el 30 de septiembre de 2014 .
  93. "Estructura D3D11_FEATURE_DATA_D3D11_OPTIONS1" . MSDN . Consultado el 30 de septiembre de 2014 .
  94. 1 2 "Guía de características de Windows 8.1: programación DirectX" . Biblioteca MSDN . 26 de junio de 2013. Archivado del original el 27 de agosto de 2015. Recuperado el 27 de junio de 2013 .
  95. 1 2 Bennett Sorbo (26 de junio de 2013). "Novedades de Direct3D 11.2" . Channel9 – BUILD 2013 .
  96. "Mejoras de DXGI 1.3" . Biblioteca MSDN . 26 de junio de 2013.
  97. "Novedades de los controladores de pantalla de Windows 8.1 Preview (WDDM 1.3)" . MSDN . Consultado el 30 de septiembre de 2014 .
  98. "Contenido movido (Windows)" . Archivado del original el 4 de marzo de 2016. Recuperado el 6 de marzo de 2015 .
  99. "Enumeración D3D11_TILED_RESOURCES_TIER" . MSDN . Consultado el 30 de septiembre de 2014 .
  100. Charles Hollemeersch, Matt Sandy (26 de junio de 2013). "Texturas virtuales masivas para juegos: recursos en mosaico de Direct3D" . Channel9 – BUILD 2013 .
  101. "Características de Direct3D 11.2" . Biblioteca MSDN . 26 de junio de 2013.
  102. "Blogs de MSDN" . MSDN . Consultado el 30 de septiembre de 2014 .
  103. "Estructura D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT" . MSDN . Consultado el 30 de septiembre de 2014 .
  104. "Elevando el nivel con Direct3D" . Creación de aplicaciones para Windows . 14 de octubre de 2013. Consultado el 30 de septiembre de 2014 .
  105. "Microsoft rechaza oficialmente a Mantle" . 16 de octubre de 2013. Consultado el 30 de septiembre de 2014 .
  106. Segmento de Chris Tector en http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform (a partir del minuto 18 aproximadamente).
  107. "Renderizado (Gráficos Direct3D 12) - Aplicaciones Win32" . 30 de diciembre de 2021.
  108. 1 2 Smith, Ryan (18 de septiembre de 2014). "Microsoft detalla las nuevas características de renderizado de Direct3D 11.3 y 12" . AnandTech . Archivado del original el 26 de septiembre de 2014. Recuperado el 30 de septiembre de 2014 .
  109. Smith, Ryan (18 de septiembre de 2014). "Análisis de la NVIDIA GeForce GTX 980: Maxwell Mark 2" . AnandTech . Archivado del original el 22 de septiembre de 2014. Consultado el 30 de septiembre de 2014. La principal novedad de Maxwell 2 es la compatibilidad total con Direct3D 11.2/11.3.
  110. 1 2 "DirectX 11.3: Resumen de nuevas características: Recursos en mosaico: Cargas UAV tipificadas" . 19 de septiembre de 2014. Consultado el 30 de septiembre de 2014 .
  111. "Enumeración D3D11_CONSERVATIVE_RASTERIZATION_TIER" . Biblioteca MSDN . 22 de febrero de 2015. Consultado el 22 de febrero de 2015 .
  112. "Características de Direct3D 11.3" . Biblioteca MSDN . 28 de marzo de 2015. Consultado el 28 de marzo de 2015 .
  113. "Juegos para Windows y el blog del SDK de DirectX" .
  114. 1 2 Ryan Smith. "AnandTech – Microsoft anuncia DirectX 12: la programación gráfica de bajo nivel llega a DirectX" . Archivado del original el 27 de marzo de 2014. Recuperado el 30 de septiembre de 2014 .
  115. "Zona de desarrolladores de Intel" . Intel . Consultado el 21 de diciembre de 2022 .
  116. "Descripción general de Direct3D 12, parte 1: 'Más cerca del metal'"" . Consultado el 2 de octubre de 2014 .
  117. primeros dos minutos de https://channel9.msdn.com/Events/Build/2014/3-564
  118. "Un vistazo más de cerca a DirectX 12 – The Tech Report – Página 3" . 31 de marzo de 2014. Consultado el 30 de septiembre de 2014 .
  119. "2484602-pixel+ordered+uav.jpg" . Archivado del original el 30 de abril de 2018. Recuperado el 19 de septiembre de 2014 .
  120. 1 2 "Shader Model 5.1 - Aplicaciones Win32" . 20 de noviembre de 2019.
  121. "Conoce el futuro de los gráficos para PC: Microsoft revela DirectX 12, más rápido y similar al de las consolas" . PCWorld . 20 de marzo de 2014. Consultado el 30 de septiembre de 2014 .
  122. "DirectX 12 también añadirá nuevas características para las GPU de próxima generación" . 21 de marzo de 2014. Consultado el 30 de septiembre de 2014 .
  123. Kowaliski, Cyril (21 de marzo de 2014). "DirectX 12 también añadirá nuevas características para las GPU de próxima generación" . The Tech Report . Consultado el 1 de abril de 2014 .
  124. "Biblioteca técnica" . Intel . Consultado el 21 de diciembre de 2022 .
  125. stevewhims (30 de diciembre de 2021). "Pipelines y sombreadores con Direct3D 12 - Aplicaciones Win32" . learn.microsoft.com . Consultado el 19 de diciembre de 2023 .
  126. 1 2 stevewhims (6 de febrero de 2023). "Descripción general de las firmas raíz: aplicaciones Win32" . learn.microsoft.com . Consultado el 19 de diciembre de 2023 .
  127. "Direct3D 12 Overview Part 7: Dynamic Heaps" . Consultado el 2 de octubre de 2014 .
  128. "Multi-Adaptador" . Archivado del original el 14 de septiembre de 2016. Consultado el 3 de agosto de 2016 .
  129. "Adaptación de juegos de DirectX 12 a Windows 7" . 21 de agosto de 2019.
  130. "Especificaciones de DirectX" .
  131. «Microsoft.Direct3D.D3D12On7 1.1.0» .
  132. Modelo de sombreado HLSL 6.0
  133. 1 2 "Anuncio de nuevas características de DirectX 12" . Blog para desarrolladores de DirectX . Consultado el 24 de febrero de 2018 .
  134. "Aprendizaje automático directo (DirectML)" . Microsoft Docs . Consultado el 28 de junio de 2020 .
  135. "DirectML" . Documentación de Microsoft.
  136. "Llegando a DirectX 12: Shaders de malla y Shaders de amplificación: Reinventando la canalización de geometría" . Blog para desarrolladores de DirectX . Consultado el 28 de junio de 2020 .
  137. "Llegando a DirectX 12: Comentarios del Sampler: algunos datos útiles que antes estaban ocultos, ahora disponibles" . Blog para desarrolladores de DirectX . Consultado el 4 de noviembre de 2019 .
  138. "DirectX Raytracing (DXR) Tier 1.1" . Blog para desarrolladores de DirectX . Consultado el 6 de noviembre de 2019 .
  139. "Llegando a DirectX 12: Mayor control sobre la asignación de memoria" . Blog para desarrolladores de DirectX . Consultado el 11 de noviembre de 2019 .
  140. "Rasterizador de software para el kit de desarrollo de software (SDK) de Microsoft DirectX 9.0" . Microsoft. 1 de agosto de 2005. Archivado del original el 5 de septiembre de 2012.
  141. "Recursos de Direct3D: grupo de memoria" . Archivado del original el 9 de mayo de 2008.
  142. "Pipeline de gráficos" . Gráficos Direct3D 11. Microsoft Docs . Consultado el 19 de octubre de 2021 .
  143. "Input-Assembler Stage" . Direct3D 11 Graphics. Microsoft Docs . 4 de noviembre de 2020. Consultado el 19 de octubre de 2021 .
  144. "Vertex Shader Stage" . Direct3D 11 Graphics. Microsoft Docs . Consultado el 19 de octubre de 2021 .
  145. "Etapas de teselación" . Gráficos Direct3D 11. Microsoft Docs . 16 de septiembre de 2020. Etapa Hull-Shader . Consultado el 19 de octubre de 2021 .
  146. "Etapas de teselación" . Gráficos Direct3D 11. Microsoft Docs . 16 de septiembre de 2020. Etapa de teselación . Consultado el 19 de octubre de 2021 .
  147. "Etapas de teselación" . Direct3D 11 Graphics. Microsoft Docs . 16 de septiembre de 2020. Domain-Shader Stage . Consultado el 19 de octubre de 2021 .
  148. "Geometry Shader Stage" . Direct3D 11 Graphics. Microsoft Docs . 24 de mayo de 2021. Consultado el 19 de octubre de 2021 .
  149. "Stream-Output Stage" . Direct3D 11 Graphics. Microsoft Docs . 4 de noviembre de 2020. Consultado el 19 de octubre de 2021 .
  150. "RenderStates" . DirectX 9.0 para código administrado. Microsoft Docs . 6 de noviembre de 2009. Consultado el 19 de octubre de 2021 .
  151. "Rasterizer Stage" . Direct3D 11 Graphics. Microsoft Docs . 4 de noviembre de 2020. Consultado el 19 de octubre de 2021 .
  152. "Pixel Shader Stage" . Direct3D 11 Graphics. Microsoft Docs . 19 de agosto de 2020. Consultado el 19 de octubre de 2021 .
  153. "Etapa de fusión de salida" . Gráficos Direct3D 11. Microsoft Docs . 24 de mayo de 2021. Consultado el 19 de octubre de 2021 .
  154. 1 2 "Características de Direct3D 11.1 - Aplicaciones Win32" . 19 de agosto de 2020.
  155. "Enumeración D3D11_FORMAT_SUPPORT" . MSDN . Consultado el 16 de junio de 2015 .
  156. "Enumeración D3D11_FORMAT_SUPPORT2" . MSDN . Consultado el 16 de junio de 2015 .
  157. "Niveles de hardware - Aplicaciones Win32" . learn.microsoft.com . 30 de diciembre de 2021. Consultado el 21 de diciembre de 2022 .
  158. "D3D12_FEATURE - Aplicaciones Win32" . 14 de febrero de 2023.
  159. "Introducción a un recurso en Direct3D 11 - Aplicaciones Win32" . 6 de octubre de 2021.
  160. Wolfgang Engel . "Introducción al enlace de recursos en Microsoft DirectX 12" .
  161. GVCS005 - Microsoft Direct3D 12: Nuevos detalles de la API y optimizaciones de Intel. Archivado el 4 de abril de 2015 en Wayback Machine .
  162. "Muestra" . learn.microsoft.com . Consultado el 21 de diciembre de 2022 .
  163. "Detección y recuperación de tiempo de espera (TDR) - Controladores de Windows" . Microsoft .
  164. ^ Direct3D Mobile , Microsoft, 6 de enero de 2010.
  165. Jason Evangelho (1 de marzo de 2019). "Windows 10 versus Linux: 6 juegos de Steam evaluados en el NUC Hades Canyon de Intel" . Forbes . Consultado el 7 de octubre de 2019 .
  166. Rebohle, Philip (3 de abril de 2019), Implementación de D3D11 y D3D10 basada en Vulkan para Linux/Wine: doitsujin/dxvk , consultado el 3 de abril de 2019.
  167. Herramienta de compatibilidad para Steam Play basada en Wine y componentes adicionales: ValveSoftware/Proton , Valve , 3 de abril de 2019 , consultado el 3 de abril de 2019.
  168. WinterSnowfall (13 de marzo de 2026), WinterSnowfall/d7vk , consultado el 13 de marzo de 2026
  169. Larabel, Michael (7 de noviembre de 2025). "D7VK pretende ofrecer Direct3D 7 sobre Vulkan" . Phoronix . Consultado el 13 de marzo de 2026 .
  170. Orland, Kyle (10 de noviembre de 2025). "Nuevo proyecto aporta una sólida compatibilidad con Linux a más juegos clásicos de Windows" . Ars Technica . Consultado el 13 de marzo de 2026 .
  171. Larabel, Michael (11 de marzo de 2026). "D7VK 1.5 lanzado con Direct3D 3 ahora implementado sobre Vulkan" . Phoronix . Recuperado el 15 de marzo de 2026 .
  172. "Repositorio de D8VK en GitHub" . GitHub . Consultado el 2 de febrero de 2024 .
  173. "Repositorio de D9VK en GitHub" . GitHub . Consultado el 6 de octubre de 2019 .
  174. Larabel, Michael (30 de julio de 2019). "Proton se actualiza a Wine 4.11, añade D9VK Direct3D 9, mejor utilización de la CPU y DXVK 1.3" . Phoronix . Consultado el 15 de marzo de 2026 .
  175. "Implementar el frontend de Direct3D9 por Joshua-Ashton · Solicitud de extracción n.° 1275 · doitsujin/dxvk" . GitHub . Consultado el 17 de diciembre de 2019 .
  176. Cómo añadir soporte para Gallium Nine sobre una instalación de WINE existente: iXit/wine-nine-standalone , iXit Group, 3 de abril de 2019 , consultado el 3 de abril de 2019.
  177. Joey Sneddon (10 de octubre de 2018). "Ubuntu 18.10 añade soporte para Gallium Nine, última versión de Mesa 18.2.2" . ¡OMG! Ubuntu! . Consultado el 7 de octubre de 2019 .
  178. WineHQ - vkd3d , Direct3D 12, 3 de abril de 2019 , consultado el 30 de junio de 2020
  179. "Vkd3d 1.0 lanzado" . WineHQ . Consultado el 3 de abril de 2019 .
  180. Larabel, Michael (23 de agosto de 2019). "Valve's Proton ofrece una rama con VKD3D para Direct3D 12 sobre Vulkan" . Phoronix . Recuperado el 15 de marzo de 2026 .
  181. "El equipo de Wine se enorgullece en anunciar el lanzamiento de la versión estable Wine 4.0" . WineHQ . Consultado el 3 de abril de 2019 .
  182. "WineD3DOnWindows – La wiki oficial del vino" . Wiki.winehq.org. 2 de junio de 2013. Archivado del original el 17 de enero de 2009. Consultado el 15 de junio de 2013 .
  183. "Referencia de D3DX 11" . MSDN . Consultado el 30 de septiembre de 2014 .
  184. "Vivir sin D3DX" . MSDN.
  185. "Herramienta de compilación de efectos" . Microsoft. 19 de agosto de 2020.
  186. "Matemáticas de armónicos esféricos" . msdn.com . Consultado el 23 de noviembre de 2014 .
  187. "Efectos 11" . CodePlex . Archivado del original el 24 de septiembre de 2014. Consultado el 30 de septiembre de 2014 .
  188. "Biblioteca de procesamiento de geometría DirectXMesh" . CodePlex . Archivado del original el 29 de septiembre de 2014. Consultado el 30 de septiembre de 2014 .
  189. "Biblioteca de procesamiento de texturas DirectXTex" . CodePlex . Archivado del original el 25 de septiembre de 2014. Consultado el 30 de septiembre de 2014 .
  190. "DirectX Tool Kit" . CodePlex . Archivado del original el 29 de septiembre de 2014. Consultado el 30 de septiembre de 2014 .
  191. "UVAtrlas" . CodePlex . Archivado del original el 27 de junio de 2015. Recuperado el 23 de noviembre de 2014 .
  192. "DXUT para actualización de escritorio Win32" . MSDN.
  • Sitio web de DirectX
  • MSDN: Gráficos y juegos con DirectX
  • DirectX 10: El futuro de los juegos de PC , artículo técnico que analiza las nuevas características de DirectX 10 y su impacto en los juegos de ordenador.