Transparencia Independiente del Orden

De Wikipedia, la enciclopedia libre


Transparencia Independiente del Orden (OIT por sus siglas en inglés) son clases de técnicas de rasterización en gráficos computarizados para procesar la transparencia en una escena 3D, que no requieren que la geometría de representación esté ordenada para la composición alfa.


Descripción[editar]

Comúnmente, la geometría 3D con transparencia se representa mezclando (usando la composición alfa) todas las superficies en un solo búfer (piense en el mismo como un lienzo). Cada superficie oculta el color existente y agrega algo de su propio color dependiendo de su valor alfa, valor que representa la transmitancia de la luz. El orden en el que se mezclan las superficies afecta a la oclusión total o a la visibilidad de cada superficie . Para obtener un resultado correcto, las superficies deben mezclarse desde la más lejana hasta la más cercana o más cercana a la más lejana, dependiendo de la operación de composición alfa , sobre o debajo . La ordenación de la geometría puede lograrse, por ejemplo, ordenando triángulos por profundidad, pero puede tomar una cantidad significativa de tiempo y no siempre producir una solución (en el caso de intersección o solapado circular de la geometría), además la implementación es compleja. En su lugar, la transparencia independiente del orden clasifica la geometría por píxel, después de la rasterización. Para obtener resultados exactos, se requiere almacenar todos los fragmentos antes de ordenar y componer.

Historia[editar]

El A-Buffer[1]​ es una técnica de gráficos computarizados introducida en 1984 que almacena listas de datos de fragmentos (incluyendo información de micropolígonos) por pixel en un rasterizador de software, REYES , diseñado originalmente para anti-aliasing pero también para respaldar la transparencia. . Más recientemente, Depth Peeling[2]​ en 2001 describió una técnica acelerada por hardware. Con limitaciones en el hardware gráfico, la geometría de la escena tuvo que ser renderizada muchas veces. Una serie de técnicas han seguido, para mejorar el rendimiento de la peladura de profundidad, todavía con la limitación de representación de muchos pases. Por ejemplo, Dual Depth Peeling (2008).[3]

En 2009, se introdujeron dos características importantes en el hardware de las GPU / drivers / Graphics API que permitían capturar y almacenar datos de fragmentos en un solo pase de renderizado de la escena, algo que antes no era posible. Estas son, la capacidad de escribir a la memoria arbitraria de la GPU de shaders y de operaciones atómicas. Con estas características se hizo posible una nueva clase de técnicas OIT que no requieren muchos pases para renderizar la geometría de la escena.

  • El primero fue almacenar los datos de fragmentos en una matriz 3D,[4]​ 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ía de la matriz 3D no se usa o se desborda, ya que la complejidad de la profundidad de una escena es típicamente desigual. Para evitar el desbordamiento, la matriz 3D requiere grandes cantidades de memoria, lo que en muchos casos es poco práctico.
  • Existen dos enfoques para reducir esta sobrecarga de memoria.
  1. El empaquetado de la matriz 3D con una exploración de suma de prefijo, o linealización,[5]​ eliminó el problema de memoria no utilizada , pero requiere un paso de renderización de cálculo de complejidad de profundidad adicional de la geometría.[6]​ "deque" D-Buffer , Linearized Layered Fragment Buffer[7]​ todos los fragmentos de paquete de datos con un prefijo de suma de exploración y se demuestran con OIT. "Sparsity-aware" S-Buffer, Dynamic Fragment Buffer.
  2. Almacenamiento de fragmentos en por píxeles vinculados listas[8]​ proporciona un embalaje apretado de estos datos ya finales de 2011, las mejoras de controlador redujo la sobrecarga de la operación atómica sobrecarga haciendo la técnica muy competitiva.[7]

OIT Exacto[editar]

OIT exacto, opuesto al aproximado, calcula con precisión el color final, para el cual todos los fragmentos deben ser clasificados. Para escenas de alta complejidad de profundidad, la clasificación se convierte en un cuello de botella.

Un problema con la etapa de clasificación es la ocupación de memoria local limitada, en este caso un atributo SIMT relacionado con el rendimiento y la latencia de operación que ocultan las GPUs. La Asignación de Memoria hacia Atrás[9]​ (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 en píxeles de complejidad de baja profundidad, en el contexto de una escena de complejidad de profundidad potencialmente alta. Se informó hasta un aumento general de 3 veces el desempeño de la OIT.

La clasificación se realiza típicamente 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 clasificando en registros,[10]​ de manera similar a un tipo de fusión externa , especialmente en conjunción con BMA.

OIT Aproximado[editar]

Las técnicas aproximadas de OIT relajan 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 solo clasificar parcialmente la geometría. Un número de técnicas también comprimen, o reducen , los datos del fragmento. Éstas incluyen:

  • Transparencia Estocástica: dibuja una resolución más alta pero elimina algunos fragmentos. El muestreo reducirá la transparencia.[11]
  • Adaptive Transparency,[12]​ una técnica de dos pasadas donde la primera construye una función de visibilidad que comprime al vuelo (esta compresión evita tener que ordenar los fragmentos completamente) y la segunda utiliza estos datos para componer fragmentos no ordenados. La Sincronización de Píxeles de Intel[13]​ evita la necesidad de almacenar todos los fragmentos, eliminando el requisito de memoria ilimitada de muchas otras técnicas de OIT.


Referencias[editar]