La representación en mosaico es el proceso de subdividir una imagen gráfica por computadora mediante una cuadrícula regular en el espacio óptico y representar cada sección de la cuadrícula, o mosaico , por separado. La ventaja de este diseño es que la cantidad de memoria y ancho de banda se reduce en comparación con los sistemas de renderizado en modo inmediato que dibujan todo el fotograma a la vez. Esto ha hecho que los sistemas de renderizado de mosaicos sean particularmente comunes para el uso de dispositivos portátiles de bajo consumo . El renderizado en mosaico a veces se conoce como arquitectura de "orden medio", porque realiza la clasificación de la geometría en el medio del proceso de gráficos en lugar de cerca del final. [1]
La creación de una imagen 3D para su visualización consta de una serie de pasos. Primero, los objetos que se mostrarán se cargan en la memoria desde modelos individuales . Luego, el sistema aplica funciones matemáticas para transformar los modelos en un sistema de coordenadas común, la visión del mundo . A partir de esta visión del mundo, se crea una serie de polígonos (normalmente triángulos) que se aproxima a los modelos originales vistos desde un punto de vista particular, la cámara . A continuación, un sistema de composición produce una imagen renderizando los triángulos y aplicando texturas al exterior. Las texturas son pequeñas imágenes que se pintan sobre los triángulos para producir realismo. Luego, la imagen resultante se combina con varios efectos especiales y se mueve a un búfer de cuadros , que luego el hardware de video escanea para producir la imagen mostrada. Este diseño conceptual básico se conoce como canal de visualización .
Cada uno de estos pasos aumenta la cantidad de memoria necesaria para contener la imagen resultante. Cuando llega al final del proceso, las imágenes son tan grandes que los diseños típicos de tarjetas gráficas suelen utilizar memoria especializada de alta velocidad y un bus de computadora muy rápido para proporcionar el ancho de banda necesario para mover la imagen dentro y fuera de los distintos subsistemas. componentes de la tubería. Este tipo de soporte es posible en tarjetas gráficas dedicadas, pero a medida que los presupuestos de potencia y tamaño se vuelven más limitados, proporcionar suficiente ancho de banda se vuelve costoso en términos de diseño.
Los renderizadores en mosaico abordan esta preocupación dividiendo la imagen en secciones conocidas como mosaicos y renderizando cada una por separado. Esto reduce la cantidad de memoria necesaria durante los pasos intermedios y la cantidad de datos que se mueven en un momento dado. Para hacer esto, el sistema ordena los triángulos que componen la geometría por ubicación, lo que permite encontrar rápidamente qué triángulos se superponen a los límites de los mosaicos. Luego carga solo esos triángulos en el proceso de renderizado, realiza las diversas operaciones de renderizado en la GPU y envía el resultado al frame buffer . Se pueden utilizar mosaicos muy pequeños, 16×16 y 32×32 píxeles son tamaños de mosaicos populares, lo que hace que la cantidad de memoria y ancho de banda necesarios en las etapas internas también sea pequeña. Y como cada mosaico es independiente, naturalmente se presta a una paralelización simple.
En un renderizador de mosaicos típico, la geometría primero debe transformarse en espacio de pantalla y asignarse a mosaicos de espacio de pantalla. Esto requiere algo de almacenamiento para las listas de geometría de cada mosaico. En los primeros sistemas en mosaico, esto lo realizaba la CPU , pero todo el hardware moderno contiene hardware para acelerar este paso. La lista de geometría también se puede ordenar de adelante hacia atrás, lo que permite a la GPU utilizar la eliminación de superficies ocultas para evitar procesar píxeles que están ocultos detrás de otros, ahorrando ancho de banda de memoria para búsquedas de texturas innecesarias. [2]
Hay dos desventajas principales del enfoque en mosaico. Una es que algunos triángulos se pueden dibujar varias veces si se superponen a varios mosaicos. Esto significa que el tiempo total de renderizado sería mayor que el de un sistema de renderizado en modo inmediato. También existen posibles problemas cuando los mosaicos deben unirse para formar una imagen completa, pero este problema se resolvió hace mucho tiempo [ cita requerida ] . Más difícil de solucionar es que algunas técnicas de imagen se aplican al fotograma como un todo, y estas son difíciles de implementar en un render en mosaico donde la idea es no tener que trabajar con el fotograma completo. Estas compensaciones son bien conocidas y tienen consecuencias menores para los sistemas donde las ventajas son útiles; Los sistemas de renderizado en mosaico se encuentran ampliamente en dispositivos informáticos portátiles.
La representación en mosaico no debe confundirse con los esquemas de direccionamiento de framebuffer en mosaico/no lineal , que hacen que los píxeles adyacentes también sean adyacentes en la memoria. [3] Estos esquemas de direccionamiento son utilizados por una amplia variedad de arquitecturas, no solo por renderizadores en mosaico.
Gran parte del trabajo inicial sobre renderizado en mosaico se realizó como parte de la arquitectura Pixel Planes 5 (1989). [4] [5]
El proyecto Pixel Planes 5 validó el enfoque en mosaico e inventó muchas de las técnicas que ahora se consideran estándar para los renderizadores en mosaico. Es el trabajo más citado por otros artículos en el campo.
El enfoque en mosaico también se conoció temprano en la historia del renderizado por software. Las implementaciones de renderizado de Reyes a menudo dividen la imagen en "cubos de mosaicos".
Al principio del desarrollo de las GPU de escritorio, varias empresas desarrollaron arquitecturas en mosaico. Con el tiempo, estas fueron reemplazadas en gran medida por GPU de modo inmediato con rápidos sistemas de memoria externa personalizados.
Los principales ejemplos de esto son:
Ejemplos de arquitecturas sin mosaicos que utilizan grandes buffers en chip son:
Debido al ancho de banda de la memoria externa relativamente bajo y a la modesta cantidad de memoria en el chip requerida, el renderizado en mosaico es una tecnología popular para las GPU integradas. Los ejemplos actuales incluyen:
Representación en modo inmediato basada en mosaicos (TBIM):
Representación diferida basada en mosaicos (TBDR):
Vivante produce GPU móviles que tienen una memoria frame buffer estrechamente acoplada (similar a la GPU de Xbox 360 descrita anteriormente). Aunque esto se puede usar para renderizar partes de la pantalla, el gran tamaño de las regiones renderizadas significa que generalmente no se describen como si usaran una arquitectura basada en mosaicos.
{{cite book}}
: |work=
ignorado ( ayuda ){{cite web}}
: Mantenimiento CS1: varios nombres: lista de autores ( enlace )