stringtranslate.com

directo3D

Direct3D es una interfaz de programación de aplicaciones gráficas (API) para Microsoft Windows . Como parte de DirectX , Direct3D se utiliza para representar gráficos tridimensionales en aplicaciones donde el rendimiento es importante, como los juegos. Direct3D utiliza aceleración de hardware si está disponible en la tarjeta gráfica , lo que permite la aceleración de hardware de todo el proceso de renderizado 3D o incluso solo una aceleración parcial. Direct3D expone las capacidades gráficas avanzadas del hardware de gráficos 3D, incluido el almacenamiento en búfer Z , [1] el almacenamiento en búfer W, [2] el almacenamiento en búfer de plantilla , el suavizado espacial , la combinación alfa , la combinación de colores, el mapeo MIP , la combinación de texturas, [3] [4 ] recorte , selección , efectos atmosféricos, mapeo de texturas con perspectiva correcta , sombreadores HLSL programables [5] y efectos. [6] La integración con otras tecnologías DirectX permite a Direct3D ofrecer funciones como mapeo de video, renderizado 3D por hardware en planos de superposición 2D e incluso sprites , proporcionando el uso de gráficos 2D y 3D en vínculos de medios interactivos.

Direct3D contiene muchos comandos para la representación de gráficos por computadora en 3D ; sin embargo, desde la versión 8, Direct3D reemplazó el marco DirectDraw y también asumió la responsabilidad de la representació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 completa de software de vértices , pero no emulación de software de píxeles para funciones no disponibles en el hardware. Por ejemplo, si el software programado usando Direct3D requiere sombreadores de píxeles y la tarjeta de video de la computadora del usuario no admite esa característica, Direct3D no lo emulará, aunque sí calculará y renderizará los polígonos y texturas de los modelos 3D, aunque a un ritmo habitual. Calidad y rendimiento degradados en comparación con el hardware equivalente. La API incluye un Rasterizador de referencia (o dispositivo REF), que emula una tarjeta gráfica genérica en el software, aunque es demasiado lento para la mayoría de las aplicaciones 3D en tiempo real y normalmente solo se usa para depurar. 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 de múltiples núcleos. [8]

Como parte de DirectX , Direct3D está disponible para Windows 95 y superiores, y es la base para la API de gráficos vectoriales en las diferentes versiones de los sistemas de consola Xbox . La capa de compatibilidad de Wine , una reimplementación de software gratuito 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 de unificar OpenGL y Direct3D en la década de 1990, pero finalmente fue cancelado.

Descripción general

Direct3D 2.0 y 3.0

En 1992, Servan Keondjian y Doug Rabson fundaron una empresa llamada RenderMorphics, que desarrolló una API de gráficos 3D llamada Reality Lab , que se utilizó en software CAD y de imágenes médicas. [15] Se lanzaron dos versiones de esta API. [16] Microsoft compró RenderMorphics en febrero de 1995, incorporando a Keondjian para implementar un motor de gráficos 3D para Windows 95 . [17] La ​​primera versión de Direct3D se envió 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 le superpuso 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 basaron en COM . La API del modo retenido era una API de gráficos de escenas que logró poca adopción. Los desarrolladores de juegos clamaban por un control más directo de las actividades del hardware que el que podía proporcionar el modo retenido Direct3D. Sólo dos juegos que vendieron un volumen significativo, Lego Island y Lego Rock Raiders , se basaron en el modo retenido Direct3D, por lo que Microsoft no actualizó la API del modo retenido después de DirectX 3.0.

Para DirectX 2.0 y 3.0, el modo inmediato Direct3D utilizaba un modelo de programación de "búfer de ejecución" que Microsoft esperaba que los proveedores de hardware soportaran directamente. Los buffers de ejecución estaban destinados a ser asignados en la memoria del hardware y analizados por el hardware para realizar la representación 3D. Sin embargo, en ese momento se consideraban extremadamente difíciles de programar, lo que obstaculizó la adopción de la nueva API y provocó llamados para que Microsoft adoptara OpenGL como la API oficial de renderizado 3D para juegos y aplicaciones de estaciones de trabajo. [19] (ver OpenGL frente a Direct3D )

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

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

Direct3D 4.0

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

Direct3D 5.0

En diciembre de 1996, un equipo de Redmond se hizo cargo del desarrollo del Modo Inmediato Direct3D, mientras que el equipo de RenderMorphics con sede en Londres continuó trabajando en el Modo Retenido. El equipo de Redmond agregó la API DrawPrimitive que eliminó la necesidad de que las aplicaciones construyeran buffers de ejecución, haciendo que Direct3D se parezca más a otras API de renderizado en modo inmediato, como Glide y OpenGL . La primera versión beta de DrawPrimitive se envió en febrero de 1997, [21] y la versión final se envió 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 agregó 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 funciones para cubrir el hardware contemporáneo (como multitextura [24] y buffers de plantilla ), así como canalizaciones de geometría optimizadas para x87 , SSE y 3DNow. y gestión de texturas opcional para simplificar la programación. [25] Direct3D 6.0 también incluía soporte para características que habían sido licenciadas por Microsoft 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. La compatibilidad con la 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 patentada por TriTech . Microsoft incluyó estas funciones en DirectX y luego las agregó a los requisitos necesarios para que los controladores obtengan un logotipo de Windows para fomentar una amplia adopción de las funciones en el hardware de otros proveedores.

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

Un memorando confidencial enviado en 1997 [27] muestra que Microsoft planea anunciar soporte completo para Talisman en DirectX 6.0, pero la API terminó siendo cancelada (consulte la página de Microsoft Talisman para 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 buffers de vértices. en la memoria del hardware. Los buffers de vértices de hardware representan la primera mejora sustancial con respecto a OpenGL en la historia de DirectX. Direct3D 7.0 también aumentó la compatibilidad con DirectX para hardware de texturas múltiples y representa el pináculo de las características de canalización de texturas múltiples 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 de gráficos.

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 el estado superfluo del hardware. [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 programables fueron la primera gran desviación de una arquitectura de función fija estilo OpenGL, donde el dibujo está controlado por una complicada máquina de estados. Direct3D 8.0 también eliminó DirectDraw como API independiente. [31] [32] Direct3D subsumió todas las llamadas API de DirectDraw restantes que aún eran necesarias 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 contení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] compatible con formatos de textura de punto flotante, múltiples objetivos de renderizado (MRT), [36] texturas de elementos múltiples, [37] búsquedas de texturas en las técnicas de sombreador de vértices y búfer de plantilla. [38]

Direct3D 9Ex Mejoras de Direct3D 9Ex: aplicaciones Win32

Una extensión sólo disponible en Windows Vista y posteriores (7, 8, 8.1, 10 y 11), llamada Direct3D 9Ex [39] (anteriormente versión 9.0L (L – nombre en clave Windows Longhorn)), permite aprovechar las ventajas que ofrece 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 clase DirectX 9, permite virtualizar la memoria gráfica y paginarla en la memoria del sistema, permite interrumpir y programar las operaciones gráficas y permite compartir superficies DirectX entre procesos. [41] Direct3D 9Ex se conocía anteriormente como la versión 1.0 de Windows Graphics Foundation (WGF).

Direct3D 10

Windows Vista incluye una actualización importante de la API Direct3D. Originalmente llamado WGF 2.0 (Windows Graphics Foundation 2.0), luego DirectX 10 y DirectX Next. Direct3D 10 [42] presenta un modelo de sombreador 4.0 actualizado e interrumpibilidad opcional para programas de sombreado. [41] En este modelo, los sombreadores todavía constan 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 ampliado para que sea más expresivo, incluidas operaciones con números enteros, un recuento de instrucciones mucho mayor y más construcciones de lenguaje tipo C. Además de las etapas de sombreado de píxeles y vértices disponibles anteriormente , la API incluye una etapa de sombreado de geometría que rompe el modelo antiguo de un vértice dentro/un vértice fuera, para permitir que la geometría se genere desde dentro de un sombreador, lo que permite generar geometría compleja. ser generado íntegramente por el hardware de gráficos.

Windows XP no es compatible con DirectX 10.0 y superiores.

Además, Direct3D 10 dejó de admitir la API de modo retenido que había sido parte de Direct3D desde el principio, lo que hacía 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 "límites") para indicar qué funciones son compatibles con un dispositivo gráfico determinado. En cambio, define un estándar mínimo de capacidades de hardware que deben ser compatibles para que un sistema de visualización sea "compatible con Direct3D 10". Este es un cambio significativo, con el objetivo de simplificar el código de la aplicación eliminando el código de verificació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 comparativamente raro después del lanzamiento inicial de Windows Vista y debido a la enorme base instalada de tarjetas gráficas no compatibles con Direct3D 10, los primeros juegos compatibles con Direct3D 10 aún proporcionan rutas de renderizado de Direct3D 9. Ejemplos de tales títulos son juegos escritos originalmente para Direct3D 9 y adaptados a Direct3D 10 después de su lanzamiento, como Company of Heroes , o juegos desarrollados originalmente para Direct3D 9 con una ruta de Direct3D 10 adaptada más adelante durante su desarrollo, como Hellgate: London o Crisis . 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 generar datos de vértices generados por canalización en la memoria mediante la etapa de salida de flujo, soporte de alfa a cobertura de muestreo múltiple, lectura de una superficie de plantilla/profundidad o un recurso de muestreo múltiple una vez que ya no está vinculado como objetivo de renderizado, integración completa de HLSL: todos los sombreadores de Direct3D 10 están escritos en HLSL y se implementan con el núcleo de sombreador común, operaciones de sombreador entero y bit a bit, organización del estado de la canalización en 5 objetos de estado inmutables, organización de las constantes del sombreador en búferes constantes, mayor número de objetivos de renderizado, texturas y muestreadores, sin límite de longitud del sombreador, nuevos tipos y formatos de recursos, [45] capas de tiempo de ejecución/API en capas, [ 46] opción para realizar intercambio y configuración de material por primitivo usando un sombreador de geometría, mayor generalización del acceso a recursos usando una vista, bits de capacidad de hardware heredados eliminados (caps).

Direct3D 10.1

Microsoft anunció Direct3D 10.1 [52] poco después del lanzamiento de Direct3D 10 como una actualización menor. La especificación finalizó con el lanzamiento de DirectX SDK en noviembre de 2007 y el tiempo de ejecución se envió con Windows Vista SP1 , que está disponible desde mediados de marzo de 2008.

Direct3D 10.1 establece algunos estándares de calidad de imagen más 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 preciso sobre el suavizado (tanto multimuestreo como supermuestreo 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 mapas de cubos y modos de fusión independientes). El hardware de nivel Direct3D 10.1 debe admitir las siguientes características: Se ha mejorado el muestreo múltiple para generalizar la transparencia basada en la cobertura y hacer que el muestreo múltiple funcione de manera más efectiva con renderizado de múltiples pasadas, mejor comportamiento de selección: las caras de área cero se seleccionan automáticamente; esto afecta solo la representación de estructura alámbrica, modos de fusión independientes por objetivo de representación, nueva ejecución de sombreador de píxeles de frecuencia de muestra con rasterización primitiva, mayor ancho de banda de etapa de canalización, superficies MSAA de color y profundidad/plantilla ahora se pueden usar con CopyResource como origen o destino. MultisampleEnable solo afecta 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 multimuestra 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 usan el miembro Location (el componente alfa) para especificar un índice de matriz, soporte para TextureCubeArrays.

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

El único hardware Direct3D 10.1 disponible en junio de 2008 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 modelos selectos de gama baja de la serie GeForce 200 de Nvidia . En 2011, los conjuntos de chips Intel comenzaron a admitir 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 tiene se incluyó en la versión de noviembre de 2008 de DirectX SDK. [62] AMD presentó una vista previa del hardware DirectX11 en funcionamiento en Computex el 3 de junio de 2009, ejecutando algunas muestras del SDK de DirectX 11. [63]

El tiempo de ejecución de Direct3D 11 puede ejecutarse en controladores y hardware de clase Direct3D 9 y 10.x utilizando el concepto de "niveles de características", ampliando la funcionalidad introducida por primera vez en el tiempo de ejecución de Direct3D 10.1. [56] [64] [65] Los niveles de funciones permiten a los desarrolladores unificar el proceso de renderizado bajo la API Direct3D 11 y hacer uso de mejoras de la API, como una mejor gestión de recursos y subprocesos múltiples incluso en tarjetas de nivel básico, aunque funciones avanzadas como nuevos modelos de sombreado. y las 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 populares tarjetas DirectX 9.0a, y Direct3D 10, 10.1 y 11 tienen cada uno un nivel de función independiente; cada nivel superior es un superconjunto estricto de un nivel inferior. [67]

La teselación se consideró anteriormente para Direct3D 10, pero luego se abandonó. Las GPU como Radeon R600 cuentan con un motor de teselación que se puede usar con Direct3D 9/10/10.1 [68] [69] [70] y OpenGL, [71] pero no es compatible con Direct3D 11 (según Microsoft). El hardware de gráficos más antiguo, como Radeon 8xxx, GeForce 3/4, admitía otra forma de teselación (parches RT, parches N), pero esas tecnologías nunca tuvieron un uso sustancial. Como tal, se eliminó el soporte del hardware más nuevo.

Microsoft también ha insinuado otras características como la transparencia independiente del orden , que nunca fue expuesta por la API Direct3D pero soportada casi de forma transparente por el hardware Direct3D anterior, 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, vinculación dinámica de sombreadores, recursos direccionables, tipos de recursos adicionales, [72] subrutinas, creación de instancias 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), abrazaderas de textura para limitar la precarga de WDDM, requieren 8 bits de precisión subtexel y sub-mip en el filtrado de texturas, límites de textura de 16K, Gather4(soporte para texturas multicomponente, soporte para compensaciones programables), DrawIndirect, oProfundidad conservadora, sesgo de profundidad, [73] [74] salida de flujo direccionable, sujeción de mapa MIP por recurso, ventanas gráficas de punto flotante, instrucciones de conversión de sombreador, subprocesos múltiples mejorados.

Otras características notables son la adición de dos nuevos algoritmos de compresión de texturas para un empaquetado más eficiente de texturas HDR/alfa de alta calidad y un mayor caché de texturas .

Visto por primera vez en la versión Release Candidate , Windows 7 integra el primer soporte Direct3D 11 lanzado. La Actualización de plataforma para Windows Vista incluye el tiempo de ejecución Direct3D 11 con todas las funciones 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 se incluye con Windows 8 . [82] [83] El tiempo 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 presenta seguimiento de sombreador y mejoras en el compilador HLSL, compatibilidad con tipos de datos escalares HLSL de precisión mínima, [87] UAV (vistas de acceso desordenado) en cada etapa del proceso, rasterización independiente del objetivo (TIR), opción para asignar SRV de buffers dinámicos con NO_OVERWRITE, procesamiento de sombreado de recursos de video, opción para usar operaciones lógicas en un objetivo 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 a los que puede acceder un sombreador, 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 recursos, opción para usar Direct3D en procesos de la Sesión 0, opción para especificar el clip del usuario planos en HLSL en el nivel de característica 9 y superior, soporte para buffer de sombra en el nivel de característica 9, soporte para reproducción de video, soporte extendido para recursos Texture2D compartidos e intercambio sobre la marcha entre contextos y niveles de características de Direct3D 10 y 11. Direct3D 11.1 incluye el nuevo nivel de característica 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 fusión mejorados y soporte obligatorio para formatos de color de 16 bits para mejorar el rendimiento de entrada. GPU de nivel como Intel HD Graphics . [86] [88] WARP se ha actualizado para admitir el nivel de función 11_1.

La Actualización de plataforma para Windows 7 incluye un conjunto limitado de características de Direct3D 11.1, aunque los componentes que dependen de WDDM 1.2, como el nivel de característica 11_1 y sus API relacionadas, o el buffer cuádruple para renderizado estereoscópico , no están presentes. [89] [90]

Direct3D 11.2

Direct3D 11.2 [91] [92] [93] se envió con Windows 8.1 . [94] [95] Las nuevas funciones de hardware requieren DXGI 1.3 [96] con controladores WDDM 1.3 [97] e incluyen modificación y vinculación del sombreador de tiempo de ejecución, gráfico de vinculación de funciones (FLG), compilador HLSL de bandeja de entrada y opción para anotar comandos de gráficos. [98] Los niveles de características 11_0 y 11_1 introducen soporte opcional para recursos en mosaico con sujeción del nivel de detalle del sombreador (Nivel 2). [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 funciones. [94] [101] Sin embargo, no existe el nivel de característica 11_2; las nuevas funciones se distribuyen entre los niveles de funciones existentes. Aquellos que dependen del hardware se pueden comprobar individualmente a través de CheckFeatureSupport. [95] [102] Algunas de las características "nuevas" 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 el soporte parcial para la creación de instancias en hardware de nivel de característica 9_1 y 9_2; de lo contrario, es totalmente compatible desde el nivel de característica 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 paquetes de sorteos, que se anunciaron más tarde como parte de DirectX 12. [106]

Direct3D 11.3

Direct3D 11.3 [107] se envió en julio de 2015 con Windows 10; Incluye funciones de renderizado menores de Direct3D 12, al tiempo que mantiene la estructura general de la API de Direct3D 11.x. [108] [109] [110] Direct3D 11.3 presenta un valor de referencia de plantilla especificado por sombreador opcional, cargas de vistas de acceso desordenadas con tipo, vistas ordenadas por rasterizador (ROV), Swizzle estándar opcional, mapeo de textura predeterminado opcional, rasterización conservadora (de tres niveles), [111] compatibilidad opcional con acceso a memoria unificada (UMA) y recursos en mosaico adicionales (nivel 2) (recursos en mosaico de volumen). [112]

Direct3D 11.4

Direct3D 12

Direct3D 12 [114] permite un nivel más bajo de abstracción de hardware que versiones anteriores, lo que permite que las aplicaciones futuras mejoren significativamente el escalado multiproceso y disminuyan la utilización de la CPU. Esto se logra haciendo coincidir mejor la capa de abstracción de Direct3D con el hardware subyacente, a través de nuevas características como dibujo indirecto, tablas de descriptores, objetos de estado de canalización concisos y paquetes de llamadas de dibujo. Reducir la sobrecarga del controlador es el principal atractivo de Direct3D 12, de manera similar a Mantle de AMD ; [114] en palabras de su desarrollador principal, Max McMullen, el objetivo principal de Direct3D 12 es lograr "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 gestión directa de los recursos de la GPU desde el código de su aplicación, "muchos [otros] la gente no estaría feliz de tener que hacer eso. [118]

Algunas características nuevas de hardware también se encuentran en Direct3D 12, [110] [119] [120] incluido Shader Model 5.1, [121] Recursos en mosaico de volumen (Nivel 2), [121] Valor de referencia de plantilla especificado de Shader, carga UAV escrita, rasterización conservadora (Nivel 1), mejor colisión y selección con rasterización conservadora, vistas ordenadas de rasterizador (ROV), Swizzles estándar, mapeo de textura predeterminado, cadenas de intercambio, recursos swizzled y recursos comprimidos , [122] modos de combinación adicionales , [123] combinación programable y eficiente Transparencia independiente del orden (OIT) con UAV ordenado por píxeles. [124]

Los objetos de estado de canalización (PSO) [125] 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 cuanto a cómo se podían alterar sus estados, en detrimento del rendimiento. Simplificar el proceso y unificar los canales (por ejemplo, estados del sombreador de píxeles) conduce a un proceso más ágil, lo que reduce significativamente los gastos generales y permite que la tarjeta gráfica genere más llamadas para cada cuadro. Una vez creada, la PSO es inmutable. [126]

Las firmas raíz introducen configuraciones para vincular listas de comandos a los recursos requeridos por los sombreadores. Definen el diseño de los recursos que utilizarán los sombreadores y especifican qué recursos estarán vinculados a la canalización. Una lista de comandos de gráficos tiene una firma de raíz de cálculo y de gráficos, mientras que una lista de comandos de cálculo tendrá solo una firma de raíz de cálculo. Estas firmas raíz son completamente independientes entre sí. Si bien la firma raíz establece los tipos de datos que deben utilizar los sombreadores, no define ni asigna la memoria o los datos reales. [127]

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. [127]

Direct3D 12 también aprendió de AMD Mantle [ cita necesaria ] en listas de comandos y paquetes, con el objetivo de garantizar que la CPU y la GPU funcionen juntas de una manera más equilibrada.

En Direct3D 11, los comandos se envían desde la CPU a la GPU uno por uno, y la GPU procesa estos comandos de forma secuencial. Esto significa que los comandos se ven obstaculizados por la velocidad a la que la CPU podría enviar estos comandos de forma lineal. Dentro de DirectX 12, estos comandos se envían como listas de comandos y contienen toda la información requerida en un solo paquete. Entonces, la GPU es capaz de calcular y ejecutar este comando en un solo proceso, sin tener que esperar información adicional de la CPU.

Dentro de estas listas de comandos hay paquetes. Mientras que anteriormente la GPU simplemente tomaba, usaba y luego olvidaba los comandos, los paquetes se pueden reutilizar. Esto disminuye la carga de trabajo de la GPU y significa que los activos repetidos se pueden utilizar mucho más rápido.

Si bien la vinculación de recursos es bastante conveniente en Direct3D 11 para los desarrolladores en este momento, su ineficiencia significa que varias capacidades del hardware moderno están siendo drásticamente infrautilizadas. Cuando un motor de juego necesitaba recursos en DX11, tenía que extraer los datos desde cero cada vez, lo que significaba procesos repetidos y usos innecesarios. En Direct3D 12, los montones de descriptores y las tablas significan que los desarrolladores pueden asignar los recursos más utilizados en tablas, a las que la GPU puede acceder rápida y fácilmente. 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. [128]

Direct3D 12 presenta compatibilidad explícita con múltiples adaptadores, lo que permite el control explícito de múltiples sistemas de configuración de GPU. Estas configuraciones se pueden crear con adaptadores de gráficos del mismo proveedor de hardware o de diferentes proveedores de hardware juntos. [129]

Microsoft lanzó un soporte experimental de D3D 12 para Windows 7 SP1 en 2019 a través de un paquete NuGet dedicado. [130] [131] [132]

Arquitectura

Capa abstracta

Direct3D es un componente del subsistema API de Microsoft DirectX . El objetivo de Direct3D es abstraer la comunicación entre una aplicación de gráficos y los controladores de hardware de gráficos. Se presenta como una fina capa abstracta a un nivel comparable al GDI (ver diagrama adjunto). Direct3D contiene numerosas características de las que carece GDI.

Direct3D es una API de gráficos en modo inmediato . Proporciona una interfaz de bajo nivel para cada función 3D de la tarjeta de vídeo ( transformaciones, recorte, iluminación , materiales , texturas , almacenamiento en búfer de profundidad , etc.). Alguna vez tuvo un componente de modo retenido de nivel superior , ahora oficialmente descontinuado.

El modo inmediato de Direct3D presenta tres abstracciones principales: dispositivos , recursos y cadenas de intercambio (ver diagrama adjunto). Los dispositivos son responsables de renderizar la escena 3D. Proporcionan una interfaz con diferentes capacidades de renderizado. Por ejemplo, el dispositivo mono proporciona reproducción en blanco y negro, mientras que el dispositivo RGB reproduce en color. Hay cuatro tipos de dispositivos:

Dispositivo

Cada dispositivo contiene al menos una cadena de intercambio . Una cadena de intercambio se compone de una o más superficies de amortiguación trasera . El renderizado se produce en el buffer posterior .

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

Direct3D implementa dos modos de visualización:

Tubería

Proceso de canalización de gráficos Direct3D 11

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

  1. Ensamblador de entrada : [144] Lee datos de vértice desde un búfer de vértice proporcionado por la aplicación y los envía a la canalización.
  2. Vertex Shader : [145] Realiza operaciones en un solo vértice a la vez, como transformaciones, skinning o iluminación.
  3. Hull-Shader : [146] Realiza operaciones en conjuntos de puntos de control de parches y genera datos adicionales conocidos como constantes de parches.
  4. Teselador : [147] Subdivide la geometría para crear representaciones de orden superior del casco.
  5. Domain-Shader : [148] Realiza operaciones en los vértices generados por la etapa de teselación, de forma muy similar a un sombreador de vértices.
  6. Geometry Shader : [149] 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. Stream-Output : [150] Puede escribir los resultados de la etapa anterior en la memoria. Esto es útil para recircular datos nuevamente en la tubería.
  8. Rasterizador : [151] [152] Convierte primitivos en píxeles y los introduce en el 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 : [153] 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 : [154] Combina varios tipos de datos de salida ( valores de sombreado de píxeles , combinación alfa, profundidad/plantilla...) para crear el resultado final.

Las etapas de la tubería ilustradas con una caja redonda son totalmente programables. La aplicación proporciona un programa de sombreado que describe las operaciones exactas que se deben completar en esa etapa. Muchas etapas son opcionales y se pueden desactivar por completo.

Niveles de características

En Direct3D 5 a 9, cuando las nuevas versiones de la API introdujeron soporte para nuevas capacidades de hardware, la mayoría de ellas eran opcionales: cada proveedor de gráficos mantuvo 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 hacía que la programación de gráficos entre proveedores fuera 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 que todas las tarjetas gráficas compatibles debían cumplir, con solo unas pocas capacidades opcionales para operaciones y formatos de textura compatibles.

Direct3D 10.1 agregó algunos requisitos de hardware obligatorios nuevos y, para seguir siendo compatible con el hardware y los controladores 10.0, estas características se encapsularon en dos conjuntos llamados "niveles de características", con el nivel 10.1 formando un superconjunto del nivel 10.0. A medida que Direct3D 11.0, 11.1 y 12 agregaron soporte para 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 funciones que encapsulan varias tarjetas Direct3D 9 con controladores WDDM , y Direct3D 11.1 reintrodujo algunas funciones opcionales para todos los niveles, [155] que se ampliaron en Direct3D. 11.2 y versiones posteriores.

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

Los nuevos niveles de funciones se introducen con versiones actualizadas de la API y normalmente encapsulan:

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

Existen capacidades separadas para indicar soporte para operaciones de textura y formatos de recursos específicos; estos se especifican para cada formato de textura utilizando una combinación de indicadores de capacidad. [156] [157]

Los niveles de funciones utilizan un guión bajo como delimitador (es decir, "12_1"), mientras que las versiones API/en tiempo de ejecución utilizan un punto (es decir, "Direct3D 11.4").

Direct3D 11 niveles

En Direct3D 11.4 para Windows 10, hay nueve niveles de funciones proporcionados por D3D_FEATURE_LEVELestructura; Los niveles 9_1, 9_2 y 9_3 (conocidos colectivamente como Direct3D 10 Nivel 9 ) vuelven a encapsular varias características de las tarjetas Direct3D 9 populares, los niveles 10_0, 10_1 se refieren a las respectivas versiones heredadas de Direct3D 10, [65] 11_0 y 11_1 reflejan la característica introducida con API y 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 funciones introducidos con la API de Direct3D 12.

Direct3D 12 niveles

Direct3D 12 para Windows 10 requiere hardware de gráficos que cumpla 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. Hay dos niveles de funciones nuevas, 12_0 y 12_1, que incluyen algunas funciones nuevas expuestas por Direct3D 12 que son opcionales en los niveles 11_0 y 11_1. [158] Algunas características previamente opcionales se realinean como línea de base en los niveles 11_0 y 11_1. Shader Model 6.0 se lanzó con Windows 10 Creators Update y requiere la actualización de aniversario de Windows 10 y los controladores WDDM 2.1.

Direct3D 12 presenta un modelo de enlace de recursos renovado que permite el control explícito de la memoria. Los objetos abstractos de "vista de recursos" [160] ahora se representan con descriptores de recursos, que se asignan mediante tablas y montones de memoria. [161] Los niveles de enlace de recursos definen el número máximo de recursos que se pueden abordar mediante CBV (vista de búfer constante), SRV (vista de recursos de sombreado) y UAV (vista de acceso desordenado), así como unidades de muestra de textura. El hardware de nivel 3 permite recursos completamente ilimitados solo restringidos por el tamaño del montón de descriptores, mientras que el hardware de nivel 1 y 2 imponen algunos límites en la cantidad de descriptores ("vistas") que se pueden usar simultáneamente. [162] [163]

subprocesos múltiples

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

La capacidad de ejecutar el tiempo de ejecución en modo multiproceso se introdujo con el tiempo de ejecución de 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 escrita puede tomar el control de la ejecución en el controlador en modo de usuario y potencialmente podría acceder a datos de otro proceso dentro de la memoria de la GPU mediante el envío de comandos modificados. Aunque está protegida del acceso de otra aplicación, una aplicación bien escrita aún necesita protegerse contra fallas y pérdidas del dispositivo causadas por otras aplicaciones.

El sistema operativo administra los subprocesos por sí mismo, lo que permite que el hardware cambie de un subproceso a otro cuando sea apropiado, y también maneja la administración de memoria y la paginación (a la memoria del sistema y al disco) a través de la administración de memoria integrada del kernel del sistema operativo.

El cambio de contexto más detallado, es decir, la posibilidad de cambiar dos subprocesos de ejecución en el nivel de instrucciones de sombreado en lugar del nivel de comando único o incluso de un lote de comandos, se introdujo en WDDM/DXGI 1.2, que se envió con Windows 8. [ 86] supera un posible problema de programación cuando la aplicación tendría una ejecución muy prolongada de un solo comando/lote de comandos y tendría que ser finalizada por el temporizador de vigilancia del sistema operativo. [164]

WDDM 2.0 y DirectX 12 se han rediseñado para permitir llamadas de sorteo totalmente multiproceso. Esto se logró haciendo que todos los recursos fueran inmutables (es decir, de solo lectura), serializando los estados de representación y usando paquetes de llamadas de sorteo. Esto evita una gestión compleja de recursos en el controlador en modo kernel, haciendo posibles múltiples llamadas reentrantes al controlador en modo usuario a través de contextos de ejecuciones simultáneas proporcionados por subprocesos de representación separados en la misma aplicación.

Direct3D móvil

Direct3D Mobile se deriva de Direct3D pero ocupa menos memoria . Windows CE proporciona soporte para Direct3D Mobile. [165]

Implementaciones alternativas

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

Herramientas relacionadas

D3DX

Direct3D viene con D3DX, una biblioteca de herramientas diseñada para realizar cálculos matemáticos comunes en vectores , matrices y colores, cálculo de matrices de visualización y proyección , interpolaciones spline y varias tareas más complicadas, como compilar o ensamblar sombreadores utilizados para programación gráfica 3D. , almacenamiento de animación esquelética comprimida y pilas de matrices. Hay varias funciones que proporcionan operaciones complejas sobre mallas 3D , como cálculo del espacio tangente, simplificación de mallas, transferencia de radiancia precalculada , optimización para la eliminación y compatibilidad con caché de vértices, y generadores de mallas de texto 3D. Las funciones 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 utilizar en aplicaciones de la Tienda Windows. [179]

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

DXUT

DXUT (también llamado marco de muestra) es una capa creada sobre la API de Direct3D. El marco está diseñado para ayudar al programador a dedicar menos tiempo a tareas mundanas, como crear una ventana, crear un dispositivo, procesar mensajes de Windows y manejar eventos del dispositivo. DXUT se eliminó con Windows SDK 8.0 y ahora se distribuye como fuente a través de CodePlex. [188]

Ver también

Referencias

  1. ^ "Configuración de la funcionalidad de plantilla de profundidad". Microsoft.
  2. ^ "RenderStateManager.UseWBuffer". Microsoft.
  3. ^ "Fusión de texturas (Direct3D 9)". Microsoft.
  4. ^ "Fusión de geometría (Direct3D 9)". Microsoft.
  5. ^ "HLSL". Microsoft.
  6. ^ "Efectos (Direct3D 11)". Microsoft.
  7. ^ "Kit de desarrollo de software DirectX, octubre de 2006". Microsoft. Archivado desde el original el 2 de noviembre de 2011.
  8. ^ "Guía de la plataforma de rasterización avanzada de Windows (WARP): arquitectura y rendimiento WARP". MSDN.
  9. ^ "DirectX 8: aumentando la apuesta por el realismo en los gráficos" (PDF) . evga.com . Consultado el 6 de septiembre de 2023 .
  10. ^ "Inicio> GPU Tecnología ATI SMARTSHADER: potenciando la Radeon de próxima generación". anandtech.com . Consultado el 6 de septiembre de 2023 .
  11. ^ "Sombreadores de vértices y sombreadores de píxeles". thg.ru/ . Consultado el 6 de septiembre de 2023 .
  12. ^ "Sombreadores de vértices y sombreadores de píxeles". archivo.org . Archivado desde el original el 16 de agosto de 2004 . Consultado el 6 de septiembre de 2023 .{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  13. ^ "Descargas de Microsoft DirectX para Windows (Win95, Win98, Win98SE, WinME, Win2000, WinXP)". www.falconfly.de . Archivado desde el original el 10 de noviembre de 2006 . Consultado el 11 de enero de 2022 .
  14. ^ "Descargue DirectX 9.0c End-User Runtime desde el Centro de descarga oficial de Microsoft". www.microsoft.com . Archivado desde el original el 29 de julio de 2015 . Consultado el 11 de enero de 2022 .
  15. ^ "Equipo de gestión de Qube Soft". qubesoft.com. 4 de abril de 2017. Archivado desde el original el 6 de abril de 2017 . Consultado el 5 de abril de 2017 .
  16. ^ ab Claro, Nicole (abril de 1995). "Renderizado adicional" (PDF) . Revista de desarrolladores de juegos . Archivado (PDF) desde el original el 26 de enero de 2021 . Consultado el 21 de agosto de 2022 .
  17. ^ Prosise, Jeff (16 de mayo de 1995). "Unirse a la fiesta multimedia". Revista PC . Consultado el 20 de agosto de 2022 .
  18. ^ Thompson, Nigel (agosto de 1996). "Creación de una escena utilizando Direct3D en modo retenido" (PDF) . Revista de desarrolladores de juegos . Archivado (PDF) desde el original el 26 de enero de 2021 . Consultado el 20 de agosto de 2022 .
  19. ^ Berkes, Otto (12 de abril de 2015). "DirectX". El blog de Otto Berkes . Consultado el 22 de agosto de 2022 .
  20. ^ Chen, Raymond (22 de enero de 2004). "¿Qué pasó con DirectX 4?". Lo viejo y nuevo . Microsoft . Consultado el 28 de agosto de 2022 .
  21. ^ "Comunicado de prensa: Microsoft Meltdown (febrero de 1997)". Corporación Microsoft. 18 de febrero de 1997.
  22. ^ "Comunicado de prensa: Microsoft Meltdown (julio de 1997)". Corporación Microsoft. 22 de julio de 1997.
  23. ^ Ron Fosner. "Obtenga una renderización 3D rápida y sencilla con DrawPrimitive y DirectX 5.0". Revista de sistemas de Microsoft.
  24. ^ "Programación 3 del marco de modo inmediato de Direct3D 7: multitexturización". gamedev.net. 29 de mayo de 2000. Archivado desde el original el 5 de agosto de 2011 . Consultado el 17 de septiembre de 2011 .
  25. ^ "Microsoft envía la versión final de DirectX 6.0". Microsoft. 7 de agosto de 1998.
  26. ^ "Microsoft envía DirectX 6.1". Microsoft. 3 de febrero de 1999.
  27. ^ "Actualización del talismán de abril de 1997 de Bill Gates" (PDF) . Microsoft. 5 de mayo de 1997. Archivado desde el original (PDF) el 8 de diciembre de 2015 . Consultado el 31 de octubre de 2015 .
  28. ^ "DDS (formato de superficie DirectDraw)". MSDN.
  29. ^ "DirectX 7: [vencimiento] julio del 99". GameSpot . REINO UNIDO. Marzo de 1999. Archivado desde el 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 desde el original el 23 de febrero de 2001 . Consultado el 20 de julio de 2019 .
  32. ^ "Gráficos y vídeo DirectX 8: un nuevo comienzo". gamedev.net. 30 de noviembre de 2000. Archivado desde el original el 4 de junio de 2007 . Consultado el 18 de febrero de 2007 .
  33. ^ "Gráficos Direct3D 9". MSDN . Consultado el 30 de septiembre de 2014 .
  34. ^ "Escribir sombreadores HLSL en Direct3D 9". MSDN . Consultado el 30 de septiembre de 2014 .
  35. ^ "HLSL en Direct3D 9.0". Microsoft . Archivado desde el 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. ^ ab "La función del modelo de controlador de pantalla de Windows en DWM". 2 de abril de 2006.
  42. ^ "Funciones de API (Direct3D 10)". MSDN . Consultado el 30 de septiembre de 2014 .
  43. ^ Soporte de Microsoft (17 de marzo de 2009). "Modo retenido Direct3D eliminado de Windows Vista". Archivado desde el original el 1 de junio de 2013.{{cite web}}: CS1 maint: unfit URL (link)
  44. ^ "Kit de desarrollo de software DirectX, febrero de 2007". Microsoft. Archivado desde el original el 3 de septiembre de 2012.
  45. ^ "Tipos de recursos (Direct3D 10)". MSDN . Consultado el 30 de septiembre de 2014 .
  46. ^ "Capas API (Direct3D 10)". MSDN . Consultado el 30 de septiembre de 2014 .
  47. ^ "Noticias CNet" . Consultado el 30 de septiembre de 2014 .
  48. ^ "Núcleo de sombreador común". Microsoft.
  49. ^ "Funciones del sombreador de geometría". Microsoft.
  50. ^ "Etapas de sombreado". Microsoft.
  51. ^ "De qué se trata Direct3D 10: mejoras adicionales". Hardware de Tom. 8 de noviembre de 2006.
  52. ^ "Funciones de Direct3D 10.1". MSDN . Consultado el 30 de septiembre de 2014 .
  53. ^ "Microsoft presenta detalles de DirectX 10.1 en SIGGRAPH". Tecnología extrema. 7 de agosto de 2007.
  54. ^ "Funciones de Direct3D 10.1". MSDN.
  55. ^ ab "Método ID3D11Device::CheckMultisampleQualityLevels". MSDN . Consultado el 30 de septiembre de 2014 .
  56. ^ abc Chuck Walbourn (20 de junio de 2012). "Niveles de funciones de Direct3D". Juegos para Windows y el blog DirectX SDK .
  57. ^ "Enumeración D3D10_FEATURE_LEVEL1". MSDN . Consultado el 22 de noviembre de 2009 .
  58. ^ "Niveles de funciones de Direct3D". MSDN . Consultado el 30 de septiembre de 2014 .
  59. ^ "Funciones de Direct3D 11". MSDN . Consultado el 30 de septiembre de 2014 .
  60. ^ a b "Presentaciones de Gamefest 2008". Microsoft. Archivado desde el original el 13 de noviembre de 2013.
  61. ^ ab "Presentaciones tecnológicas 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 muestra la primera GPU DirectX 11 del mundo". Engadget. 3 de junio de 2009.
  64. ^ ab "GameFest 2008: Introducción al canal de gráficos Direct3D 11". Microsoft. Diapositiva 56. Archivado desde el original el 28 de enero de 2013.
  65. ^ abc "Direct3D 11 en hardware de nivel inferior". MSDN . Consultado el 18 de noviembre de 2012 .
  66. ^ ab "Kit de controladores de Windows: compatible con Direct3D 11". MSDN . Consultado el 13 de junio de 2009 .
  67. ^ ab "Niveles de funciones de Direct3D". MSDN . Consultado el 2 de julio de 2012 .
  68. ^ "Uso de teselación de hardware ATI en DX9". 14 de julio de 2008.
  69. ^ "SDK de teselación AMD DX9". Archivado desde el original el 8 de noviembre de 2010.
  70. ^ "Programación para teselación en tiempo real en GPU" (PDF) . Archivado desde el original (PDF) el 27 de julio de 2011.
  71. ^ "Muestras de teselación OpenGL". Archivado desde el 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. ^ "Modelo de sombreador 5". MSDN . Consultado el 30 de septiembre de 2014 .
  76. ^ "Descripción general de la teselación". Microsoft.
  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". Soporte.microsoft.com. 2 de octubre de 2012 . Consultado el 15 de junio de 2013 .
  79. ^ "La actualización de la plataforma para Windows Vista - Blog para desarrolladores de DirectX - Inicio del sitio - Blogs de MSDN". Blogs.msdn.com. 10 de septiembre de 2009. Archivado desde el original el 8 de abril de 2014 . Consultado el 15 de junio de 2013 .
  80. ^ "Funciones 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. ^ "Funciones de Direct3D 11.1". MSDN . Consultado el 13 de septiembre de 2009 .
  84. ^ "Mejoras en 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. ^ abc "Mejoras en el modelo del controlador de pantalla de Windows en la vista previa para desarrolladores de Windows". MSDN. 13 de septiembre de 2011.
  87. ^ "Tipos escalares" . Consultado el 2 de octubre de 2014 .
  88. ^ "Haswell IGP de Intel incluirá DirectX 11.1 y mayor soporte para aplicaciones profesionales". AnandTech. 5 de agosto de 2011.
  89. ^ "Gráficos DirectX: actualización de plataforma para Windows 7". MSDN. 14 de noviembre de 2012.
  90. ^ "DirectX 11.1 y Windows 7". Juegos para Windows y el blog DirectX SDK . 13 de noviembre de 2012.
  91. ^ "Programación DirectX". MSDN. Archivado desde el original el 31 de octubre de 2013 . Consultado el 30 de septiembre de 2014 .
  92. ^ "Funciones 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. ^ ab "Guía de funciones de Windows 8.1: programación DirectX". Biblioteca MSDN . 26 de junio de 2013. Archivado desde el original el 27 de agosto de 2015 . Consultado el 27 de junio de 2013 .
  95. ^ ab Bennett Sorbo (26 de junio de 2013). "Novedades de Direct3D 11.2". Canal9 - CONSTRUIR 2013 .
  96. ^ "Mejoras en DXGI 1.3". Biblioteca MSDN . 26 de junio de 2013.
  97. ^ "Novedades de los controladores de pantalla de vista previa de Windows 8.1 (WDDM 1.3)". MSDN . Consultado el 30 de septiembre de 2014 .
  98. ^ "Contenido movido (Windows)". Archivado desde el original el 4 de marzo de 2016 . Consultado 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". Canal9 - CONSTRUIR 2013 .
  101. ^ "Funciones 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 listón con Direct3D". Creación de aplicaciones para Windows . 14 de octubre de 2013 . Consultado el 30 de septiembre de 2014 .
  105. ^ "Microsoft rechaza oficialmente Mantle". 16 de octubre de 2013 . Consultado el 30 de septiembre de 2014 .
  106. ^ Segmento de Chris Tector de http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform (a partir de aproximadamente 18 minutos).
  107. ^ "Renderizado (gráficos Direct3D 12): aplicaciones Win32".
  108. ^ Ryan Smith. "AnandTech: Microsoft detalla las nuevas funciones de renderizado de Direct3D 11.3 y 12" . Consultado el 30 de septiembre de 2014 .
  109. ^ Ryan Smith. "AnandTech - Revisión de NVIDIA GeForce GTX 980: Maxwell Mark 2" . Consultado el 30 de septiembre de 2014 . La primera y más importante de las nuevas características de Maxwell 2 es la inclusión de compatibilidad total con Direct3D 11.2/11.3.
  110. ^ ab "Esquema de nuevas funciones de DirectX 11.3: recursos en mosaico: cargas de UAV escritas". 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. ^ "Funciones de Direct3D 11.3". Biblioteca MSDN . 28 de marzo de 2015 . Consultado el 28 de marzo de 2015 .
  113. ^ "Blog de juegos para Windows y DirectX SDK".
  114. ^ ab Ryan Smith. "AnandTech - Microsoft anuncia DirectX 12: la programación de gráficos de bajo nivel llega a DirectX" . Consultado el 30 de septiembre de 2014 .
  115. ^ "Zona de desarrolladores 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. ^ "Una mirada más cercana a DirectX 12 - Informe técnico - Página 3". 31 de marzo de 2014 . Consultado el 30 de septiembre de 2014 .
  119. ^ Ryan Smith. "AnandTech: Microsoft detalla las nuevas funciones de renderizado de Direct3D 11.3 y 12" . Consultado el 30 de septiembre de 2014 .
  120. ^ "Copia archivada". Archivado desde el original el 30 de abril de 2018 . Consultado el 19 de septiembre de 2014 .{{cite web}}: CS1 maint: archived copy as title (link)
  121. ^ ab "Shader Model 5.1: aplicaciones Win32".
  122. ^ "Conozca el futuro de los gráficos para PC: Microsoft revela DirectX 12 más rápido, similar a una consola". Mundo PC . 20 de marzo de 2014 . Consultado el 30 de septiembre de 2014 .
  123. ^ "DirectX 12 también agregará nuevas funciones para las GPU de próxima generación". 21 de marzo de 2014 . Consultado el 30 de septiembre de 2014 .
  124. ^ Kowaliski, Cyril (21 de marzo de 2014). "DirectX 12 también agregará nuevas funciones para las GPU de próxima generación". El informe técnico . Consultado el 1 de abril de 2014 .
  125. ^ "Biblioteca Técnica". Intel . Consultado el 21 de diciembre de 2022 .
  126. ^ stevewhims (30 de diciembre de 2021). "Pipelines y Shaders con Direct3D 12: aplicaciones Win32". aprender.microsoft.com . Consultado el 19 de diciembre de 2023 .
  127. ^ ab stevewhims (6 de febrero de 2023). "Descripción general de las firmas raíz: aplicaciones Win32". aprender.microsoft.com . Consultado el 19 de diciembre de 2023 .
  128. ^ "Descripción general de Direct3D 12, parte 7: montones dinámicos" . Consultado el 2 de octubre de 2014 .
  129. ^ "Adaptador múltiple". Archivado desde el original el 14 de septiembre de 2016 . Consultado el 3 de agosto de 2016 .
  130. ^ "Transferencia de juegos DirectX 12 a Windows 7". 21 de agosto de 2019.
  131. ^ "Especificaciones de DirectX".
  132. ^ "Microsoft.Direct3D.D3D12On7 1.1.0".
  133. ^ Modelo de sombreador HLSL 6.0
  134. ^ ab "Anuncio de nuevas funciones de DirectX 12". Blog para desarrolladores de DirectX . Consultado el 24 de febrero de 2018 .
  135. ^ "Aprendizaje automático directo (DirectML)". Documentos de Microsoft . Consultado el 28 de junio de 2020 .
  136. ^ "DirectML". Documentos de Microsoft.
  137. ^ "Próximamente a DirectX 12: sombreadores de malla y sombreadores de amplificación: reinventar el canal de geometría". Blog para desarrolladores de DirectX . Consultado el 28 de junio de 2020 .
  138. ^ "Próximamente a DirectX 12: comentarios de muestra: algunos datos útiles que alguna vez estuvieron ocultos, desbloqueados". Blog para desarrolladores de DirectX . Consultado el 4 de noviembre de 2019 .
  139. ^ "DirectX Raytracing (DXR) Nivel 1.1". Blog para desarrolladores de DirectX . Consultado el 6 de noviembre de 2019 .
  140. ^ "Próximamente a DirectX 12: más control sobre la asignación de memoria". Blog para desarrolladores de DirectX . Consultado el 11 de noviembre de 2019 .
  141. ^ "Software Rasterizer para DirectX 9.0 SDK". Microsoft. 1 de agosto de 2005. Archivado desde el original el 4 de septiembre de 2012.
  142. ^ "Recursos de Direct3D: grupo de memoria". Archivado desde el original el 9 de mayo de 2008.
  143. ^ "Canalización de gráficos". Gráficos Direct3D 11. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  144. ^ "Etapa de ensamblador de entrada". Gráficos Direct3D 11. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  145. ^ "Etapa de sombreador de vértices". Gráficos Direct3D 11. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  146. ^ "Etapas de teselación". Gráficos Direct3D 11. Documentos de Microsoft . Etapa de sombreador de casco . Consultado el 19 de octubre de 2021 .
  147. ^ "Etapas de teselación". Gráficos Direct3D 11. Documentos de Microsoft . Etapa Teselador . Consultado el 19 de octubre de 2021 .
  148. ^ "Etapas de teselación". Gráficos Direct3D 11. Documentos de Microsoft . Etapa de sombreador de dominio . Consultado el 19 de octubre de 2021 .
  149. ^ "Etapa de sombreado de geometría". Gráficos Direct3D 11. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  150. ^ "Etapa de salida de flujo". Gráficos Direct3D 11. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  151. ^ "Estados de renderizado". DirectX 9.0 para código administrado. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  152. ^ "Etapa de rasterizador". Gráficos Direct3D 11. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  153. ^ "Etapa de sombreado de píxeles". Gráficos Direct3D 11. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  154. ^ "Etapa de fusión de salida". Gráficos Direct3D 11. Documentos de Microsoft . Consultado el 19 de octubre de 2021 .
  155. ^ ab "Funciones de Direct3D 11.1: aplicaciones Win32".
  156. ^ "Enumeración D3D11_FORMAT_SUPPORT". MSDN . Consultado el 16 de junio de 2015 .
  157. ^ "Enumeración D3D11_FORMAT_SUPPORT2". MSDN . Consultado el 16 de junio de 2015 .
  158. ^ "Niveles de hardware: aplicaciones Win32". aprender.microsoft.com . Consultado el 21 de diciembre de 2022 .
  159. ^ "D3D12_FEATURE: aplicaciones Win32".
  160. ^ "Introducción a un recurso en Direct3D 11: aplicaciones Win32".
  161. ^ Wolfgang Engel . "Introducción al enlace de recursos en Microsoft DirectX 12".
  162. ^ GVCS005 - Microsoft Direct3D 12: nuevos detalles de API y optimizaciones de Intel Archivado el 4 de abril de 2015 en Wayback Machine .
  163. ^ "Espectáculos". aprender.microsoft.com . Consultado el 21 de diciembre de 2022 .
  164. ^ "Detección y recuperación de tiempo de espera (TDR): controladores de Windows". Microsoft .
  165. ^ Direct3D Mobile, Microsoft, 6 de enero de 2010.
  166. ^ "El equipo de Wine se enorgullece de anunciar que la versión estable Wine 4.0". VinoHQ . Consultado el 3 de abril de 2019 .
  167. ^ "WineD3DOnWindows: la wiki oficial de vinos". Wiki.winehq.org. 2 de junio de 2013. Archivado desde el original el 17 de enero de 2009 . Consultado el 15 de junio de 2013 .
  168. ^ WineHQ - vkd3d, Direct3D 12, 3 de abril de 2019 , consultado el 30 de junio de 2020
  169. ^ "Lanzamiento de Vkd3d 1.0". VinoHQ . Consultado el 3 de abril de 2019 .
  170. ^ Michael Larabel (23 de agosto de 2019). "Sucursal de ofertas de Proton de Valve con VKD3D para Direct3D 12 sobre Vulkan". Forónix . Consultado el 7 de octubre de 2019 .
  171. ^ Jason Evangelho (1 de marzo de 2019). "Windows 10 versus Linux: 6 juegos de Steam comparados con el NUC Hades Canyon de Intel". Forbes . Consultado el 7 de octubre de 2019 .
  172. ^ 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
  173. ^ 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
  174. ^ "Repositorio D9VK GitHub". GitHub . Consultado el 6 de octubre de 2019 .
  175. ^ Michael Larabel (30 de julio de 2019). "Proton rebasado en Wine 4.11, agrega D9VK Direct3D 9, mejor utilización de la CPU y DXVK 1.3". Forónix . Consultado el 7 de octubre de 2019 .
  176. ^ "Implementar la interfaz Direct3D9 de Joshua-Ashton · Solicitud de extracción n.º 1275 · doitsujin/dxvk". GitHub . Consultado el 17 de diciembre de 2019 .
  177. ^ Compile compatibilidad con 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
  178. ^ Joey Sneddon (10 de octubre de 2018). "Ubuntu 18.10 agrega compatibilidad con Gallium Nine, la última versión de Mesa 18.2.2". ¡DIOS MÍO! ¡Ubuntu! . Consultado el 7 de octubre de 2019 .
  179. ^ "Referencia de D3DX 11". MSDN . Consultado el 30 de septiembre de 2014 .
  180. ^ "Vivir sin D3DX". MSDN.
  181. ^ "Herramienta de compilación de efectos". Microsoft.
  182. ^ "Matemáticas de armónicos esféricos". msdn.com . Consultado el 23 de noviembre de 2014 .
  183. ^ "Efectos 11". CódigoPlex . Archivado desde el original el 24 de septiembre de 2014 . Consultado el 30 de septiembre de 2014 .
  184. ^ "Biblioteca de procesamiento de geometría DirectXMesh". CódigoPlex . Archivado desde el original el 29 de septiembre de 2014 . Consultado el 30 de septiembre de 2014 .
  185. ^ "Biblioteca de procesamiento de texturas DirectXTex". CódigoPlex . Archivado desde el original el 25 de septiembre de 2014 . Consultado el 30 de septiembre de 2014 .
  186. ^ "Kit de herramientas DirectX". CódigoPlex . Archivado desde el original el 29 de septiembre de 2014 . Consultado el 30 de septiembre de 2014 .
  187. ^ "UVAtrlas". CódigoPlex . Archivado desde el original el 27 de junio de 2015 . Consultado el 23 de noviembre de 2014 .
  188. ^ "Actualización de escritorio DXUT para Win32". MSDN.

enlaces externos