Red de conocimientos turísticos - Conocimientos sobre las estaciones solares - A menudo oigo hablar de la aceleración de las tarjetas gráficas. ¿Cuál es el concepto de aceleración?

A menudo oigo hablar de la aceleración de las tarjetas gráficas. ¿Cuál es el concepto de aceleración?

Gráficos de aceleración de gráficos elementales

Primero que nada, hablemos de ello: tarjeta aceleradora de gráficos. Es una tarjeta de expansión que se utiliza para acelerar el procesamiento de gráficos. ¿Qué es el llamado procesamiento de gráficos? Las computadoras en la era del texto plano, con líneas de comandos y texto, no se llamaban procesamiento de gráficos. -P Los gráficos y el texto son dos cosas que las computadoras generan para "ver".

1. El texto, la era olvidada

El procesamiento de texto real, desafortunadamente, ha sido completamente eliminado después de DOS. Por lo tanto, no existe la llamada "tarjeta aceleradora de texto", porque las tarjetas gráficas actuales pueden funcionar normalmente en Windows incluso si no tienen ninguna capacidad de procesamiento de textos. Llegados a este punto, algunas personas pueden preguntarse: ¿No es el texto en Windows simplemente "texto"? La respuesta es: para ti, sí. Pero para una computadora, no es texto. El texto en Windows también es un gráfico. Esas palabras estaban pintadas en las ventanas. Abra Fuentes en el Panel de control. ¿Qué viste? Varias fuentes, ¿verdad? Estos no se almacenan en la tarjeta gráfica, sino en el disco duro. Cuando Windows recibe un comando para imprimir una línea en la ventana, programa un programa de "dibujo" que lee las fuentes del disco duro y las dibuja en la pantalla. Ahora está claro: la interfaz de Windows está completamente basada en gráficos. Por eso las tarjetas aceleradoras de gráficos son muy importantes para Windows. Bien, ahora ¡olvidémonos del "texto"! -_-

2. Definición de gráficos, píxeles, etc.

Echemos un vistazo a la definición de gráficos. Hay dos definiciones distintas de gráficos en las computadoras. El primero se llama gráficos rasterizados y el segundo se llama gráficos vectoriales. Los llamados "gráficos rasterizados", cada jugador de computadora tiene una amplia exposición. Ahora abre el programa "Paint" de Windows, dibuja algunos círculos, líneas y colores a voluntad y luego amplía la imagen 8 veces (no necesito guiarte para hacer esto, ¿verdad?). ¿ver? ¿Tu cuerpo está formado por pequeños cuadrados? Cada pequeño cuadrado se llama píxel. En otras palabras, tus gráficos están formados por pequeños píxeles.

Mirando fijamente un píxel, ¿qué encuentras? Así es, ¡un píxel tiene un solo color! (#%@#%^@). Cualquiera que sepa un poco sobre la ciencia del color debe saber que la luz se compone de los tres colores primarios: rojo, verde y azul en cualquier proporción. Un píxel en esta imagen también se compone de rojo, verde y azul. En la animación CG más extensa, cada color primario se compone de 8 números binarios 0 o 1, es decir, 8 bits, es decir, la expresividad de cada color es 2 ^ 8 = 256, lo que se denomina "escala de colores". ¿Has estudiado estadística? Cada color primario tiene 256 niveles de color, entonces, ¿cuántos colores expresivos tienen los tres colores primarios R/G/B? Bueno, olvídalo, te lo diré. Hay que multiplicarlos. El resultado es 256x256x256 =...1677 7216 tipos. ¿Guau? ! ¿mucho? Bien, dividámoslo usando el sistema de miles que usan las computadoras: 16, 777, 216 = 16 m. Esto es lo que suele decir la gente: 16 billones de colores, colores verdaderos, etc.

Aquí tenéis un pequeño episodio. Si un color ocupa 8 posiciones, entonces R/G/B siempre ocupa 8+8+8 = 24 posiciones. Pero para los sistemas informáticos actuales de 32 bits, 24 bits es una longitud muy incómoda. Debería ser que 24 bits son demasiado pequeños y la computadora no puede manejar 32 bits a la vez, pero procesar dos de 24 bits a la vez excede la capacidad de procesamiento de 32 bits. ¿Qué hacemos? Sólo después de los 24 bits de color podemos agregar 8 bits de datos vacíos. El color de dicho píxel ocupará 32 bits, lo que corresponde a la potencia de procesamiento de un sistema de 32 bits. Se siente mucho más cómodo en la mano. "¿Datos vacíos? ¿Quieres decir que se desperdician 8 bits de datos por píxel?". Aunque los últimos ocho bits no tienen ningún efecto en la visualización del gráfico, la gente siempre intenta aprovechar al máximo lo que tiene porque hay ocho bits más. Entonces se añade otro concepto a los píxeles: la transparencia. Eso es lo que todo el mundo conoce como el valor Alfa de un píxel. Es una buena idea guardar alfa con 8 bits inútiles. De esta manera podemos combinar un píxel con otro según la transparencia del píxel para crear un efecto de superposición. Este es el legendario efecto de fusión alfa. Bastante simple, ¿verdad? Aquí utilizamos un formato más profesional para representar el píxel más utilizado: R8G8B8A8. Vaya, ¿qué? Bien, desmóntalo: R8, G8, B8 y A8, que es rojo 8, verde 8, azul 8 y claro 8. Fanfarronear es bueno~ :P

Esto en cuanto a gráficos rasterizados.

A continuación, llega el momento de otro héroe: los gráficos vectoriales. No lo subestimes, gran parte de la base actual de la imagen 3D se basa en ello.

Los gráficos rasterizados son puntos, pero ¿qué son los gráficos vectoriales? De hecho, también es un punto, pero hay una fórmula matemática. Digámoslo de esta manera: si los gráficos rasterizados le dicen a la computadora qué color dibujar en cada punto, entonces los gráficos vectoriales le enseñan a la computadora cómo dibujar una forma. Por ejemplo, un círculo. Si se representa mediante gráficos rasterizados, debe haber una gran cantidad de píxeles para describir el color de cada punto en el área donde se encuentra el círculo. Representado en gráficos vectoriales: es un círculo, el centro del círculo y el radio del círculo (también puede ser el color del círculo). Es así de simple. Cuando la computadora dibuja estas dos imágenes, es un trabajo completamente diferente. Al dibujar una imagen rasterizada, la computadora lee todos los datos de píxeles y luego copia el modelo original en el búfer de visualización para que podamos ver el círculo en la pantalla. Dibujar un círculo vectorial es completamente diferente: primero la computadora tiene que determinar el centro y el radio del círculo, y luego determinar en qué parte de la pantalla caerá el círculo. Este paso muy importante se llama configuración. Después de encontrar el área de la pantalla donde se encuentra el círculo, puedes llenar esta área con el color especificado. Este paso se llama rasterización. Una vez rellenada el área donde se encuentra el círculo, naturalmente veremos el círculo. b)

Esta es la base original de la animación cg. Tenga en cuenta las definiciones de gráficos rasterizados y gráficos vectoriales, así como también cómo dibujar gráficos vectoriales. Generalmente hay dos pasos, configuración y rasterización. Esto es muy importante en el futuro conocimiento de gráficos 3D.

Aceleración lógica para aceleración de gráficos

Hace mucho tiempo, todo el trabajo de dibujo lo realizaba nuestra gran y sagrada CPU. En aquella época, las tarjetas gráficas se utilizaban realmente para "lucir cosas". Su trabajo es "mover" los datos procesados ​​por la CPU a la pantalla. La CPU trabajó muy duro en ese momento. Ahora, las CPU son cada vez más rápidas y realizan menos trabajo. Permítanme hablar primero sobre las etapas de aceleración de gráficos. Aceleración de imágenes 2D, aceleración de Windows y aceleración de imágenes 3D. :rolleyes:

Primero, aceleración 2D simple y rígida

La aceleración 2D es un producto con una larga historia. Su función es reemplazar la CPU con un chip de visualización y mover los datos de la memoria bloque a bloque. Por ejemplo, si desea mover una ventana, ¿qué hacía la CPU en la era sin aceleración 2D? 1. Buscar la dirección de la ventana en la memoria de video, 2. Copiar una fila de datos a la dirección de destino, 3. Repita 2 hasta que se hayan copiado todas las filas. Hecho. De esta forma, cuando la ventana es muy grande, la cantidad de datos a procesar por la CPU aumentará exponencialmente, haciendo que la ventana se mueva más lento que el paso de un caracol... ¿Quieres experimentarlo? Bien, vaya al administrador de dispositivos, elimine el controlador de su tarjeta gráfica, luego reinicie... ¡disfrútelo! Mmm. Qué interesante

Con la aceleración 2D, la CPU tiene que hacer mucho menos, pero aún tiene que guiar el chip de visualización para que haga el trabajo de un portero. El trabajo de la CPU: 1. Buscar la dirección de la ventana en la memoria de video, 2. Enviar el comando "Copiar esta línea al destino" a la tarjeta gráfica. 3. Repita el paso 2 hasta que se hayan copiado todas las filas. A primera vista, parece más o menos lo mismo que antes, pero el segundo paso es la clave.

Ahora analicemos el segundo paso: sin aceleración 2D: 1. Lea datos de 32 bits (¡en el artículo introductorio!) y escriba datos de 32 bits en el destino. 2. Repita 1 hasta que se hayan procesado todos los píxeles de una fila. Con aceleración 2D, las únicas tareas son: 1. Enviar un comando a la tarjeta gráfica para copiar esta línea. De esta manera, la aceleración 2D puede liberar en gran medida la carga de la CPU. Ahora todo el mundo sólo necesita mencionar una ventana y moverla. Bastante suave, ¿no? La tarjeta gráfica es responsable del movimiento de la ventana.

En segundo lugar, la extraña aceleración de Windows

Para cualquier programador de PC, Windows puede describirse como "extraño". Hay tantas cosas específicas de Windows que la tarjeta gráfica tiene que crear un plan de aceleración para el propio Windows. Casi no hay tarjetas gráficas con capacidades completas de aceleración de Windows y la velocidad actual de la CPU es suficiente para compensar la falta de aceleración total del hardware en Windows. En términos generales, esto incluye aceleración del cursor del mouse, íconos, ventanas especiales, etc.

La aceleración del mouse utiliza el hardware de la tarjeta gráfica para procesar el cursor del mouse de Windows. El cursor del mouse que ve ahora no pertenece a la misma capa que el resto del escritorio. Está dibujado en la "capa superior" de la tarjeta gráfica. No necesito presentar el contenido específico en detalle. De todos modos, déjame decirte una forma de identificarlo.

Abra una ventana animada, una ventana cuyo contenido cambia constantemente, y mueva el cursor del mouse hacia arriba. Si el cursor sigue parpadeando, la tarjeta gráfica no está acelerando el cursor del mouse. Por el contrario, si el cursor del mouse no se mueve, la tarjeta gráfica acelera el cursor del mouse.

La aceleración de iconos es la función de la tarjeta gráfica para dibujar iconos de Windows. Esta función es realmente poco común, pero para los gráficos transparentes de 32 bits que actualmente se usan comúnmente en Windows XP, las tarjetas aceleradoras de gráficos modernas pueden acelerar la función hasta cierto punto.

Aceleración de ventana especial: ¿la función de aceleración 2D no maneja la aceleración de ventana? ¿Qué tiene de especial? Por supuesto que sí. Mueve una ventana, jaja, ahora sabes lo que está haciendo la computadora. Sin embargo, cuando la ventana superior bloquea la ventana que moviste, es decir, una ventana "siempre al frente" (Windows llama a esto "siempre al frente") bloquea el escritorio, mueves una ventana debajo de ella. ¿Cómo explicarlo? ? En este momento, lo que tiene que hacer Windows es ligeramente diferente. Primero encuentra la parte expuesta de la ventana, luego divide toda la ventana en pedazos pequeños uno por uno y luego los mueve a la posición objetivo uno por uno. ¿Es más problemático? Y si está utilizando una tarjeta gráfica con aceleración de Windows, la tarjeta gráfica puede manejar todo esto por sí sola. No hablemos de la aceleración de Windows, porque es tan grande que todavía no la entiendo del todo. Luego, es el turno de nuestro protagonista - :Charles:

Tercera, compleja y enorme aceleración 3D

A todos les gusta renderizar animaciones 3D (excepto aquellos que se marean a primera vista) de) . ¿Quién no estaría emocionado de ver a un protagonista virtual saltando en la pantalla, matando y salvando al mundo? Hablando de aceleración 3D, porque es demasiado complicado, planeo dividirlo en cinco partes, de simple a complejo, del pasado al futuro, cubriendo los conocimientos básicos de la aceleración 3D, para que todos puedan comprender mejor el trabajo de nuestro Tarjeta aceleradora 3D desconocida.

3.1: Triángulo de Colores

Así empezó el mundo. La gente piensa en usar triángulos para representar objetos 3D. En realidad es muy simple. Cualquiera que haya estudiado geometría en el instituto sabe que tres puntos determinan un plano. Entonces los triángulos siempre son planos. Estos objetos curvos complejos se aproximan mediante facetas, lo que resulta mucho más conveniente a la hora de pintar. Echemos un vistazo al proceso de dibujar un triángulo: ya hablé sobre el proceso de dibujar gráficos vectoriales en mi artículo anterior. De hecho, los triángulos también equivalen a los gráficos vectoriales. Consta de tres vértices. Hay dos pasos en el proceso de pintura: 1. Encuentra la posición del triángulo en la pantalla. 2. Llena el lugar de color. Ese es el proceso de configuración y rasterización del que estoy hablando. Debido a que los objetos son triángulos, le dimos otro nombre a estos dos procesos: configuración de triángulos y rasterización de triángulos. Jaja, un poco de gráficos modernos! Al principio, los gráficos 3D solo tenían colores, no texturas, texturas, etc., por lo que las imágenes generadas se sentían como una luz repentina. En aquella época no existía el concepto de juegos 3D y a los profesionales estos no les interesaban...

3.2: ¿Texturas? Máscaras... + Mezcla de colores

Obviamente, la gente no se va a conformar con ver algo hecho de triángulos desnudos saltando por la pantalla para siempre. Entonces, poco a poco, alguien pensó: ¿Qué tal si ponemos pegatinas de textura en triángulos? Hablando de textura, mira los muebles de tu casa. ¡La veta de la madera en su superficie realmente se parece al mapa de textura usado para los triángulos! El mapeo de texturas funciona en el mundo de los gráficos 3D de manera similar a los fondos de pantalla y pegatinas en hogares reales. En ese momento, en los primeros días del mapeo de texturas, ¡había una fuerte oposición! Algunas personas pensaban que el mapeo de texturas era inútil, tanto es así que durante esa época incluso había empresas que producían tarjetas gráficas que no soportaban el mapeo de texturas (¿te imaginas una tarjeta gráfica sin TMU? ¡Olvidé el nombre de la empresa! Sin embargo, el mapeo de texturas El mapeo todavía muestra su poder. En la tecnología de gráficos 3D actual, el mapeo de texturas es una disciplina independiente.

Algunas personas pueden preguntar, ¿cómo se pega el mapa de textura al triángulo? Puede intentar imaginar que el mapa de textura necesita coordenadas para especificar, al igual que dibuja un punto fijo en la tabla recién creada y deja que la etiqueta se alinee con el punto fijo. En otras palabras, los vértices de cada triángulo contienen el. coordenadas de textura, para que el mapa de textura se pueda pegar en la posición correspondiente durante el procesamiento. ¿Cómo pegarlo? Ah, claro, jaja, ¿cómo se aplican las coordenadas a cada píxel? Se conocen los vértices, entonces también se deben calcular las coordenadas cartográficas de cualquier punto del triángulo. Por cierto, ¿es interpolación?

Usando interpolación, podemos obtener las coordenadas de mapeo correspondientes a cada punto del píxel del triángulo a dibujar, ¿verdad? Con esta coordenada cartográfica, es mucho más sencillo. Usamos coordenadas para obtener los colores de coordenadas correspondientes del mapa. ¿No es solo pegar el mapa? Jaja, este párrafo es un poco tortuoso y se debe a mis malas habilidades de escritura. Léalo atentamente varias veces. ¡Disculpe!

Además, la mezcla de colores provocada por el mapeo de texturas también debe incluirse en esta sección. Mezcla de colores... ¡Lo sé! ¿No se trata simplemente de utilizar el valor Alfa de un píxel para mezclar las operaciones de dos píxeles en un píxel? Eso es cierto, sin embargo, la combinación de colores no se limita a la combinación alfa. Hay muchas maneras de mezclar. Por ejemplo, agregar el color de los píxeles de un triángulo al color de los píxeles originales en la pantalla hace que parezca que el triángulo está "resaltado". Las llamas, halos, etc. en el juego se obtienen mediante sumas. Asimismo, es posible restar, multiplicar o dividir los colores de dos píxeles, lo cual es todo: mezcla de colores. Es precisamente gracias a la mezcla de colores que se pueden lograr varios efectos especiales geniales del juego.

3.3: Revolución de las tarjetas gráficas

La gente ya ha incorporado las funciones mencionadas anteriormente en algunos chips gráficos. De esta forma todo este trabajo queda liberado de la CPU. ¡Está bien! Pero la CPU todavía no está satisfecha: ¡quiero más libertad! La gente está haciendo todo lo posible para reducir la carga de la CPU. Entonces, al final, incluso se lanzó la caja de Pandora que precedió a la configuración del triángulo y al proceso de rasterización del triángulo. Esto es: transformación geométrica y operación de iluminación (transformación & amp; iluminación, temperatura y humedad; l).

Llegados a este punto, nos toca hablar de estos dos procesos puramente matemáticos. Transformación geométrica: Como todos sabemos, los gráficos 3D que vemos en la pantalla están dibujados desde un determinado punto de vista. ¿Cómo se hace esto? Además, ¿cómo se mueven los objetos 3D por la escena? Se trata de un tema anterior al procesamiento de gráficos: la geometría espacial tridimensional. Cada objeto 3D tiene una matriz de datos que representa su posición y orientación, a la que llamamos matriz. Esta matriz almacena información como la posición, la dirección de rotación y el tamaño del zoom de los objetos en la escena. Entonces, cuando un objeto se mueve, no necesitamos cambiar las posiciones de todos los triángulos en detalle, solo necesitamos cambiar la información en la matriz y todo el objeto se mueve. Y las aplicaciones de las matrices no terminan ahí. Finalmente, es necesario convertir toda la escena en un espacio 3D centrado en la cámara, que también está relacionado con la matriz.

La iluminación, otro proceso matemático, calcula la intensidad de la luz que recibe un triángulo a través de la posición, distancia y ángulo de los vértices del triángulo en relación con la fuente de luz en la escena.

Anteriormente, estos dos procesos matemáticos puros requerían CPU para completarse. Una vez que la CPU ha calculado todos los datos del triángulo, envía estos datos a la tarjeta gráfica para su configuración y rasterización. Pero más tarde se descubrió que estas operaciones eran demasiado rígidas y podían integrarse en el chip de visualización. Aquí es donde entran en juego las transformaciones de la geometría del hardware.

Entonces, en este punto, la CPU no tiene nada que hacer. Modifique la matriz del objeto, establezca los parámetros requeridos y luego envíe un comando al chip de visualización: ¡dibuje! No te preocupes por el resto...

3.4: El nacimiento de una nueva CPU: GPU

Entonces, ¿se puede llamar aquí al chip de pantalla unidad de procesamiento de gráficos? NVidia lo dice, pero como verdadero procesador, está incompleto sin capacidad de programación. Cansados ​​de las capas de configuración de la tarjeta gráfica, los programadores gritaron: ¡Libérame! Necesitan urgentemente un diseño que rompa la rígida funcionalidad del hardware actual. Como todo se hace en hardware, se pierde por completo la flexibilidad. El chip de visualización sólo puede procesar triángulos según el diseño del circuito, convirtiéndose en un "procesador de triángulos" rígido. En ese momento, la gente empezó a reflexionar y sintió que dar a los programadores la máxima libertad de expresión era la clave para escribir buenos programas en 3D. Entonces, se diseñó un chip gráfico programable. La mayor diferencia entre este chip y el anterior chip T&L es que todos sus comportamientos se pueden programar. Esto eleva su funcionalidad a un nivel infinito.

En cambio, cuando no hay aceleración 3D por hardware, todo lo hace la CPU, que es lenta pero muy flexible. Luego, con todo el hardware, la flexibilidad también disminuyó una y otra vez. Finalmente, los chips gráficos programables ofrecen la combinación perfecta de velocidad y flexibilidad. En este momento, lo que hacen los programadores parece haber regresado a la era primitiva: escribir sus propios programas para iluminar, cambiar y rasterizar triángulos. ¿Pero qué pasa con esto? ¡Aman la libertad!

Todo está bien y estamos felices de decir: esto es lo que quería.

¿Estás satisfecho? Pero la verdad no es tan perfecta como crees. A Dios le gusta jugarle malas pasadas a la gente.....

3.5: ¿La verdad? ¿error?

Después de tantos años de desarrollo, se puede decir que la tecnología de gráficos 3D rasterizados está madura. Sin embargo, los gráficos que genera nunca han parecido más realistas. No importa cuánto lo intente la gente, sus imágenes siguen animadas y siempre son un poco peores que la "calidad de nivel de película" en la mente de la gente...

¿Qué está pasando? Al mismo tiempo, también se está desarrollando rápidamente otra rama de los gráficos tridimensionales: el trazado de rayos. Los gráficos de trazado de rayos y los gráficos rasterizados se basan en teorías completamente diferentes y los resultados de sus investigaciones son incompatibles. La base teórica de los gráficos de trazado de rayos es utilizar el ojo como punto de partida, rastrear cada rayo y calcular con precisión el color posterior de estos rayos después de la reflexión, refracción y dispersión. Debido a sus complejos principios, este tema requiere menos mano de obra y recursos materiales que los gráficos rasterizados, por lo que sus ventajas sólo se han ido manifestando poco a poco. Se necesitarán unos diez años para ponerlo en uso civil y en la etapa de procesamiento en tiempo real. Si tiene éxito, todas las teorías actuales sobre gráficos rasterizados quedarán completamente revocadas.