Técnicas de gráficos por ordenador
La transparencia independiente del orden (OIT) es una clase de técnicas en gráficos de computadora rasterizados para renderizar la transparencia en una escena 3D, que no requieren renderizar la geometría en orden ordenado para la composición alfa .
Descripción
Comúnmente, la geometría 3D con transparencia se renderiza mezclando (usando composición alfa ) todas las superficies en un solo buffer (piense en esto como un lienzo). Cada superficie ocluye el color existente y agrega algo de su propio color dependiendo de su valor alfa , una relación de transmitancia de luz . El orden en el que se mezclan las superficies afecta la oclusión total o la visibilidad de cada superficie. Para un resultado correcto, las superficies deben mezclarse de la más lejana a la más cercana o de la más cercana a la más lejana, dependiendo de la operación de composición alfa , por encima o por debajo . El orden se puede lograr renderizando la geometría en orden ordenado, por ejemplo, ordenando triángulos por profundidad, pero puede llevar una cantidad significativa de tiempo, no siempre produce una solución (en el caso de geometría intersecante o superpuesta circularmente) y la implementación es compleja. En cambio, la transparencia independiente del orden ordena la geometría por píxel, después de la rasterización. Para obtener resultados exactos, esto requiere almacenar todos los fragmentos antes de ordenar y componer.
Historia
El A-buffer es una técnica de gráficos por computadora introducida en 1984 que almacena listas por píxel de datos de fragmentos (incluyendo información de micropolígonos ) en un rasterizador de software, REYES , originalmente diseñado para anti-aliasing pero que también admite transparencia.
Más recientemente, en 2001, se describió el peeling de profundidad [1] como una técnica de OIT acelerada por hardware. Debido a las limitaciones del hardware gráfico, la geometría de la escena debía renderizarse muchas veces. A continuación se han desarrollado varias técnicas para mejorar el rendimiento del peeling de profundidad, aún con la limitación de renderizado de múltiples pasadas. Por ejemplo, Dual Depth Peeling (2008). [2]
En 2009, se introdujeron dos características importantes en el hardware/controladores/API de gráficos de la GPU que permitieron capturar y almacenar datos de fragmentos en un solo paso de renderizado de la escena, algo que antes no era posible. Se trata de la capacidad de escribir en memoria arbitraria de la GPU desde sombreadores y operaciones atómicas. Con estas características, se hizo posible una nueva clase de técnicas de OIT que no requieren muchos pasos de renderizado de la geometría de la escena.
- El primero fue almacenar los datos de los fragmentos en una matriz 3D [3] , donde los fragmentos se almacenan a lo largo de la dimensión z para cada píxel x/y . En la práctica, la mayor parte de la matriz 3D no se utiliza o se desborda, ya que la complejidad de profundidad de una escena suele ser desigual. Para evitar el desbordamiento, la matriz 3D requiere grandes cantidades de memoria, lo que en muchos casos resulta poco práctico.
- Existen dos enfoques para reducir esta sobrecarga de memoria.
- Al empaquetar la matriz 3D con un escaneo de suma de prefijo, o linealizar , [4] se eliminó el problema de la memoria no utilizada, pero se requiere un paso de renderizado de cálculo de complejidad de profundidad adicional de la geometría. El S-Buffer "consciente de la escasez" , el Dynamic Fragment Buffer [5] , el D-Buffer "deque" [ cita requerida ] y el Linearized Layered Fragment Buffer [6] empaquetan todos los datos de fragmentos con un escaneo de suma de prefijo y se demuestran con OIT.
- El almacenamiento de fragmentos en listas enlazadas por píxel [7] proporciona un empaquetamiento compacto de estos datos y, a fines de 2011, las mejoras del controlador redujeron la sobrecarga de contención de la operación atómica, lo que hizo que la técnica fuera muy competitiva. [6]
OIT exacta
La OIT exacta, a diferencia de la aproximada, calcula con precisión el color final, para lo cual se deben ordenar todos los fragmentos. En el caso de escenas con una complejidad de profundidad alta, la ordenación se convierte en un obstáculo.
Un problema con la etapa de clasificación es la ocupación limitada de la memoria local , en este caso un atributo SIMT relacionado con el ocultamiento de latencia de operación y rendimiento de las GPU. La asignación de memoria hacia atrás [8] (BMA) agrupa los píxeles por su complejidad de profundidad y los clasifica en lotes para mejorar la ocupación y, por lo tanto, el rendimiento de los píxeles de baja complejidad de profundidad en el contexto de una escena de complejidad de profundidad potencialmente alta. Se informa un aumento general del rendimiento de OIT de hasta 3 veces.
La clasificación generalmente se realiza en una matriz local, sin embargo, el rendimiento se puede mejorar aún más haciendo uso de la jerarquía de memoria de la GPU y la clasificación en registros, [9] de manera similar a una clasificación de fusión externa , especialmente junto con BMA.
OIT aproximado
Las técnicas de OIT aproximadas flexibilizan la restricción de la representación exacta para proporcionar resultados más rápidos. Se puede obtener un mayor rendimiento al no tener que almacenar todos los fragmentos o al ordenar solo parcialmente la geometría. Varias técnicas también comprimen o reducen los datos de los fragmentos. Entre ellas se incluyen:
- Transparencia estocástica: dibuja con una resolución más alta y con opacidad total, pero descarta algunos fragmentos. La reducción de resolución generará transparencia. [10]
- Transparencia adaptativa [11] , una técnica de dos pasos en la que el primero construye una función de visibilidad que comprime sobre la marcha (esta compresión evita tener que ordenar completamente los fragmentos) y el segundo utiliza estos datos para componer fragmentos desordenados. La sincronización de píxeles de Intel [12] evita la necesidad de almacenar todos los fragmentos, eliminando el requisito de memoria ilimitada de muchas otras técnicas de OIT.
- La transparencia ponderada independiente del orden combinada reemplazó al operador over con una aproximación conmutativa. Al introducir información de profundidad en el peso se produce una oclusión visualmente aceptable. [13]
OIT en hardware
- La consola de juegos Sega Dreamcast incluía soporte de hardware para OIT automático. [14]
Véase también
Referencias
- ^ Everitt, Cass (15 de mayo de 2001). «Transparencia interactiva independiente del orden». Nvidia . Archivado desde el original el 27 de septiembre de 2011. Consultado el 12 de octubre de 2008 .
- ^ Bavoil, Louis (febrero de 2008). "Transparencia independiente del orden con peeling de doble profundidad" (PDF) . Nvidia . Consultado el 12 de marzo de 2013 .
- ^ Fang Liu, Meng-Cheng Huang, Xue-Hui Liu y En-Hua Wu. "Peeling de profundidad de una sola pasada mediante el rasterizador CUDA", en SIGGRAPH 2009: Charlas (SIGGRAPH '09), 2009
- ^ Craig Peeper. "Paso de suma de prefijo para linealizar el almacenamiento en búfer A", solicitud de patente, diciembre de 2008
- ^ Marilena Maule y João LD Comba y Rafael Torchelsen y Rui Bastos. "Transparencia independiente del orden optimizada para memoria con Dynamic Fragment Buffer", en Computers & Graphics, 2014.
- ^ de Pyarelal Knowles, Geoff Leach y Fabio Zambetta. "Capítulo 20: Técnicas eficientes de almacenamiento en búfer de fragmentos en capas", OpenGL Insights, páginas 279-292, editores Cozzi y Riccio, CRC Press, 2012
- ^ Jason C. Yang, Justin Hensley, Holger Grün y Nicolas Thibieroz. "Construcción de listas enlazadas simultáneas en tiempo real en la GPU", en Actas de la 21.ª conferencia Eurographics sobre renderizado (EGSR'10), 2010
- ^ Knowles y col. (octubre de 2013). "Backwards Memory Allocation and Improved OIT" (PDF) . Biblioteca digital Eurographics. Archivado desde el original (PDF) el 2 de marzo de 2014 . Consultado el 21 de enero de 2014 .
- ^ Knowles y col. (junio de 2014). «Clasificación rápida para la OIT exacta de escenas complejas» (PDF) . Springer Berlin Heidelberg . Archivado desde el original (PDF) el 9 de agosto de 2014. Consultado el 5 de agosto de 2014 .
- ^ Enderton, Eric (nd). "Transparencia estocástica" (PDF) . IEEE Transactions on Visualization and Computer Graphics . 17 (8). Nvidia : 1036–1047. doi :10.1109/TVCG.2010.123. PMID 20921587 . Consultado el 12 de marzo de 2013 .
- ^ Salvi; et al. (18 de julio de 2013). "Transparencia adaptativa" . Consultado el 21 de enero de 2014 .
- ^ Davies, Leigh (18 de julio de 2013). "Aproximación de transparencia independiente del orden con sincronización de píxeles". Intel . Consultado el 21 de enero de 2014 .
- ^ McGuire, Morgan; Bavoil, Louis (2013). "Transparencia ponderada independiente del orden combinada". Revista de técnicas de gráficos por computadora . 2 (2): 122–141.
- ^ "Optimización del rendimiento de Dreamcast con Microsoft Direct3D". Microsoft . 1999-03-01.