La evolución de DirectX en Directx 3D
Al inicio del nacimiento de directx, ya existían muchos estándares en la industria, entre ellos dos estándares importantes: OpenGL y Glide, especialmente el primero, que se utiliza para servidores de gráficos e imágenes, hacer películas, películas científicas y educativas, etc., a medida que la tecnología madura gradualmente y se vuelve cada vez más popular, por ejemplo, el famoso juego Quake 3 en ese momento se basó en este estándar. En ese momento, DirectX no era compatible con muchos hardware y juegos convencionales. Sin juegos ni hardware, incluso si existían buenos estándares, el encanto de DirectX nunca se realizó por completo. Pero con el apoyo y la promoción de Microsoft, tiene esperanza. Entonces, ¿por qué versiones ha pasado DirectX en su desarrollo?
DirectX es actualmente la API principal en el mercado civil
DirectX 1.0: la primera generación de DirectX no tuvo mucho éxito cuando se lanzó. Básicamente se utilizaron API de gráficos profesionales. -OpenGL, la falta de soporte de hardware se ha convertido en el mayor obstáculo para su popularidad. DirectX versión 1.0 es el primer programa que puede leer directamente información de hardware. Proporciona una lectura más directa de las capacidades del hardware de gráficos (como funciones de movimiento de bloques en la tarjeta de visualización), así como funciones básicas de sonido y dispositivos de entrada (Función). Juego para acelerar imágenes bidimensionales (2D). DirectX en ese momento no incluía todas las funciones 3D actuales y aún estaba en su infancia.
DirectX 2.0: DirectX 2.0 ha realizado algunas mejoras en los gráficos bidimensionales, ha añadido algunos efectos dinámicos y ha adoptado la tecnología Direct 3D. En este sentido, DirectX 2.0 es bastante diferente de DirectX 1.0. En DirectX 2.0, se utilizan dos métodos de simulación, "simulación suave y simulación RGB", para acelerar el cálculo de imágenes tridimensionales (3D). DirectX 2.0 también presenta un programa de instalación más fácil de usar y corrige muchos problemas con la interfaz de la aplicación. A partir de DirectX 2.0, básicamente se ha completado el prototipo de toda la arquitectura de diseño de DirectX.
Quake 2
DirectX 3.0: DirectX 3.0 se lanzó poco después del lanzamiento de la última versión de Windows 95 en 1997. En ese momento, los juegos 3D comenzaron a ganar popularidad y DirectX gradualmente. Ganó popularidad en software y hardware. Reconocido por los fabricantes, en 1997 sólo existían tres estándares de interfaz de aplicaciones: la interfaz profesional OpenGL, la interfaz DirectX D de Microsoft y la interfaz Glide de 3dfx. En ese momento, 3dfx era el fabricante de tarjetas gráficas más poderoso y su interfaz Glide era, naturalmente, la más utilizada. Sin embargo, con la adquisición de 3dfx por parte de NVIDIA y el declive de las tarjetas gráficas Voodoo, la interfaz Glide desapareció gradualmente de los ojos de la gente.
Tomb Raider 2
DirectX 5.0: Lo extraño es que Microsoft no lanzó DirectX 4.0 como estaba previsto, sino que actualizó directamente la versión de DirectX a 5.0. Esta versión ha realizado grandes cambios en Direct3D, agregando efectos especiales 3D como efectos de niebla y combinación Alpha para mejorar la sensación de espacio y realismo en los juegos 3D. También agrega la tecnología de compresión de texturas de S3. Al mismo tiempo, DirectX 5.0 también se ha reforzado en otros componentes, incluidas mejoras en tarjetas de sonido y controladores de juegos, y admite más dispositivos. Por lo tanto, DirectX realmente ha madurado desde que se desarrolló hasta DirectX 5.0. En este momento, el rendimiento de DirectX no es inferior al de otras API 3D y es probable que lo alcance por detrás.
Need for Speed 3
DirectX 6.0: Cuando se lanzó DirectX 6.0, uno de sus mayores competidores, Glide, decayó, mientras que DirectX fue reconocido y respaldado por la mayoría de los fabricantes. DirectX 6.0 ha agregado filtrado bilineal, filtrado trilineal y otras tecnologías para optimizar la calidad de la imagen 3D, y la tecnología 3D en los juegos ha entrado gradualmente en una etapa de madurez. El producto representativo de este período es la serie NVIDIA Riva TNT2.
DirectX 7.0: La característica más importante de DirectX 7.0 es su compatibilidad con Tamp;L. El nombre chino de esta tecnología es "Transformación de coordenadas y fuente de luz". Cada objeto en un juego 3D tiene una coordenada. Cuando el objeto se mueve, sus coordenadas cambian, lo que se refiere a la conversión de coordenadas. Antes de la llegada de Temp;L, la conversión de posición y la iluminación requerían cálculos de la CPU. Cuanto más rápida es la CPU, más fluido es el rendimiento del juego. Después de usar la función T&L, el cálculo de estos dos efectos lo calcula la GPU de la tarjeta gráfica, de modo que la CPU pueda liberarse del trabajo ocupado. En otras palabras, si tienes una tarjeta gráfica Temp;L y usas DirectX 7.0, aún puedes ejecutar juegos 3D sin problemas incluso sin una CPU de alta velocidad. Los productos representativos de esta era son las series GeForce 2 y GeForce4 MX.
Counter-Strike
DirectX 8.0: El lanzamiento de DirectX 8.0 desencadenó una revolución en las tarjetas gráficas. Introdujo el motor de renderizado de píxeles (Vertex Shader) y el motor de renderizado de vértices (Pixel Shader). Por primera vez, el concepto se refleja en los efectos especiales de luces y sombras dinámicas. En comparación con la conversión fija de luces y sombras que solo implementa el hardware T&L, las unidades VS y PS son más flexibles, lo que hace que la GPU sea verdaderamente un procesador programable. Esto significa que los programadores pueden utilizarlos para construir escenas 3D con mucha menos dificultad. A través de la renderización de VS y PS, puede crear fácilmente un efecto realista y dinámico de luces y sombras onduladas en la superficie del agua. En ese momento, finalmente se estableció el estatus de autoridad de DirectX, con su producto representativo: la serie GeForce4 Ti.
Need for Speed 6
DirectX 9.0: a finales de 2002, Microsoft lanzó oficialmente DirectX9.0. La precisión de renderizado de la unidad PS en DirectX 9 ha alcanzado el punto flotante. También se cancelaron las unidades Tamp;L de hardware tradicional. La programación del nuevo VertexShader (motor de sombreado de vértices) será mucho más complicada que antes. El nuevo estándar VertexShader agrega control de procesos, más constantes y el número de instrucciones de sombreado por programa ha aumentado a 1024. Además, DX9 ha agregado la función de procesar datos de punto flotante. Anteriormente, solo podía procesar números enteros, rompiendo la barrera de la precisión matemática que anteriormente limitaba la calidad de los gráficos e imágenes de la PC. Cada uno de sus canales de renderizado se ha actualizado a 128-. bit de color de punto flotante, lo que facilita a los programadores de juegos la creación de efectos más hermosos y más fácil de programar.
Entonces, ¿qué nos traerá la nueva generación de DirectX 10 entre bastidores? ·Explicación detallada de la tecnología DirectX 10
1. Arquitectura de renderizado unificada
En comparación con otras innovaciones tecnológicas, la arquitectura de sombreado unificada introducida por Microsoft en Shader Model 4.0 es lo más destacado del punto DX10. . Todos sabemos que Microsoft introdujo tres versiones de Vertex Shader (sombreador de vértices) y Pixel Shader (sombreador de píxeles) en directx 9: 2.0/2.X/3.0. Entre ellos, la compatibilidad con la versión 2.0 del motor de sombreado es el estándar mínimo para las GPU DirectX 9, y las tarjetas gráficas convencionales actuales ya tienen soporte de hardware para la versión 3.0 del motor de sombreado con funciones de procesamiento más avanzadas.
Sin embargo, incluso con DirectX9.0c, para Vertex Shader y Pixel Shader con funciones similares, actualmente los fabricantes de chips gráficos todavía necesitan dividir dos áreas en la GPU para almacenar la matriz Vertex Shader y el canal de mapeo de Pixel Shader. Sin duda, esto es una redundancia de recursos y también aumenta la dificultad y el costo del diseño de GPU. Esta situación será más obvia cuando Direct X10 subdivida aún más el proceso de renderizado en Vertex Shader, Geometry Shader y Pixel Shader. Entonces, ¿es posible integrar ambos? ¡La respuesta es sí!
La arquitectura de renderizado unificada es un enfoque muy innovador. Ya sabes, en muchos casos, si estamos tratando con una escena donde los cálculos de Pixel Shader se usan principalmente y los cálculos de Vertex Shader solo representan una pequeña parte, si se usa un núcleo de pantalla con un diseño de Shader separado, la unidad de cálculo de Vertex Shader puede estar inactivo, pero el fenómeno del cálculo de transición de unidades de Pixel Shader. De manera similar, puede haber el problema de que los datos de Pixel Shader sean relativamente pequeños, pero los datos de cálculo de Vertex Shader sean demasiados. Esto a menudo da como resultado una situación en la que la unidad de sombreado está inactiva por un lado y los recursos de la unidad de sombreado por el otro son escasos.
La arquitectura de renderizado unificada puede hacer un uso más eficiente de los recursos de la tarjeta gráfica
Por ejemplo, en "The Elder Scrolls 4: Oblivion", el 7900GTX tiene un FPS de solo 14~ en un entorno HDR de 1600×1200 Alrededor de 50 fotogramas. Esto se debe a que la hierba u hojas renderizadas de forma independiente se componen de una gran cantidad de polígonos, lo que impone requisitos estrictos a la renderización de vértices de la GPU. En términos relativos, no requiere demasiadas operaciones de píxeles. inactivo y El módulo apex está en un estado abrumado. La arquitectura de renderizado unificada puede ayudarnos a resolver las limitaciones de los recursos de hardware: puede usar recursos de textura sin restricciones y usar instrucciones de sombreado de cualquier longitud. Si se pueden usar unidades de píxeles inactivos para procesar los vértices, entonces ¡La velocidad del juego no será tan lamentable! Además, la arquitectura de renderizado unificada elevará el papel de la GPU desde el simple renderizado de juegos al concepto de informática de juegos. El diseño del motor de sombreado unificado es más adecuado para la informática heterogénea (computación heterogénea), como la informática física y la codificación de imágenes. , etc., el ámbito de aplicación de las tarjetas gráficas se ha ampliado enormemente.
2. Tecnología de memoria virtual
Como todos sabemos, en la era 286/386, la gente inventó la tecnología de direccionamiento virtual para utilizar más memoria. Hoy en día, esta tecnología se utiliza. La memoria gráfica será tan impactante como lo era entonces, llevando completamente la utilización de la memoria gráfica a un nivel completamente nuevo. En el pasado, las GPU usaban reglas de llamada de memoria directa, ya fueran texturas, vértices, polígonos, luces y sombras, todos necesitaban ocupar espacio en la memoria de video. Cuanto mayor era la cantidad de cálculos para estos datos, más espacio ocupaban. Para evitar la necesidad de volver a calcular cada vez, la gente pensó en el método de mapeo de texturas MIP-MAP. En ese momento, el tamaño de los mapas de textura era muy pequeño y las escenas 3D no eran tan complejas. MIP-MAP podía reducir significativamente la cantidad de cálculos de GPU y el uso de memoria. Sin embargo, a medida que aumenta la complejidad de los juegos 3D, la memoria de vídeo por sí sola ya no puede almacenar estos datos. Se debe desarrollar el bus AGP, utilizando parte de la memoria como memoria de vídeo AGP para almacenar temporalmente datos de textura y vértices y complementar la falta de vídeo. capacidad de memoria. Pero por no hablar del anterior AGP 8X, incluso el actual PCI Express X16, que tiene un mayor ancho de banda, está lejos de ser comparable en ancho de banda de memoria. Un problema más grave es que para sincronizar el procesamiento, la GPU reducirá la velocidad de trabajo de la memoria de video para que pueda transmitirse sin problemas con la memoria de la tarjeta de video. Por lo tanto, una vez que se use la memoria de video, la velocidad del sistema será. muy reducido.
Desde este punto de vista, al mejorar el ajuste de textura en el juego, debes prestar atención a tu propia capacidad de memoria de video. Por ejemplo, si quieres jugar FarCry, Battlefield 1942 y otros juegos, si no tienes 256 MB de video. memoria, ni siquiera piense en configurar la calidad de la imagen al nivel más alto, de lo contrario afectará en gran medida su juego y afectará significativamente la velocidad del juego.
Por lo tanto, Microsoft introducirá la tecnología de memoria de video virtual en DirectX 10 basada en el método de administración de memoria virtual. Puede resolver muy bien los problemas anteriores. Todas las texturas, sombreados, etc. se dividen en "pequeños fragmentos" de datos y se pueden transmitir sin problemas incluso en autobuses de baja velocidad. Por ejemplo, una página de 4 KB equivale a un mapa de textura de 32 × 32 × 32 bits. Un mapa de textura de este tamaño ya puede satisfacer las necesidades, de modo que cuando se requiere representación de textura, el sistema no necesita transmitir demasiadas páginas para completar. el trabajo correspondiente. y hacer todo esto casi sin pérdida de rendimiento.
Diagrama de ejecución de la memoria de video del G80
Y combinar la tecnología de memoria de video virtual con un motor de sombreado también es una idea muy innovadora. En la memoria de video, las instrucciones del sombreador se procesan como un bloque de datos abstracto. Al sistema no le importa si el "bloque de datos" se puede cargar en la canalización de instrucciones de la GPU. Una vez que se carga el sombreador, se procesará cada vez. y píxeles hasta que se descarguen. Por lo tanto, para completar instrucciones de sombreado más largas, es necesario aumentar el número de tubos de ejecución de instrucciones de la GPU o utilizar rutas múltiples automáticas para dividir las instrucciones en varios bloques pequeños manejables. Dado que la cantidad de tubos de ejecución de instrucciones de la GPU se fija en el momento del diseño, si desea aumentar la cantidad de tubos de ejecución, sin duda necesitará rediseñar y aumentar la cantidad de transistores. Obviamente, el primer método no es muy bueno. práctico. Por tanto, el segundo método es más práctico y en realidad es el mismo que el sistema de memoria de vídeo virtual que mencionamos. Para adaptarse a la aplicación de ejecución de instrucciones de sombreado, la memoria de video virtual se divide en muchas páginas relativamente independientes. Suponiendo que la canalización de ejecución de instrucciones configurada en la unidad de procesamiento de gráficos puede ejecutar las instrucciones contenidas en toda la página, entonces nuestra operación de sombreado puede establecer un mecanismo de operación de estilo canalización, cargar una página, luego ejecutarla, detenerla y luego cargar otra. Luego se ejecuta la página y se dirige repetidamente la página que contiene las instrucciones para que se cargue en el procesador. Durante este tiempo, la canalización de ejecución funciona de manera muy similar a la caché L1 del procesador, y se puede decir que todo el proceso de operación es consistente con el del procesador. .
A través de la tecnología de memoria de video virtual, la duración de las instrucciones de sombreado no estará limitada por la cantidad de tubos de ejecución de instrucciones. El sistema de almacenamiento puede almacenar más texturas de imágenes y el método de direccionamiento se vuelve fácil y simple, por lo que. La tecnología DirectX10 realiza la poderosa función de recursos disponibles "ilimitados". Por supuesto, los recursos "ilimitados" todavía están limitados por los recursos reales disponibles en el hardware. Si la instrucción es demasiado larga, la GPU necesitará cargar la página de instrucciones varias veces, lo que también provocará una caída significativa en el rendimiento si hay demasiados datos de textura y requiere memoria del sistema o incluso espacio en el disco duro para el almacenamiento; de todo el subsistema de gráficos también se verá afectado. En respuesta a este problema, Microsoft ha establecido dos umbrales para los límites de recursos: mientras no se exceda el primer límite, el sistema puede funcionar; cuando se excede el segundo límite, el sistema no puede funcionar correctamente (a una resolución de 640 × 480); , El valor de fps es inferior a 10). De hecho, algunos fabricantes han utilizado la tecnología de memoria de video virtual antes. La tarjeta gráfica profesional WildCat VP de 3Dlab puede programar 16 GB de memoria de video virtual en una era en la que la memoria de video convencional es de solo 256 MB. Obviamente, cuando puedas utilizar completamente los 16 GB, creo que el problema del cuello de botella del sistema ya no existirá. ·Explicación detallada de la tecnología DirectX 10
3. Conjunto de instrucciones enteras
Además de la arquitectura de renderizado unificada y la memoria de video virtual, DX10 tiene muchas mejoras, la más importante de las cuales es la conjunto de instrucciones de número entero. Quizás se esté preguntando: ¿no es el conjunto de instrucciones de números enteros la base de todos los cálculos? Para las CPU, esto es cierto, pero no olvide, por supuesto, por qué se introdujeron los procesadores de punto flotante y los conjuntos de instrucciones multimedia, porque las operaciones gráficas requieren muchas instrucciones de punto flotante.
El punto flotante es un tipo de datos impreciso. Cuando los datos de búsqueda de valores no coinciden con los datos de textura, se pueden reemplazar por valores aproximados y valores interpolados calculados a partir de múltiples datos. No tiene ningún impacto en la imagen gráfica final. más rápido que los números enteros. Por tanto, la base de la GPU es exactamente la opuesta a la de la CPU, que se basa principalmente en instrucciones de punto flotante. Actualmente, todo lo que manejan los sombreadores se basa en operaciones de punto flotante (excepto las operaciones de prueba previa de rama estática).
En la mayoría de los procesamientos de imágenes, este método de procesamiento no supone ningún problema. Pero cuando se realiza una predicción de rama dinámica o una búsqueda de memoria no interpolada (como al posicionar e indexar el búfer de vértices), este método de procesamiento de operaciones de punto flotante tiene un gran problema. La introducción de operaciones de números enteros en DX10 tendrá muchos beneficios, como la predicción de rama dinámica/estática, el posicionamiento de la caché de vértices y el direccionamiento de memoria general. Los puntos flotantes no pueden realizar cálculos precisos.
4. Acceda directamente al búfer de fotogramas del sombreador de píxeles
El modo de renderizado actual es principalmente renderizado en tiempo real. Cada trabajo de renderizado se completa en tiempo real y no se puede interrumpir. Si desea agregar gradación digital, corrección de color o ajuste de color a la imagen, solo puede volver a calcularla una vez, lo que provoca un retraso en el trabajo general. De hecho, la mayoría de las GPU y controladores funcionarán cuando leas los datos de textura de una imagen que se está renderizando. Pero esta es una operación ilegal (no definida), dicha operación puede interrumpirse en cualquier momento y los desarrolladores generalmente no utilizan esta función.
Hay dos soluciones en la era DX9. La primera es usar dos texturas independientes. Una textura se usa para el trabajo normal y la otra textura de respaldo hace frente a esos cálculos adicionales. es que debe ocupar el doble de espacio en la memoria de video; el segundo es lograr las funciones anteriores simulando la función de fusión en Pixel Shader. ATi ha incorporado un enfoque similar en sus chips GPU, donde simulan la función de procesamiento de vértices fijos original a través de un motor de sombreado de vértices. Esto significa que los diseñadores de GPU deben agregar transistores adicionales al motor de sombreado para lograr las funciones anteriores.
DX10 ha recurrido a una nueva idea: usar el sombreador de imágenes para acceder directamente al búfer de fotogramas para reemplazar parcialmente el renderizado en tiempo real anterior. En algunos casos, podemos interrumpir el renderizado en cualquier momento y agregar lo que sea. queremos el efecto, y luego continuar el cálculo sin afectar todo el proceso de renderizado, haciendo el renderizado más flexible y controlable. Pero eso no significa que no haya problemas en el modo de renderizado en tiempo real en directx10, y es posible que el fabricante haya abandonado el soporte para esta tecnología. Entonces es probable que la tecnología aparezca como una alternativa, por lo que los programadores pueden ignorar la existencia de la tecnología y continuar usando el método antiguo. ·Explicación detallada de la tecnología DirectX 10
5. Tecnología de mosaico de gráficos mejorada
En la era DX8, para mejorar el realismo de las imágenes curvas, los fabricantes de tarjetas gráficas han introducido alto orden. tecnología de superficie, como: RT-Patch de nVidia y N-Patch de ATi. En esencia, llevan el procesamiento de curvas a una nueva era. Mire el mundo real existente. No siempre existe con polígonos cuadrados. Muchos lugares están construidos con superficies curvas, lo que hace que los tipos de objetos reales sean aún más diversos y es difícil. Imagínense lo aterrador que debe ser cuando tenemos la cabeza cuadrada. Sin embargo, toda evolución tecnológica siempre tiene ciertos obstáculos. Las superficies curvas de alto orden no se perfeccionaron en ese momento e incluso provocaron que la imagen se deformara. Como resultado, muchos desarrolladores perdieron interés en esta tecnología y los fabricantes de chips gráficos finalmente abandonaron el soporte de hardware para esta tecnología. Hasta que DirectX 9 introdujo la tecnología de mapeo de desplazamiento y teselación de gráficos adaptativos, estas dos tecnologías volvieron a atraer la atención de la gente. Aunque las dos tecnologías de teselación de superficies de alto orden y mapeo de desplazamiento son compatibles con los chips gráficos de la serie GF6/7 de NVIDIA y la serie X1000 de ATI, la tecnología DirectX actual todavía tiene ciertos problemas para admitir superficies de alto orden.
Aunque las superficies de orden superior no se han vuelto oficialmente populares, las dos tecnologías únicas de teselación de gráficos adaptativos y mapeo de desplazamiento han despertado el interés de la gente.
La teselación de gráficos adaptativos puede realizar diferentes teselas de textura según nuestros requisitos para lograr mejores efectos visuales y hacer que el mundo 3D sea aún más realista. Sin embargo, el mayor problema que encuentran sigue siendo el cálculo de superficies de alto orden. El cálculo más pequeño sin causar daños ni deformaciones a la imagen es un problema que DX10 debe resolver. El hardware de DX10 admitirá varios cálculos generales de superficies de alto orden: superficies Catmull-Rom, curvas Bezier, curvas B-Splines, secciones cónicas, lo que demuestra que la era de la regresión de superficies de alto orden ha llegado, pero solo necesitamos optimizarla. En serio, estos también requieren soporte de hardware del chip gráfico.
6. Tecnología de física (aceleración física)
La tecnología más popular recientemente es la aceleración física y sus aplicaciones es una parte clave de la experiencia de juego de próxima generación. Aumenta la eficiencia del juego. Realidad, inmersión y una experiencia más interesante. NVIDIA también está muy interesada en la aceleración física y agregará soporte de aceleración física a futuros productos DX10.
El G80 ya puede soportar la computación física desde el nivel de hardware
Aunque el concepto de aceleración física se propuso hace mucho tiempo, todavía se encuentra en la etapa conceptual hoy en día: solo física de AGEIA. Algunos juegos pueden admitir tarjetas aceleradoras, y la aceleración física de la GPU de ATI acaba de completar su demostración. La aceleración de la física SLI de NVIDIA tiene que esperar a que los fabricantes de juegos adopten el motor Havok FX antes de que pueda lanzarse. ¡El proceso de promoción es muy lento! las normas inconsistentes. Los motores de aceleración física de los dos campos de AGEIA y Havok son incompatibles entre sí y funcionan de forma independiente. Esto hace que muchos juegos solo admitan un motor de física. Esta situación es muy similar a los primeros días de la era 3D, cuando florecían cien flores. ¡Términos de tecnología y especificaciones!
Se espera que esta situación mejore después del lanzamiento de DX10. Con el soporte de la API de Microsoft, no importa qué motor de física tenga espacio para jugar, creo que se agregarán más juegos. Más operaciones físicas. En el futuro, la GPU DX10 será un procesador de uso más general, es decir, muchos de los procesamientos 3D realizados originalmente por la CPU se transferirán a la GPU, porque la potente GPU es más adecuada para realizar estas tareas que la CPU. Por lo tanto, el rendimiento del juego mejorará enormemente. Microsoft dijo que DX10 abrirá dos SDK, que se encargarán de AGEIA y Havok respectivamente. La PPU de AGEIA actúa directamente sobre el SDK para realizar operaciones físicas de forma independiente. ¡La GPU de NVIDIA también puede manejar dinámicamente operaciones físicas bajo la movilización del motor Havok!