¿Es cierto que cuantos más colores muestra la pantalla, más VRAM utiliza?

Algo así como.

Su tarjeta de video tiene framebuffers que contienen los píxeles que se envían a la pantalla. Los píxeles en el framebuffer pueden tener diferentes cantidades de precisión. Piense en ellos como un interruptor de luz. Un interruptor de luz normal está encendido (100%) o apagado (0%). ¿Qué sucede si desea que las luces estén encendidas pero solo al 50% de brillo? Necesita más precisión que encender o apagar, por lo que obtiene un interruptor de luz con encendido / medio / apagado. ¿Qué pasa si quieres tener más control sobre el brillo? Tal vez obtenga un interruptor de luz con 8 o 10 o 16 pasos entre 100% encendido y 0% apagado. El número de pasos entre 100% y 0% de descuento en un framebuffer se llama profundidad de bits , y determina la precisión del color. Cuantos más pasos entre 0% y 100%, más VRAM requiere para mantener los datos.

Simulación de la diferencia en el número de pasos entre gradientes de 8 bits y 10 bits.

HDMI, DVI-D y DisplayPort son modos de soporte que permiten 8, 10, 12 o 16 (y más altos IIRC) framebuffers de bit por componente (bpc). Cuantos más bits, más pasos hay entre 0% y 100%. Los modos de consumo más comunes son 8 o 10 bpc. La mayoría de las computadoras usan un framebuffer de 8 bpc. La mayoría de los HDTV usan un framebuffer de 10bpc.

Los monitores de computadora de consumo y los HDTV son típicamente pseudo-8 bits (6 bits + parpadeo), 8 bits, pseudo-10 bits (8 bits + parpadeo), o en el extremo superior verdadero de 10 bits. Todo esto está relacionado con el número de pasos entre 100% y 0% de descuento para cada punto rojo, azul y verde que forman los píxeles en la pantalla.

Por lo tanto, el bit por componente controla cuántos pasos se pueden mostrar entre 100% activado y 0% desactivado para cada componente, que son rojo, azul y verde; Los tres colores que forman los píxeles en el monitor. (Si desea verlos, apunte la cámara de su teléfono inteligente a un área blanca en el monitor de su computadora y amplíe el zoom, o vaya a la vieja escuela y use una lupa o lupa).

La forma en que esto se simplifica para los consumidores es mediante la “cantidad de colores” que admite el monitor, generalmente “millones de colores” (8bpc) y “miles de millones de colores” (10bpc), o en ocasiones “16 millones de colores” (8bpc) y ” 1 mil millones de colores “(10bpc). Desafortunadamente, tiene que cavar para averiguar si la pantalla es en realidad una pantalla de 8bpc o 10bpc, o si están fingiendo con parpadeo, pero si es una verdadera pantalla de 10bpc, por ejemplo, conectada con HDMI / DVI-D / DP en un Modo de 10bpc, con una tarjeta de video que genera 10bpc, tiene más pasos entre encendido y apagado, lo que hace que los gradientes sean más suaves y mejor antialiasing.

Sin embargo, la precisión (profundidad de bits) es solo una parte de “más colores” que puede mostrar un monitor. La gama de colores que puede mostrar un monitor se denomina “gama”. En orden de menos a más “colores”: las PC suelen admitir la gama sRGB, los HDTV admiten la gama Rec.709, los proyectores de teatro admiten DCI-P3 y la TV UHD es la que más admite con Rec.2020. Estos se ven así:

El triángulo encierra todos los colores que puede mostrar una gama particular. Si observa el gráfico de la izquierda con HDTV y UHDTV, puede ver que las pantallas de HDTV tienen menos color que UHDTV. Digamos que 8bpc le da 1,000 pasos a lo largo de un borde y 10bpc le da 4,000 pasos a lo largo del mismo borde. Puede ver que más pasos son más importantes para UHDTV, donde hay más colores que se pueden mostrar.

De vuelta a su pregunta original:

Para tener más pasos entre apagado y encendido para cada componente rojo, azul y verde, necesita más VRAM para almacenar más pasos en el framebuffer. Eso es técnicamente “más colores”, pero más exactamente son más intensidades de componentes. Sin embargo, si su gama no es lo suficientemente grande, su monitor no puede mostrar o su ojo no puede ver los pasos.

Sí, pero con hardware de computadora moderno, e incluso no tan moderno, la diferencia es tan pequeña que es prácticamente irrelevante.

Era diferente en los años 80 y principios de los 90: no solo la aceleración 3D integrada todavía no era una cosa (las tarjetas de acelerador 3D discretas se convirtieron en una cosa a mediados de los 90), las cantidades de VRAM con las que la mayoría de los desarrolladores tenían que trabajar eran pequeñas, y medido en kilobytes o, para el extremo superior , megabytes de un solo dígito:

  • Para mostrar una imagen de 1024 * 768 (786432 píxeles) en color de 24 bits, necesitaba 1024 * 768 * 3 bytes de VRAM = ~ 2.25 MB de VRAM.
  • Sin embargo, muestra una imagen de 16 bits con esa resolución con 2 MB de VRAM
  • O una imagen de 256 colores (8 bits) con solo 1 MB de VRAM. Tenga en cuenta que este modo de visualización utiliza una paleta: puede mostrar colores de 24 bits, pero solo 256 de ellos pueden estar presentes en la pantalla a la vez.
  • O baje a 16 colores, ajustando dos píxeles por byte de VRAM para mostrar a 1024 × 768 con solo 512 KB de VRAM
  • Luego hubo una salida monocromática, que podría usar para dibujar a esa resolución con menos de 128 KB de VRAM
  • Bajar a 800 * 600 redujo el número de píxeles a 480000
  • Ir más abajo a 640 * 480 redujo el número aún más, a 307200 píxeles
  • 320 * 200 (bastante común para muchos juegos de DOS) tenía solo 64000 píxeles: se podía mostrar una imagen de 8 bits con solo 64K de VRAM
  • El modo de texto requería incluso menos VRAM que eso, pero no puedo dar el número de antemano ya que no lo recuerdo.

En una pantalla y computadora modernas, no. Lo que impacta el uso de vram es la profundidad de color (y obviamente la resolución)

hoy, todo está configurado a una profundidad de color de 32 bits. Esto significa que, independientemente de los colores que se utilicen, la información se almacenará como un número de 32 bits, incluso si esos clors son en blanco y negro. Sin embargo, si pudiera establecer la profundidad de color como (por ejemplo) 8 bits, usaríamos menos vram, pero el espectro de color disponible sería menor.

Hagamos algunos cálculos rápidos. Una imagen de 1920 * 1080 renderizada a una profundidad de color de 32 bits es de aproximadamente (1920 * 1080 * 32/8) 8.2MB. Si esa imagen fuera en blanco y negro (pero aún renderizada a una profundidad de color de 32 bits), el tamaño sería el mismo.

Una imagen de 1080p renderizada a una profundidad de color de 8 bits sería de aproximadamente (1920 * 1080 * 8/8) 2MB. Una imagen de 1080p renderizada a una profundidad de color de 1 bit (blanco y negro verdadero) sería de aproximadamente (1920 * 1080 * 1/8) 260 KB.