ES2264021T3 - Aparato, metodos y productos de programa de ordenador para procesamiento de graficos utilizando supresion de oclusion de minima profundidad y recorrido a traves de zig-zag. - Google Patents

Aparato, metodos y productos de programa de ordenador para procesamiento de graficos utilizando supresion de oclusion de minima profundidad y recorrido a traves de zig-zag.

Info

Publication number
ES2264021T3
ES2264021T3 ES03782371T ES03782371T ES2264021T3 ES 2264021 T3 ES2264021 T3 ES 2264021T3 ES 03782371 T ES03782371 T ES 03782371T ES 03782371 T ES03782371 T ES 03782371T ES 2264021 T3 ES2264021 T3 ES 2264021T3
Authority
ES
Spain
Prior art keywords
occlusion
grid
row
grids
pixels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES03782371T
Other languages
English (en)
Inventor
Jacob Strom
Tomas Akenine-Moller
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Application granted granted Critical
Publication of ES2264021T3 publication Critical patent/ES2264021T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Aiming, Guidance, Guns With A Light Source, Armor, Camouflage, And Targets (AREA)

Abstract

Un método de procesamiento de gráficos, que comprende definir una pluralidad de filas de cuadrículas (710) en un campo de visualización de gráficos que comprende una pluralidad de filas de píxeles, incluyendo cada cuadrícula píxeles de al menos dos filas de píxeles, y caracterizado por: colocación de banderas de oclusión (720) para las cuadrículas respectivas de una fila de cuadrículas para un elemento primitivo de gráficos basado en si los respectivos valores de profundidad representativos de las cuadrículas de la fila de cuadrículas cumplen un criterio de oclusión; y procesamiento de píxeles (730) en filas de píxeles correspondientes a la fila de cuadrículas de los elementos primitivos de gráficos de una forma fila por fila en respuesta a las banderas de oclusión.

Description

Aparato, métodos y productos de programa de ordenador para procesamiento de gráficos utilizando supresión de oclusión de mínima profundidad y recorrido a través en zig-zag.
Antecedentes del invento Campo técnico del invento
El presente invento se refiere a gráficos de ordenador, y más particularmente, a métodos, aparato y productos de programa de ordenador para procesamiento de gráficos.
Descripción de la técnica relacionada
Los teléfonos móviles se usan en todo el mundo. Como están normalmente equipados con visualizadores, también es posible restituir imágenes en estos dispositivos. Es muy probable que esto haga que el teléfono móvil sea hoy la plataforma de restitución más extendida. Sin embargo, este tipo de restitución principalmente ha estado limitado a gráficos en dos dimensiones muy sencillos, y sólo recientemente los gráficos tridimensionales han visto la luz en este contexto. Un creciente interés en los gráficos en móviles puede verse en las actividades de niveles venideros, tal como el Java Specification Request 184 (véase, por ejemplo, www.jcp.org) y Open GL ES para sistemas incorporados (véase, por ejemplo, www.khronos.org). Las aplicaciones que es probable que usen gráficos tridimensionales incluyen interfaces hombre-máquina (MMIs), salvapantallas, mapas, mensajes animados, y, naturalmente, juegos.
Los teléfonos móviles por naturaleza tienen dos características que son muy diferentes de, por ejemplo, los sistemas de ordenador personal con tarjetas para gráficos. Lo primero de todo, tienen visualizadores muy pequeños, y segundo, tienen muy pequeñas cantidades de recursos para la restitución. A continuación se discutirán brevemente estas características.
Los teléfonos móviles existentes con visualizadores en color tienen a menudo una resolución de [176-320]x[144-240], es decir, los visualizadores son muy pequeños. La norma QCIF define una resolución de 176x144, y la norma QVGA usa 320x240. Mientras que resoluciones mayores, tales como 1.024x768 aparecerán también en los teléfonos móviles, es bastante probable que esto solamente será en los teléfonos móviles de alta gama, y por tanto no disponibles para la mayoría de las personas. Además de esto, resoluciones tan altas probablemente consumirán más energía, lo que puede disminuir la vida de la batería. Por lo tanto, se puede esperar que dominarán las resoluciones más bajas, tales como las QCIF y QVGA.
En cuanto al número de colores en el visualizador, son comunes cualesquiera desde 256 a 65.536. Además de la baja resolución, el usuario a menudo mantiene el visualizador cerca de los ojos, lo que hace que la relación ojo con ángulo de píxel sea grande en comparación con la de un ordenador personal. En conclusión, estas condiciones de visualizador implican que cada píxel en un teléfono móvil sería finalmente restituido con mayor calidad que en un sistema de ordenador personal. Esto a menudo se denomina la "ley de calidad inversa de restitución del tamaño de pantalla".
Hay varias razones para que un teléfono móvil tenga pocos recursos. Debido a que normalmente está alimentado por baterías recargables cualquier tipo de restitución debería preferiblemente utilizar la menor energía posible. Además, la tecnología de las baterías no mejora al ritmo de la ley de Moore. También, los accesos de memoria externa son a menudo la operación en un sistema de ordenador que consumen la mayor cantidad de energía. Esto significa que los recursos de ancho de banda deberían utilizarse con gran cuidado, y que en primer lugar el ancho de banda máximo está muy limitado.
Para que los costes por dispositivo se mantengan bajos, los teléfonos móviles están generalmente equipados con muy poca memoria, y poca superficie del chip está dedicada a las operaciones de gráficos. Poco ancho de banda disponible, poca cantidad de superficie del chip, y pequeñas cantidades de memoria contribuyen todas a mantener bajo el precio por dispositivo, pero lo que es más importante, estos factores también, en la mayoría de los casos, contribuyen a utilizar menos energía que un sistema con más recursos. Ejemplos típicos de datos reales sobre teléfonos móviles son: 1) un acceso de uno o medio de 32 bits de memoria por ciclo de sincronización, 2) unidades de proceso centrales con 10-200 MHz, y 3) 1-16 MB de memoria rápida razonable.
La restitución en tiempo real de gráficos tridimensionales tiene muchas aplicaciones atractivas en los terminales móviles, que incluyen juegos, interfaces hombre-máquina, envío de mensajes y comercio por telefonía móvil. Debido a que la restitución tridimensional normalmente es una tarea computacionalmente cara, a menudo se debe crear unos equipos informáticos exclusivos para conseguir una eficacia suficiente. Por tanto, tienen gran importancia las formas innovadoras de disminución de la complejidad y del uso de ancho de banda de esta arquitectura de los equipos informáticos.
En un gran número de casos, se utiliza una memoria intermedia z (memoria intermedia de profundidad) para resolver la visibilidad. Esto se hace normalmente porque los triángulos pueden ser dibujados en cualquier orden. Por lo tanto, la memoria intermedia z almacena una distancia a escala desde el ojo al triángulo, y si un triángulo posterior está más alejado que el contenido de la memoria intermedia z, entonces el color y la memoria intermedia z no se sobredibujan.
No obstante, esto también significa que el sistema de gráficos no es muy inteligente, ya que un píxel puede ser sobredibujado varias veces. E incluso si un píxel es sobreescrito varias veces, solamente una figura geométrica sencilla puede ser visible en el final. Una situación similar es la de pintar sobre un lienzo en el que las capas de pintura más inferiores serán oscurecidas por las capas de pintura superiores. Para un sistema de gráficos sucede lo mismo, pero con la diferencia de que la pintura puede ser dibujada en cualquier orden.
También es importante comprender que para una plataforma móvil es generalmente deseable que el uso de ancho de banda para la memoria principal se debería reducir todo lo posible, debido a que tales accesos de memoria utilizan hasta una parte importante de la energía, que normalmente es un recurso escaso.
Existen varias tarjetas gráficas (NVIDIA Geforce3 y superiores, y ATI Radeon) que actualmente usan una forma de selección de oclusión. La pantalla está dividida en, supóngase, 8x8 zonas (denominadas cuadrículas), y para cada cuadrícula, el máximo de los valores z, zmax, en la memoria intermedia z para esa cuadrícla se almacena en una memoria asociada (rápida y no consumidora de energía). Cuando los triángulos son restituidos, todos los píxeles son visitados en una cuadrícula antes de ir a la siguiente cuadrícula, y cuando se ha encontrado una nueva cuadrícula se calcula el valor mínimo z, zmin, en el triángulo de dentro de la cuadrícula (o puede utilizarse algún método menos preciso más barato para sobreestimar el valor z mínimo). Si zmin es mayor que el zmax de la cuadrícula, entonces ese triángulo que nosotros actualmente restituimos es ocluido (obstruido), y normalmente no necesitamos posteriormente procesar esa cuadrícula para ese triángulo. Si la cuadrícula no está ocluida, entonces los píxeles de dentro de la cuadrícula son procesados como de costumbre, es decir, los píxeles son probados para su inclusión en el triángulo, se produce una prueba z, y texturización, etc.
La patente de EEUU Nº 6.241.764 de Morein, "Método y aparato para eliminación eficiente de memoria", (descrito en el trabajo de Tomás Akenine-Möller y Eric Haines Restitución en tiempo real, 2ª edición, Junio 2002, páginas 694-697) describe una forma para la eliminación eficiente de memoria. En lugar de eliminar la memoria intermedia z (por ejemplo), coloca una bandera para cada cuadrícula (por ejemplo, una zona 8x8). Posteriormente, cuando se accede a esa cuadrícula por primera vez, se puede evitar la lectura de los píxeles en ese bloque, y en cambio se lee un "valor eliminado" desde una memoria rápida en el chip ya que la bandera está colocada. Cuando la cuadrícula es escrita por primera vez, la bandera no está colocada. De esta forma, solamente una fracción de la memoria puede ser tocada durante la eliminación, lo que puede ahorrar energía y ancho de banda.
Es generalmente deseable que la utilización del ancho de banda de la memoria principal sea lo menor posible con el fin de conseguir una mayor eficacia y para ahorrar energía (batería). Para interpolar datos de textura (imagen), coordenadas z, etc, en el triángulo, uno puede necesitar almacenar varios parámetros, y se denomina un contexto el conjunto de parámetros de un píxel determinado. Este contexto puede ser actualizado cuando uno se mueve a otro píxel. Cuantos más contextos se utilicen, más cara puede resultar la solución en cuanto a puertas en equipos de ordenador.
Es generalmente deseable que el número de puertas sea lo menor posible con el fin de conseguir una solución económicamente eficaz. Algunos métodos actualmente conocidos para visitar todos los píxeles en una cuadrícula antes de moverse a la siguiente cuadrícula necesitan 4 ó 5 contextos completos (consúltese McCormack, Joel, y Robert McNamara, "Recorrido a través de polígonos cuadriculados usando funciones de borde semiplanas", Aula sobre equipos informáticos para gráficos, páginas 15-22, Agosto 2000, y también Kelleher, Brian, "Arquitectura de visión de píxeles", Digital Systems Research Center, Nº 1998-013, Octubre 1998). Esto puede ser muy caro para una plataforma móvil. También debería advertirse que es posible utilizar técnicas z-max, pero un problema potencial con éstas es que puede resultar caro actualizar la z-max después de haber restituido un triángulo, debido a que todos los valores z en toda la cuadrícula necesitan ser leídos antes de poder actualizar z-max. Las soluciones actuales que usan z-max resuelven esto leyendo todo el bloque de valores z. Esto es posible debido a que normalmente tienen un ancho de banda mucho mayor de la memoria principal que la plataforma móvil, y así pueden proporcionar ese tipo de solución.
En general, no se ha publicado mucho sobre arquitecturas de bajo coste en las que se describe todo el sistema. Dos excepciones notables son Neon (descrita en McCormack, Joel, y Robert McNamara, "Recorrido a través de polígonos cuadriculados usando funciones de borde semiplanas", Aula sobre equipos de ordenador para gráficos, páginas 15-22, Agosto 2000, y también Kelleher, Brian, "Arquitectura de visión de píxeles", Digital Systems Research Center, Nº 1998-013, Octubre 1998). Imagination Technologies tiene un sistema llamado MBX, cuya arquitectura está basada en cuadrículas, y por consiguiente, la memoria intermedia z, la memoria intermedia posterior, y la memoria intermedia patrón solamente necesitan tener el tamaño de una cuadrícula, por ejemplo, 32x16 píxeles. Esta memoria está a menudo aplicada en la memoria rápida en el chip. Inicialmente, se necesita una pasada para seleccionar toda la geometría en las cuadrículas, y esto también requiere memoria y también ancho de banda de memoria. Cuando la selección ha terminado, en cada cuadrícula se cuadricula la geometría de cada cuadrícula. Durante la cuadriculación, primeramente se resuelve la visibilidad, y después se realiza la texturización y el sombreado solamente en los fragmentos visibles. Esto se denomina sombreado diferido. Para conservar la cuadriculación de las cuadrículas que van en paralelo con la selección de cuadrículas, se necesitan dos memorias intermedias por cuadrícula. No existe mucha información sobre la arquitectura MBX, y por consiguiente, no está claro lo que se gana realmente, además de la no necesidad de memoria para las memorias intermedias. Está totalmente claro que esta arquitectura proporciona ahorro de energía. Sin embargo, no está documentado cuánto.
Para la cuadriculación de polígonos con precisión de subpíxeles, uno puede usar un algoritmo de Bresenham modificado, como se describe en Lathrop, O., Kirk, D., y Voorhies, "Restitución exacta utilizando subpíxeles", Gráficos y aplicaciones de ordenador IEEE 10,5 (Septiembre 1990), páginas 45-53. Una alternativa usada a menudo es la utilización de funciones de borde tal como está descrito en el trabajo de Pineda, J., "A Parallel algorithm for polygon rasterization", Actas de SIGGRAPH 1988, ACM, páginas 17-20 (1988), en el que la zona de dentro de un triángulo está descrita como la intersección lógica de los semiespacios positivos de los bordes del triángulo. Entonces, se pueden usar diferentes estrategias para encontrar píxeles dentro del triángulo. Esto se denomina recorrido a través. Dependiendo de lo eficientes que sean estas estrategias, se requieren diferentes números de diferentes (parámetros de interpolación, etc) durante el recorrido a través. Cada contexto usualmente tiene un coste considerable en cuanto a puertas.
La Figura 1 muestra el recorrido a través de un triángulo de acuerdo con el esquema en zigzag de Pineda. Los píxeles marcados en gris claro o gris oscuro son píxeles que están tocados por el esquema de recorrido a través. Los píxeles marcados en gris oscuro son los que el algoritmo de recorrido a través encuentra que están dentro del triángulo. El camino que hace el algoritmo de recorrido a través en zigzag se muestra como un camino con flechas. Básicamente, el triángulo es atravesado de derecha a izquierda en la primera línea de barrido, hasta que estamos fuera del triángulo. Entonces vamos un paso arriba. Si entonces estamos dentro del triángulo, necesitamos continuar en la misma dirección hasta que estemos fuera del triángulo. Esto se llama rastreo de retorno. Cuando estamos fuera del triángulo, la dirección de recorrido a través se invierte y comenzamos cuadriculando la línea de barrido actual, esta vez de izquierda a derecha. Cuando salimos del triángulo tomamos otro paso hacia arriba, y se continúa de la misma forma.
En la Figura 1 se muestra un ejemplo. En la línea de barrido más inferior se ha colocado un píxel, pero el siguiente a la izquierda está fuera del triángulo. Esto significa que deberíamos ir un paso arriba. Después de este paso estamos dentro del triángulo y tenemos que rastrear en sentido inverso, es decir, continuar hacia la izquierda hasta que estemos fuera del triángulo. Después de un píxel estamos fuera del triángulo y podemos invertir la dirección de recorrido a través (de derecha a izquierda a de izquierda a derecha) y comenzamos a cuadricular la segunda línea de barrido. Encontramos dos píxeles que deberían estar dentro del triángulo y después de esto estamos fuera del triángulo y debemos ir un paso arriba. Esta vez estamos ya fuera del triángulo y no tenemos que hacer un rastreo hacia atrás. Por lo tanto, podemos invertir la dirección de recorrido a través y comenzar a cuadricular la tercera línea de barrido y así sucesivamente.
Cada vez que encontramos un píxel que hallamos que está dentro del triángulo, necesitamos saber si debemos dibujarlo o no. Por tanto, calculamos el valor z del triángulo en ese punto, aquí llamado z-tri (x,y), donde (x,y) son las coordenadas del punto. Entonces traemos el valor z de tal píxel desde la memoria intermedia z, llamado z-buf(x,y). Si z-tri(x,y)\geqz-buf(x,y) no sucede nada. Sin embargo, si z-tri(x,y)<z-buf(x,y), entonces deberíamos dibujar el píxel, y también actualizar la memoria intermedia z con el valor z-tri(x,y). En pseudocódigo, se puede ver como sigue:
calcular z-tri(x,y)
traer z-buf(x,y) desde la memoria intermedia z
si (z-tri(x,y)<z-buf(x,y))
{
escribir z-tri(x,y) en memoria intermedia z
escribir color en memoria intermedia de color
}
\vskip1.000000\baselineskip
Adviértase que la formulación si puede cambiarse en una prueba de profundidad si (depthtest(z-tri(x,y),z-buf(x,y)). Para aumentar el nivel de utilización de coherencia, y para algoritmos sencillos de selección de oclusión, el equipo de ordenador para gráficos a menudo atraviesa los píxeles que cubre un triángulo en una forma cuadriculada (véase Kelleher, Brian, "Pixel Vision Architecture", Digital Systems Research Center, nº 1998-013, Octubre 1998; McCormack, Joel, y Robert McNamara, "Tiled Polygon Traversal Using Half-Plane Edge Functions", Workshop on Graphics Hardware, páginas 15-22, Agosto 2000; Patente de EEUU Nº 6.421.764, de Morein). Esto significa que todos los píxeles de dentro de una cuadrícula, o sea una zona 8x8, son visitados antes de moverse a otra cuadrícula. Para esto se necesitan estrategias de recorrido a través y éstas cuestan debido a los muchos contextos que deben ser almacenados. Por ejemplo, McCormack y MacNamara describen un algoritmo de recorrido a través que requiere un contexto más que el correspondiente recorrido a través no cuadriculado. En total, necesitan cuatro contextos para la versión cuadriculada.
El algoritmo jerárquico de la memoria intermedia z usa una pirámide z, en la que cada píxel en cada nivel de la pirámide almacena el máximo de sus cuatro valores z inferiores (en el nivel de abajo), como está descrito en Greene, N., Kass, M., y Miller, G., "Hierarchical z-buffer visibilidad", Proceedings of SIGRAPH 1993, ACM, páginas 231-238 (1993); Patentes de EEUU Nº 5.600.763 y Nº 5.579.455. Así, en el vértice de la pirámide se almacena el máximo de todos los valores z en toda la pantalla. Esta pirámide se usa para realizar la selección de oclusión. Cuando se restituye un grupo de geometría, el volumen confinado del grupo es convertido por barrido y es probado frente a los niveles adecuados en la memoria intermedia z para determinar si el grupo es visible. Este algoritmo es altamente eficiente al ser puesto en práctica en programas de ordenador, sin embargo, todavía no existe una aplicación completamente desarrollada. Sin embargo, los equipos de ordenador de gráficos de productos tienen a menudo una forma más simple de selección de oclusión. El trabajo de Morein, S., "ATI radeon Hiperz", Workshop on Graphics Hardware, Hot3D Proceedings, ACM SIGGRAPH/Eurographics de Morein (2000) describe una técnica en la que cada cuadrícula almacena el máximo z_{max}, de los valores z de dentro de una cuadrícula, que pueden ser, por ejemplo, 8x8 píxeles. Durante el recorrido a través de un triángulo, se realiza una prueba cuando se visita una nueva cuadrícula que determina si el valor z "mínimo" del triángulo es mayor que el z_{max}, de la correspondiente cuadrícula. Si lo es, esa cuadrícula es pasada por alto, y, en caso contrario, esa cuadrícula es restituida como de costumbre. Adviértase que, para actualizar z_{max}, deben ser leídos todos los valores z de la cuadrícula, lo que puede resultar caro. Otras técnicas de selección basadas en cuadrículas o bloques están descritas en la patente de EEUU Nº 6.037.946 de Takeda, y en la Solicitud de Patente Europea Nº 1.101.177.
Resumen
De acuerdo con algunas realizaciones del presente invento, se define una pluralidad de filas de cuadrículas en un campo visualizador de gráficos que comprende una pluralidad de filas de píxeles, incluyendo cada cuadrícula píxeles de al menos dos filas de píxeles. Las banderas de oclusión de las cuadrículas respectivas de una fila de cuadrículas de elementos gráficos primitivos están colocadas (por ejemplo, con valores para mostrar no oclusión, posible oclusión, u otro estado de oclusión) basadas en si los respectivos valores de profundidad representativos de las cuadrículas de la fila de cuadrículas cumplen un criterio de oclusión. Los píxeles en filas de píxeles que corresponden a la fila de píxeles son procesados para los gráficos sencillos en una forma fila por fila en respuesta a las banderas de oclusión. El procesamiento puede incluir el procesamiento de una parte de los píxeles en una primera cuadrícula de la fila de cuadrículas en respuesta a las banderas de oclusión, y después el procesamiento de píxeles en una segunda cuadrícula de la fila de cuadrículas en respuesta a las banderas de oclusión antes de procesar píxeles adicionales en la primera cuadrícula en respuesta a las banderas de oclusión. El procesamiento puede incluir filas de procesamiento de píxeles en la fila de cuadrículas utilizando un algoritmo de recorrido a través en zig-zag.
En posteriores realizaciones del invento, las banderas de oclusión están almacenadas en una memoria asociada de información de oclusión de cuadrícula, que está configurada para almacenar las respectivas banderas de oclusión de las respectivas cuadrículas de una fila de cuadrículas, los valores respectivos de profundidad de umbral de oclusión de las cuadrículas respectivas de la fila de cuadrículas. La colocación de banderas de oclusión comprende determinar un valor de profundidad máximo de los elementos primitivos de gráficos de una cuadrícula, comparar el valor de profundidad máximo con el valor de profundidad del umbral de oclusión de la memoria asociada para la cuadrícula en la memoria asociada de información de oclusión de cuadrícula, y colocar la bandera de oclusión para la cuadrícula en respuesta a la comparación.
De acuerdo con posteriores realizaciones, se configura una memoria intermedia de profundidad para almacenar los respectivos valores de profundidad del umbral de oclusión de los respectivos píxeles del campo de visualización de gráficos. La colocación de banderas de oclusión comprende colocar una bandera de oclusión de una cuadrícula para indicar no oclusión, y el procesamiento de píxeles comprende detectar que la cuadrícula tiene una bandera de oclusión que indica no oclusión y, en respuesta a eso, procesar un píxel de los elementos primitivos de gráficos en la cuadrícula sin recuperar un valor de profundidad de umbral del píxel de la memoria intermedia de profundidad.
El método puede comprender además la determinación de un valor de profundidad de los elementos primitivos de gráficos del píxel, comparando el valor de profundidad determinado de los elementos primitivos de gráficos del píxel con el valor de profundidad del umbral de oclusión de la cuadrícula en la memoria asociada de información de oclusión de la cuadrícula, y actualizar el valor de profundidad del umbral de oclusión de la cuadrícula en la memoria asociada de información del umbral de información de oclusión con el valor de profundidad determinado de los elementos primitivos de gráficos del píxel en respuesta a la comparación.
En realizaciones adicionales, la colocación de banderas de oclusión para una cuadrícula para indicar no oclusión, y el procesamiento de los píxeles está precedido por el establecimiento de una memoria añadida de información de oclusión de cuadrícula, configurada para almacenar los respectivos valores de profundidad del umbral de oclusión de todas las filas de cuadrículas, y cargar la memoria asociada de información de oclusión de cuadrícula con los valores de profundidad del umbral de exclusión de la memoria añadida de información de oclusión de cuadrícula. La actualización del valor de profundidad del umbral de oclusión de la cuadrícula en la memoria asociada del umbral de información de oclusión de la cuadrícula es seguida por la actualización de los valores de profundidad del umbral de oclusión en la memoria asociada de información añadida de oclusión de la cuadrícula añadida de la memoria asociada de información de oclusión de la cuadrícula.
En todavía posteriores realizaciones del presente invento, las banderas de oclusión están almacenadas en la memoria asociada de información de oclusión de cuadrícula que está configurada para almacenar las respectivas banderas de oclusión de las respectivas cuadrículas de una fila de cuadrículas, y las respectivas banderas de estado de las respectivas cuadrículas de la fila de cuadrículas. Se procesa una primera fila de píxeles en algún lugar de la fila de cuadrículas en respuesta a la memoria asociada de la información de oclusión de la cuadrícula, en el que el procesamiento de la primera fila de píxeles comprende colocar banderas de oclusión y de estado para al menos una cuadrícula en la primera fila de cuadrículas para indicar que se ha determinado el estado de oclusión de al menos una cuadrícula. Se determina entonces si una próxima fila de píxeles está en la primera fila de cuadrículas. Si está, se procesa la próxima fila de píxeles usando la información en la memoria asociada de oclusión de cuadrícula obtenida de la primera fila de píxeles. Si no está, se eliminan la información de las banderas de oclusión y de estado en la memoria asociada de información de oclusión de la cuadrícula, se actualizan los valores de profundidad del umbral de oclusión en la memoria asociada de información de oclusión de la cuadrícula escribiendo los valores correspondientes del umbral de oclusión de la memoria asociada de la información de oclusión de la cuadrícula en la memoria añadida de información de oclusión de la cuadrícula, y después se leen los valores del umbral de oclusión de la memoria añadida de información de oclusión en la memoria asociada de la información de oclusión de la cuadrícula correspondiente a las próxima fila de cuadrículas. Después se procesa la próxima fila de píxeles usando la memoria asociada almacenada de oclusión de la cuadrícula.
De acuerdo con aspectos adicionales del invento, se define una pluralidad de filas de cuadrículas en un campo de visualización de gráficos, comprendiendo cada una de las cuadrículas una pluralidad de píxeles. Se coloca una bandera de oclusión de una cuadrícula para indicar no oclusión para unos elementos primitivos de gráficos en la cuadrícula. En respuesta a la detección de que en la cuadrícula hay una bandera de oclusión que indica no oclusión, se procesa un píxel para unos elementos primitivos de gráficos en la cuadrícula. El píxel puede ser procesado sin recuperar un valor de profundidad del umbral de oclusión del píxel de una memoria intermedia de profundidad, lo que puede reducir la frecuencia de lectura de la memoria intermedia de profundidad.
El presente invento puede ser realizado como métodos, aparato, y productos de programa de ordenador. Por ejemplo, el presente invento puede usarse ventajosamente en un dispositivo electrónico portátil, tal como un terminal inalámbrico móvil, un asistente digital personal (PDA), o similar.
Breve descripción de los dibujos
La Figura 1 ilustra una técnica anterior de recorrido a través en zig-zag.
Las Figuras 2-8 ilustran, a modo de ejemplo, operaciones y aparatos de procesamiento de gráficos de acuerdo con algunas realizaciones del presente invento.
La Figura 9 ilustra, a modo de ejemplo, un dispositivo electrónico portátil que incluye un aparato de gráficos de acuerdo con posteriores realizaciones del presente invento.
Descripción detallada de las realizaciones
A continuación de describirá el presente invento más detalladamente haciendo referencia a los dibujos anejos, en los que se muestran realizaciones, a modo de ejemplo, del presente invento. Estas realizaciones se proporcionan de forma que esta solicitud sea minuciosa y completa. Números iguales se refieren a elementos iguales en todo el documento.
Algunas realizaciones a modo de ejemplo del presente invento descritas más adelante con referencia a las Figuras 2-6 pueden extenderse al método de recorrido a través en zigzag de Pineda en tres nuevas formas:
1) La memoria intermedia z puede ser dividida en dos cuadrículas que no se solapan de, por ejemplo, 8x8 píxeles.
2) Podemos tener una memoria en el sistema denominada tileinfo (previamente denominada "memoria añadida de información de oclusión de cuadrículas"), en la que se almacena la información sobre las cuadrículas. Para cada cuadrícula podemos almacenar una variable z-min que puede conservar el valor mínimo de todos los valores z de la cuadrícula. Por ejemplo, si la resolución de la pantalla es 176x144, y el tamaño de la cuadrícula es 8x8, entonces el número de cuadrículas es 176/8x144/8 = 22x18 = 396. De esta forma, tieleinfo debe ser capaz de guardar 396 valores z-min, o 396x2=792 bytes, si cada valor de z-min es 2 bytes. Para conseguir la dirección de z-min de una cuadrícula específica, se pueden utilizar las coordenadas x e y del píxel. Por ejemplo, en el ejemplo anterior con 176x144 píxeles y 8x8 cuadrículas, la dirección puede calcularse como (y/8)*22+x/8, donde "/" representa división de números enteros.
3) Podemos tener una memoria asociada denominada rowtileinfo (previamente denominada "memoria asociada de información de oclusión de cuadrícula") que puede almacenar información sobre una fila de cuadrículas. Para cada cuadrícula de la fila pueden almacenarse tres fragmentos de información, a saber:
\bullet
"z-min-cached", que es una versión en la memoria asociada de la z-min disponible en tileinfo. Al igual que en una memoria asociada ordinaria, el valor de z-min-cached puede ser actualizado sin que la z-min en tileinfo sea actualizada. Antes del procesamiento de toda una fila de cuadrículas, z-min-cached debe ser recuperada para en z-min en tileinfo.
\bullet
"visited", que es una bandera de estado de 1-bit; y
\bullet
"visible" (previamente denominado "bandera de no oclusión"), que también es una bandera de 1-bit.
La memoria asociada puede ser lo suficientemente grande para almacenar información sobre una fila completa de cuadrículas. Por ejemplo, si la resolución es 176x144, y el tamaño de la cuadrícula es 8x8, entonces una fila de cuadrículas equivale a 176/8=22 cuadrículas, y rowtileinfo debe ser capaz de almacenar "z-min-cached", "visited" y "visible" para 22 cuadrículas. Si z-min-cached ocupa 16 bits, entonces toda la rowtileinfo puede ser creada usando solamente 22x(16+1+1) bits, 396 bits = 49,5 bytes. De esta forma, rowtileinfo es mucho menor que tileinfo, lo que significa que puede ser aplicada en programa de ordenador en chip, rápido y eficiente en energía. También se advierte que rowtileinfo siempre conserva información sobre las actuales filas de cuadrículas. Así, cuando se va desde la última línea de barrido en una fila de cuadrículas a la primera línea de barrido de la siguiente fila de cuadrículas, rowtileinfo y tileinfo se actualizan. Para calcular la dirección de los datos en rowtileinfo, solamente necesitamos la coordenada x del píxel. La razón por la que podemos no tener en cuenta la coordenada y es que rowtileinfo solamente trata una fila de cuadrículas. Por ejemplo, si todos los z-min-cached se guardan uno después de otro, podemos calcular la dirección utilizando x/8, donde "/" representa una división de números enteros.
4) La cuarta adición es un algoritmo de selección basado en z-min que utiliza el esquema de recorrido a través en zigzag, la estructura de cuadrículas, la memoria tileinfo, y la memoria rowtileinfo, que ahorra accesos de memoria. A continuación describiremos detalladamente cómo funciona este algoritmo.
Describiremos el algoritmo en varios pasos, donde cada paso entrará en más detalles que el anterior: el primer paso muestra cómo se cuadricula un triángulo, el segundo paso muestra cómo se cuadricula una línea de barrido, y el tercer y último paso muestra cómo se cuadricula un píxel (escrito en la memoria intermedia de pantalla completa). Sin embargo, comenzaremos describiendo cómo se borran las memorias intermedias, ya que esto normalmente se hace al menos una vez por pantalla completa antes de la cuadriculación de triángulos cualesquiera.
Borrado
Antes de dibujar cualquier cosa, la memoria intermedia de z generalmente se borra colocando todos los valores en un valor predefinido. Usualmente este valor predefinido es la distancia al plano lejano, z_far. En nuestro sistema también borramos la tileinfo colocando z_far en todas las variables z-min. También borramos la memoria rowtileinfo. Esto se hace colocando la bandera "visited" en "false" en todas las cuadrículas en rowtileinfo. Adviértase que preferimos borrar la z-buffer y tileinfo una vez por pantalla completa, no entre cada triángulo. Sin embargo, rowtileinfo se borra cada vez que vamos a una nueva fila de cuadrículas, lo que se trata más detalladamente más adelante haciendo referencia a la Figura 2.
Cuadriculación de un triángulo
De acuerdo con algunas realizaciones del invento, la cuadriculación puede hacerse según la Figura 2, "Procesamiento de un triángulo". Primeramente, la bandera "visited" se coloca en "false" en todas las cuadrículas en rowtileinfo (101). A continuación procesamos una línea de barrido (102). La forma de hacerlo se describe más detalladamente haciendo referencia a la Figura 3. Después de haber procesado la línea de barrido, comprobamos si la siguiente fila se encuentra en una cuadrícula diferente de la fila actual. Esto se puede hacer, por ejemplo, comprobando si
(103):
(y+1)mod tilesize = 0,
donde y es la fila de la actual línea de barrido, mod es el operador de módulo, y tilesize es el tamaño de la cuadrícula en la dirección y. Si la fila siguiente está en una cuadrícula diferente, entonces necesitamos recuperar la información en rowtileinfo a tileinfo (104). También tenemos que colocar todas las banderas "visited" en "false" (105). Esto se puede hacer utilizando el siguiente pseudocódigo:
\vskip1.000000\baselineskip
para todas las cuadrículas en rowtileinfo
{
si visitada = verdadero
{
recuperar z-min-cached en el correspondiente z-min en tileinfo
}
visitada = falso;
}.
\newpage
Después de haber actualizado rowtileinfo y tileinfo de la forma anteriormente mencionada, avanzamos un píxel en la dirección y (106). También invertimos la dirección de avance en la dirección x (107). Probamos si hemos alcanzado el extremo del triángulo (108). Si lo hemos alcanzado, nos detenemos, en caso contrario retrocedemos para procesar una línea de barrido siguiente (102).
Procesamiento de una línea de barrido
La Figura 3 muestra qué deberíamos hacer cuando llegamos a una nueva línea de barrido. Primeramente avanzamos en la dirección opuesta de "dir" hasta que estemos fuera del borde del triángulo (201) (si ya estamos fuera, no necesitamos avanzar). Entonces avanzamos en la dirección de "dir" (202) hasta que estemos completamente fuera del triángulo (203) en el otro lado, por ejemplo, supóngase que avanzamos hacia la derecha -entonces necesitamos avanzar hacia la derecha hasta que todo el triángulo esté situado a la izquierda de la actual posición que probamos. Puede no ser suficiente avanzar solamente una vez, ya que hemos llegado precisamente a una nueva línea de barrido, y podemos estar varios píxeles fuera del triángulo. Para cada paso probamos si estamos dentro del triángulo (204). Si no, avanzamos de nuevo en la dirección de "dir" (202). Si estamos dentro, comprobamos la bandera visitada de la correspondiente cuadrícula en rowtileinfo (205). Si la bandera visitada es falsa, todavía no hemos visitado esa cuadrícula, y debemos inicializar la información de tal cuadrícula (206) en rowtileinfo. Más adelante, haciendo referencia a la Figura 4, se describe con detalle cómo se hace esto. Si la bandera visitada es verdadera, la información en rowtileinfo ya está actualizada, y podemos usarla. Así, comprobamos si la bandera visible es verdadera (207). Si lo es, podemos usar una forma rápida de escribir el píxel sin la necesidad de leer la memoria intermedia z, aquí denominada "write visible" (209), que se describirá con detalle más adelante haciendo referencia a la Figura 5. Si la bandera visitada es falsa, usaremos la forma normal de cuadricular el píxel, aquí denominada "write normal" (208), que se describe con detalle más adelante haciendo referencia a la Figura 6. Después de esto, retrocedemos y avanzamos a otro píxel (202).
Inicialización de rowtileinfo para una cuadrícula
La Figura 4 muestra cómo inicializamos rowtileinfo para una cuadrícula. Comenzamos leyendo el valor z-min de tileinfo en el valor z-min-cached en rowtileinfo (301). Después de esto calculamos un valor denominado z-tri-max, que es mayor que o igual que todos los valores z posibles que el triángulo puede tener en la cuadrícula actual (302). Una forma de calcular z-tri-max es permitir que z-tri-max sea el máximo de los valores z de los vértices del triángulo. Si las coordenadas de los vértices del triángulo son (x_A,y_A,z_A), (x_B,y_B,z_B), (x_C,y_C,z_C), entonces z-tri-max puede calcularse como
z-tri-max = max(z_A, max(z_B,z_C)).
Otra forma es permitir que z-tri-max sea el valor z máximo que el triángulo plano puede tener en la cuadrícula. Después de haber calculado z-tri-max, comprobamos entonces si z-tri-max<z-min-cached (303). Si lo es, conocemos con seguridad que todos los píxeles del triángulo dentro de la cuadrícula serán visibles (no ocluidos por un elemento primitivo de gráficos restituido), y la bandera "visible" se coloca por tanto en "true" (304). En otro caso, "visible" se colocará en "false" (305). Finalmente, la bandera "visited" de la cuadrícula correspondiente en tileinfo se coloca en "true" (306).
"Write Visible" - Escribir un píxel que es conocido para ser visto
La Figura 5 muestra cómo deberíamos escribir un píxel si tanto la bandera "visible" como la bandera "visited" son verdaderas para la cuadrícula en tileinfo que corresponde al píxel.
Si la bandera "visible" es verdadera, podemos dibujar el píxel sin leer la memoria intermedia z. Está garantizado que el píxel sea visible. Sin embargo, como estamos dibujando nuevos píxeles, es posible que dibujemos un píxel que tenga un valor z menor que el actual z-min-cached. Así, en consecuencia, deberíamos actualizar z-min-cached. Hacemos esto calculando primeramente z-tri(x,y) (401) y después escribiendo z-tri(x,y) en la memoria intermedia z (memoria intermedia de profundidad) y el color en la memoria intermedia de color (402). Aquí (x,y) son las coordenadas del píxel procesado. A continuación comprobamos si z-tri(x,y) < z-min-cached (403). Si lo es, deberíamos actualizar z-min-cached (404).
Escribir Normal - si "visited" es falsa
Si la bandera "visited" es verdadera, pero la bandera "visible" es falsa, deberíamos leer la memoria intermedia z para saber si deberíamos colocar el color. También deberíamos actualizar z-min-cached en caso de que escribiéramos un valor z en la memoria intermedia z que sea menor que z-min-cached. Esto se hace como se muestra en la Figura 6. Primeramente leemos z-buf de la memoria intermedia z (501). Después calculamos z-tri(x,y) (502). A continuación, comprobamos si z-tri(x,y)<z-buf(x,y) (503). Si no lo es, el píxel no es visible y nos detenemos. En otro caso, escribimos z-tri(x,y) en la memoria intermedia z y escribimos el color en la memoria intermedia de color (504). También comprobamos si z-tri(x,y)<z-min-cached (505). Si lo es, deberíamos actualizar z-min-cached con z-tri(x,y) (506). En otro caso, hemos finalizado y podemos parar.
Posteriores realizaciones a modo de ejemplo
En la Figura 7 se ilustran operaciones de procesamiento de gráficos a modo de ejemplo generalizado de acuerdo con aspectos adicionales del presente invento. Las filas de cuadrículas están definidas en un campo de visualización de gráficos, incluyendo las cuadrículas múltiples filas de píxeles (710). Se colocan las banderas de oclusión de cuadrículas en una fila de cuadrículas, esto es, dado un valor para indicar la no oclusión o la posible oclusión, tal como se ha descrito anteriormente, para unos elementos primitivos de gráficos basado en si los valores de profundidad representativos cumplen un criterio de oclusión (720). Por ejemplo, una bandera de oclusión puede ser una bandera "visibility" de una memoria asociada rowtileinfo como se ha descrito anteriormente. La bandera puede colocarse basándose en una comparación de, por ejemplo, valores z-max de un elemento primitivo (por ejemplo, un triángulo) y un valor z del umbral de oclusión en memoria asociada, tal como se ha descrito anteriormente. Los píxeles en la fila de cuadrículas son procesados fila por fila, por ejemplo, usando un algoritmo de recorrido a través en zig-zag como se ha descrito anteriormente, en respuesta a las banderas de oclusión (730). Se sobreentiende que no todas las banderas de oclusión y/o valores de profundidad de la fila de cuadrículas necesitan ser colocados antes de que un píxel de la fila sea procesado (por ejemplo, restituido), como a menudo será el caso en que las banderas de oclusión y/o los valores de profundidad puedan ser actualizados después de que uno o más píxeles en la fila sean procesados, como está indicado por el bucle inverso desde el bloque 720 al bloque 730. Como se ha descrito anteriormente, el procesamiento fila por fila puede dar lugar a una visita parcial de algunas cuadrículas cuando se procesa una línea de barrido, y la nueva visita a algunas o a todas las cuadrículas en el subsiguiente procesamiento de otras líneas de barrido, dependiendo generalmente de la geometría del elemento primitivo.
La Figura 8 ilustra operaciones posteriores a modo de ejemplo de acuerdo con aspectos adicionales del presente invento. Una pluralidad de cuadrículas está definida en un campo de visualización de gráficos (810). Una bandera de oclusión, por ejemplo, una bandera "visibility" en una memoria asociada rowtileinfo está colocada para indicar que unos elementos primitivos de gráficos no están ocluidos en una cuadrícula (820). Posteriormente, por ejemplo, durante el procesamiento de un píxel en un recorrido a través de línea de barrido, se ha detectado que la cuadrícula en la que está un píxel tiene una bandera de oclusión que indica no oclusión (830). El píxel es entonces procesado en respuesta a la detección del estado de la bandera (840). Por ejemplo, como se ha discutido en las anteriores realizaciones, si la bandera de oclusión indica no oclusión, el valor color y el valor z del píxel puede simplemente ser escrito en la memoria intermedia de color y en la memoria intermedia z, respectivamente, sin requerir recuperación del valor de la memoria intermedia z del píxel. Como se ha explicado anteriormente, esto puede dar lugar a una reducción de lecturas consumidoras de ancho de banda de la memoria intermedia z (que puede ser almacenada en una memoria inferior, fuera del chip, a medida que se procesa una pantalla completa).
La Figura 9 ilustra a modo de ejemplo un aparato 910 de acuerdo con posteriores realizaciones del presente invento, en el que se pueden realizar las operaciones de procesamiento de gráficos, tales como las operaciones descritas aquí con referencia a las Figuras 2-8. El aparato 910, aquí mostrado como aplicado en un dispositivo electrónico 900 (por ejemplo, un terminal inalámbrico móvil PDA o dispositivo similar), incluye un visualizador 912 y un procesador de gráficos 914 configurado para poner en práctica una o todas las operaciones de procesamiento de gráficos descritas aquí con referencia a las Figuras 2-8. El procesador de gráficos 914 puede incluir, por ejemplo, un chip microprocesador, un chip microcontrolador, un chip procesador de señal digital (DSP), un chip procesador de vídeo, un procesador de aplicación especial aplicado en un circuito integrado de aplicación específica (ASIC), y combinaciones de ellos. El procesador de gráficos 914 puede también incluir una memoria configurada para almacenar un código del ordenador y configurada para realizar las operaciones de procesamiento de gráficos descritas aquí en la ejecución en el procesador de gráficos 914. La memoria puede incluir, por ejemplo, memoria en chip (por ejemplo, memoria asociada) integrada en un microprocesador, en un DSP, en un chip procesador o en un dispositivo de cálculo similar, que puede ser usado para aplicar una memoria asociada de información de oclusión de cuadrícula (por ejemplo, rowtileinfo como se ha descrito anteriormente), así como una memoria discreta (por ejemplo, DRAM, SRAM, memoria rápida, y similares) configurada para interoperar con tal dispositivo de cálculo y que puede ser usada para almacenar mayores cantidades de datos, tal como una memoria intermedia z y datos de memoria intermedia de color de todos los píxeles en un campo de visualización.
En la actual aplicación, las Figuras 2-9 son diagramas que ilustran a modo de ejemplo aparatos y operaciones de acuerdo con realizaciones del presente invento. Se sobreentiende que las operaciones representadas en los diagramas, y las combinaciones de ellas, pueden realizarse utilizando uno o más circuitos electrónicos, por ejemplo, en circuitos de procesamiento de gráficos en un dispositivo electrónico portátil, tal como un teléfono inalámbrico, un PDA, o similar. También se observará que, en general, las operaciones representadas en los diagramas, y las combinaciones de ellas, pueden aplicarse en uno o más circuitos electrónicos, tal como en uno o más componentes electrónicos discretos (ICs), en uno o más circuitos integrados de aplicación específica (ASICs), y en módulos de circuitos de aplicación específica, así como mediante instrucciones de programa de ordenador que puede ser realizadas por un ordenador u otro aparato de procesamiento de datos, tal como un microprocesador o un procesador de señal digital (DSP) para producir una máquina tal que las instrucciones que ejecute en el ordenador o en otro aparato de procesamiento de datos programable creen circuitos electrónicos u otros medios que apliquen las operaciones especificadas. Las instrucciones del programa de ordenador también pueden ser ejecutadas en uno o más ordenadores o en otro aparato de procesamiento de datos para hacer que el o los ordenadores, u otro aparato programable, realicen una serie de acciones para crear un proceso aplicado en ordenador que incluya las operaciones especificadas.
\newpage
Las instrucciones del programa de ordenador pueden también estar realizadas en forma de un producto de código de programa de ordenador en un medio de almacenamiento legible por un ordenador, por ejemplo, como código de programa legible por un ordenador incorporado en el medio para uso por o en conexión con un sistema de ejecución de instrucciones. El medio de almacenamiento legible por un ordenador puede incluir, pero no está limitado a, medios de almacenamiento electrónicos,magnéticos, ópticos u otros, tales como un disco magnético u óptico o un dispositivo de memoria de circuito integrado. Por ejemplo, las instrucciones de programa de ordenador pueden estar incorporadas en la memoria incluida en un dispositivo tal como un ordenador. Consecuentemente, los bloques de los diagramas de las Figuras 2-9 tienen circuitos electrónicos y otro aparato que realiza las operaciones especificadas, actúa para realizar las operaciones especificadas, y produce programas de ordenador configurados para realizar las operaciones especificadas.
En los dibujos y en la especificación se han explicado realizaciones a modo de ejemplo del invento. A pesar de que se han empleado términos específicos, se usan solamente en un sentido genérico y descriptivo y no con fines limitativos.

Claims (22)

1. Un método de procesamiento de gráficos, que comprende definir una pluralidad de filas de cuadrículas (710) en un campo de visualización de gráficos que comprende una pluralidad de filas de píxeles, incluyendo cada cuadrícula píxeles de al menos dos filas de píxeles, y caracterizado por:
colocación de banderas de oclusión (720) para las cuadrículas respectivas de una fila de cuadrículas para un elemento primitivo de gráficos basado en si los respectivos valores de profundidad representativos de las cuadrículas de la fila de cuadrículas cumplen un criterio de oclusión; y
procesamiento de píxeles (730) en filas de píxeles correspondientes a la fila de cuadrículas de los elementos primitivos de gráficos de una forma fila por fila en respuesta a las banderas de oclusión.
2. Un método de acuerdo con la Reivindicación 1, en el que el procesamiento de píxeles comprende:
procesamiento de una parte de los píxeles en una primera cuadrícula de la fila de cuadrículas en respuesta a las banderas de oclusión; y después
procesamiento posiblemente píxeles en una segunda cuadrícula de la fila de cuadrículas en respuesta a las banderas de oclusión antes de procesar píxeles adicionales en la primera cuadrícula en respuesta a las banderas de oclusión.
3. Un método de acuerdo con la Reivindicación 2, en el que el procesamiento de píxeles comprende el procesamiento de filas de píxeles en la fila de cuadrículas usando un algoritmo de recorrido a través en zig-zag.
4. Un método de acuerdo con la Reivindicación 2:
en el que las banderas de oclusión están almacenadas en una memoria asociada de información de oclusión de cuadrícula que está configurada para almacenar las respectivas banderas de oclusión para las cuadrículas respectivas de una fila de cuadrículas y los respectivos valores de profundidad del umbral de oclusión para las respectivas cuadrículas de la fila de cuadrículas; y en el que la colocación de banderas de oclusión comprende:
determinación de un valor de profundidad máximo de los elementos primitivos de gráficos para una cuadrícula;
comparación del valor de profundidad máximo con el valor de profundidad del umbral de oclusión en la memoria asociada para la cuadrícula en la memoria asociada de la información de oclusión; y
colocación de la bandera de oclusión para la cuadrícula correspondiente en respuesta a la comparación.
5. Un método de acuerdo con la Reivindicación 4, que además comprende:
establecimiento de una memoria intermedia de profundidad configurada para almacenar los respectivos valores de profundidad del umbral de oclusión de los respectivos píxeles del campo de visualización de gráficos; y
en el que la colocación de las banderas de oclusión comprende colocar una bandera de oclusión para una cuadrícula para indicar no oclusión; y
en el que el procesamiento de píxeles comprende:
detección de que la cuadrícula tiene una bandera de oclusión que indica no oclusión; y
procesamiento en consecuencia de un píxel para el elemento primitivo de gráficos en la cuadrícula sin recuperar un valor de profundidad del umbral de oclusión para el píxel desde la memoria intermedia de profundidad.
6. Un método de acuerdo con la Reivindicación 5, que además comprende el establecimiento de una memoria intermedia de color configurada para almacenar los respectivos valores de color para los respectivos valores de los píxeles del campo de visualización de gráficos, y en el que el procesamiento, en consecuencia, de un píxel para los elementos primitivos de gráficos en la cuadrícula sin recuperar un valor de profundidad del umbral de oclusión para el píxel de la memoria intermedia de profundidad comprende almacenar, en consecuencia, un valor de color y un valor de profundidad para los elementos primitivos de gráficos para el píxel en la memoria intermedia de color y en la memoria intermedia de profundidad, respectivamente.
7. Un método de acuerdo con la Reivindicación 6, en el que las banderas de oclusión están almacenadas en una memoria asociada de información de oclusión de cuadrícula, que está configurada para almacenar las respectivas banderas de oclusión de las respectivas cuadrículas de una fila de cuadrículas, los respectivos valores de profundidad del umbral de oclusión de las respectivas cuadrículas de la fila de cuadrículas, y en el que el método comprende además:
determinación de un valor de profundidad de los elementos primitivos de gráficos del píxel;
comparación del valor de la profundidad determinado para el elemento primitivo de gráficos del píxel con el valor de profundidad del umbral de oclusión para la cuadrícula en la memoria asociada de información de oclusión; y
actualización del valor de profundidad del umbral de oclusión para la cuadrícula en la memoria asociada del umbral de información de oclusión con el valor de profundidad determinado para el elemento primitivo de gráficos del píxel en respuesta a la comparación.
8. Un método de acuerdo con la Reivindicación 7:
en el que la colocación de banderas de oclusión comprende la colocación de una bandera de oclusión para una cuadrícula para indicar no oclusión, y en el que el procesamiento de píxeles está precedido por:
establecimiento de una memoria añadida de información de oclusión de cuadrícula, configurada para almacenar los respectivos valores de profundidad del umbral de oclusión para todas las filas de cuadrículas; y
carga de la memoria asociada de información de oclusión de cuadrícula con valores de profundidad del umbral de oclusión de la memoria agregada de información de oclusión de la cuadrícula; y en el que la actualización del valor de profundidad de oclusión para la cuadrícula en la memoria asociada del umbral de información de oclusión está seguida por actualizar los valores de profundidad del umbral de oclusión en la memoria añadida de información de oclusión de la cuadrícula de la memoria asociada de información de oclusión de la cuadrícula.
9. Un método de acuerdo con la Reivindicación 1, que además comprende:
establecimiento de una memoria intermedia de profundidad configurada para almacenar los respectivos valores de profundidad del umbral de oclusión para los respectivos píxeles del campo de visualización de gráficos; y
en el que la colocación de banderas de oclusión comprende la colocación de la bandera de oclusión para una cuadrícula a fin de indicar la posible oclusión; y
en el que el procesamiento de píxeles comprende:
detección de que la cuadrícula tiene una bandera de oclusión que indica posible oclusión; y
comparación de un valor de profundidad para el elemento primitivo de gráficos para un píxel en la cuadrícula con un valor de profundidad del umbral de oclusión para el píxel en la memoria intermedia de profundidad en respuesta a la detección de que la cuadrícula tiene una bandera de oclusión que indica posible oclusión;
procesamiento del píxel en respuesta a la comparación; y
actualización del valor del umbral de profundidad del umbral de oclusión para la cuadrícula en la memoria asociada de información de oclusión de cuadrícula en respuesta al valor z escrito del píxel.
10. Un método de acuerdo con la Reivindicación 9, que además comprende el establecimiento de una memoria intermedia de color configurada para almacenar los respectivos valores de color para los valores de color respectivos de los píxeles del campo de visualización de gráficos, y en el que el procesamiento del píxel comprende el almacenamiento de un valor de color y de un valor de profundidad en la memoria intermedia de color y en la memoria intermedia de profundidad respectivamente, si la comparación del valor de profundidad para el elemento primitivo de gráficos para el píxel en la cuadrícula con el valor de profundidad del umbral de oclusión para el píxel en la memoria intermedia de profundidad indica no oclusión, y la actualización del valor de profundidad del umbral de oclusión para la cuadrícula en la memoria asociada de información de oclusión de cuadrícula en respuesta al valor z escrito del píxel.
11. Un método de acuerdo con la Reivindicación 1, en el que las banderas de oclusión están almacenadas en una memoria asociada de información de oclusión de cuadrícula que está configurada para almacenar las respectivas banderas de oclusión para las respectivas cuadrículas de una fila de cuadrículas, los respectivos valores de profundidad del umbral de oclusión para las respectivas cuadrículas de la fila de cuadrículas, y las respectivas banderas de estado para las respectivas cuadrículas de la fila de cuadrículas, y en el que el método comprende además:
procesamiento de una primera fila de píxeles en respuesta a la memoria asociada de información de oclusión de cuadrícula, en el que el procesamiento de una primera fila de píxeles comprende la colocación de banderas de oclusión y de estado para al menos una cuadrícula en la primera fila de cuadrículas para indicar que ha sido determinado el estado de oclusión de al menos una cuadrícula;
determinación de si una segunda fila de píxeles está en la primera fila de cuadrículas; y
procesamiento de una segunda fila de píxeles usando información en la memoria asociada de oclusión de cuadrícula obtenida de la primera fila de píxeles si la segunda fila de píxeles está en la primera fila de cuadrículas.
12. Un método de acuerdo con la Reivindicación 11, en el que el procesamiento de una primera fila de píxeles está precedido por:
establecimiento de una memoria añadida de información de oclusión configurada para almacenar los respectivos valores de profundidad del umbral de oclusión para todas las cuadrículas en todas las filas de cuadrículas;
colocación de las banderas de oclusión y de estado en la memoria asociada de información de oclusión de cuadrícula en valores predeterminados; y
almacenamiento de valores de profundidad del umbral de oclusión para la primera fila de cuadrículas de la memoria añadida de información de oclusión en la memoria asociada de información de oclusión de cuadrícula.
13. Un método de acuerdo con la Reivindicación 1, en el que las banderas de oclusión están almacenadas en una memoria asociada de información de oclusión de cuadrícula que está configurada para almacenar las respectivas banderas de oclusión para las respectivas cuadrículas de una fila de cuadrículas, los respectivos valores de profundidad del umbral de oclusión para las respectivas cuadrículas de una fila de cuadrículas, y las respectivas banderas de estado para las respectivas cuadrículas de una fila de cuadrículas, y en el que el método comprende además:
establecimiento de una memoria añadida de información de oclusión de cuadrícula configurada para almacenar valores de profundidad del umbral de oclusión para todas las cuadrículas de todas las filas de cuadrículas;
procesamiento de una primera fila de píxeles en respuesta a la memoria asociada de información de oclusión de cuadrícula, en el que el procesamiento de una primera fila de píxeles comprende la colocación de banderas de oclusión y de banderas de estado para una primera fila de cuadrículas que tienen píxeles en la primera fila de píxeles para indicar que ha sido determinado al menos un estado de oclusión de al menos una cuadrícula en la primera fila;
determinación de si una segunda fila de píxeles está en la primera fila de píxeles; y
en respuesta determinación de que la segunda fila de píxeles está en una segunda fila de cuadrículas, recuperando los valores de profundidad del umbral de oclusión desde la memoria asociada de información de oclusión de cuadrícula en la información añadida de oclusión de cuadrícula en la memoria asociada de información de oclusión de cuadrícula, carga de los valores de profundidad del umbral de oclusión en la memoria asociada de información de oclusión de cuadrícula con los correspondientes valores de profundidad del umbral de oclusión para la segunda fila de cuadrículas de la memoria añadida de información de oclusión de cuadrícula, y procesamiento de la segunda fila de píxeles usando la memoria asociada de información de oclusión actualizada.
14. Un método de acuerdo con la Reivindicación 13, en el que la determinación de si una segunda fila de píxeles está seguida por actualizar los valores de profundidad del umbral de oclusión para la primera fila de cuadrículas en la memoria añadida de información de oclusión con los valores de profundidad del umbral de oclusión en respuesta a la determinación de que la segunda fila de píxeles está en una segunda fila de cuadrículas.
15. Un aparato que comprende un visualizador y un procesador de gráficos acoplado al visualizador y operativo para definir una pluralidad de filas de cuadrículas (710) en un campo de visualización de gráficos del visualizador, incluyendo cada cuadrícula píxeles de al menos dos filas de píxeles, caracterizado porque el procesador de gráficos está operativo para colocar banderas de oclusión (720) para las cuadrículas respectivas de una fila de cuadrículas para un elemento primitivo de gráficos basado en si los respectivos valores de profundidad representativos para las cuadrículas de la fila de cuadrículas cumplen un criterio de oclusión, y para procesar píxeles (730) en filas de píxeles correspondientes a la fila de cuadrículas para el elemento de gráficos primitivo en una forma fila por fila en respuesta a las banderas de oclusión.
16. Un aparato de acuerdo con la Reivindicación 15, en el que el procesador de gráficos es operativo para procesar una parte de los píxeles en una primera cuadrícula de la fila de cuadrículas en respuesta a las banderas de oclusión y para después procesar píxeles en una segunda cuadrícula de la fila de píxeles en respuesta a las banderas de oclusión antes del procesamiento de píxeles adicionales en la primera fila en respuesta a las banderas de oclusión.
17. Un aparato de acuerdo con la Reivindicación 15, en el que el procesador de gráficos es operativo para procesar filas de píxeles en la fila de cuadrículas usando un algoritmo de recorrido a través en zig-zag.
18. Un aparato de acuerdo con la Reivindicación 15, en el que los valores de profundidad representativos comprenden profundidades máximas del elemento primitivo de gráficos en las cuadrículas, y en el que el criterio de oclusión es si una profundidad máxima para el elemento primitivo de gráficos en la cuadrícula es menor que un valor de no oclusión mínimo previamente establecido para la cuadrícula.
19. Un aparato de acuerdo con la Reivindicación 15, en el que el visualizador y el procesador de gráficos están alojados en un dispositivo electrónico portátil.
20. Un producto de programa de ordenador que comprende un código de programa incorporado en un medio legible de ordenador, comprendiendo el código de programa un código de programa configurado para definir una pluralidad de filas de cuadrículas (710) en un campo visualizador de gráficos del visualizador, incluyendo cada cuadrícula píxeles de al menos dos filas de píxeles, caracterizado porque el código de programa está además configurado para colocar banderas de oclusión (720) para las respectivas cuadrículas de una fila de cuadrículas para un elemento primitivo de gráficos basado en si los respectivos valores de profundidad representativos para las cuadrículas de la fila de cuadrículas cumplen un criterio de oclusión, y para procesar píxeles (730) en filas de píxeles correspondientes de la fila de cuadrículas para el elemento primitivo de gráficos en una forma fila por fila en respuesta a las banderas de oclusión.
21. Un producto de programa de ordenador de acuerdo con la Reivindicación 20, en el que el código de programa está además configurado para procesar una parte de los píxeles en una primera cuadrícula de la fila de cuadrículas en respuesta a las banderas de oclusión y para procesar después píxeles en una segunda cuadrícula de la fila de cuadrículas en respuesta a las banderas de oclusión antes de procesar píxeles adicionales en la primera cuadrícula en respuesta a las banderas de oclusión.
22. Un producto de programa de ordenador de acuerdo con la Reivindicación 21, en el que el código de programa está además configurado para procesar filas de píxeles en la fila de cuadrículas usando un algoritmo de recorrido a través en zig-zag.
ES03782371T 2002-12-20 2003-12-11 Aparato, metodos y productos de programa de ordenador para procesamiento de graficos utilizando supresion de oclusion de minima profundidad y recorrido a traves de zig-zag. Expired - Lifetime ES2264021T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US43490002P 2002-12-20 2002-12-20
US434900P 2002-12-20
US720042 2003-11-21
US10/720,042 US7301537B2 (en) 2002-12-20 2003-11-21 Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal

Publications (1)

Publication Number Publication Date
ES2264021T3 true ES2264021T3 (es) 2006-12-16

Family

ID=32600210

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03782371T Expired - Lifetime ES2264021T3 (es) 2002-12-20 2003-12-11 Aparato, metodos y productos de programa de ordenador para procesamiento de graficos utilizando supresion de oclusion de minima profundidad y recorrido a traves de zig-zag.

Country Status (9)

Country Link
US (2) US7301537B2 (es)
EP (1) EP1576542B1 (es)
JP (1) JP4515917B2 (es)
KR (1) KR101001795B1 (es)
AT (1) ATE333129T1 (es)
AU (1) AU2003290018A1 (es)
DE (1) DE60306813T2 (es)
ES (1) ES2264021T3 (es)
WO (1) WO2004057533A2 (es)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301537B2 (en) * 2002-12-20 2007-11-27 Telefonaktiebolaget Lm Ericsson (Publ) Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal
US20050195186A1 (en) * 2004-03-02 2005-09-08 Ati Technologies Inc. Method and apparatus for object based visibility culling
US7978194B2 (en) * 2004-03-02 2011-07-12 Ati Technologies Ulc Method and apparatus for hierarchical Z buffering and stenciling
US8081182B2 (en) * 2004-03-03 2011-12-20 Qualcomm Incorporated Depth buffer for rasterization pipeline
EP1659538B1 (en) * 2004-11-19 2008-01-09 Telefonaktiebolaget LM Ericsson (publ) Method and device for rendering three-dimensional graphics
JP2006209654A (ja) * 2005-01-31 2006-08-10 Matsushita Electric Ind Co Ltd パターン付多角形描画装置
US7830388B1 (en) * 2006-02-07 2010-11-09 Vitie Inc. Methods and apparatus of sharing graphics data of multiple instances of interactive application
KR100762811B1 (ko) * 2006-07-20 2007-10-02 삼성전자주식회사 하프 플레인 에지 함수를 이용한 타일 비닝 방법 및 시스템
KR100793990B1 (ko) * 2006-09-18 2008-01-16 삼성전자주식회사 타일 기반 3차원 렌더링에서의 조기 z 테스트 방법 및시스템
WO2008091198A1 (en) 2007-01-24 2008-07-31 Swiftfoot Graphics Ab Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
US20090046098A1 (en) * 2007-08-14 2009-02-19 Stmicroelectronics S.R.L. Primitive binning method for tile-based rendering
US9384564B2 (en) * 2007-11-19 2016-07-05 Microsoft Technology Licensing, Llc Rendering of data sets comprising multiple-resolution samples
JP4568750B2 (ja) * 2007-11-30 2010-10-27 富士通株式会社 描画装置、描画プログラムおよび描画方法
CN101661741B (zh) * 2008-08-29 2012-02-22 富士通株式会社 图形光栅扫描中的三角形遍历方法和装置
US20100231586A1 (en) * 2009-03-13 2010-09-16 Zebra Imaging, Inc. Processing Graphics Primitives in an Epsilon View Volume
EP2425624A2 (en) 2009-05-01 2012-03-07 Thomson Licensing 3d video coding formats
US8611604B2 (en) * 2009-06-03 2013-12-17 Chubu University Educational Foundation Object detection device
US9390539B2 (en) * 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
KR20130139242A (ko) 2010-09-14 2013-12-20 톰슨 라이센싱 차폐 데이터의 압축 방법 및 장치
GB201116438D0 (en) * 2011-09-22 2011-11-02 Advanced Risc Mach Ltd Occlusion queries in graphics processing
KR101136737B1 (ko) 2011-10-07 2012-04-19 (주)넥셀 그래픽 처리방법 및 그 장치
WO2013130030A1 (en) * 2012-02-27 2013-09-06 Intel Corporation Using cost estimation to improve performance of tile rendering for image processing
US10242481B2 (en) * 2012-03-15 2019-03-26 Qualcomm Incorporated Visibility-based state updates in graphical processing units
US9183664B2 (en) 2012-05-03 2015-11-10 Apple Inc. Tiled forward shading with improved depth filtering
KR101208826B1 (ko) 2012-07-09 2012-12-06 인하대학교 산학협력단 깊이 텍스처의 등고선을 기반으로 한 실시간 다각형 앰비언트 오클루전 방법
GB2509113B (en) * 2012-12-20 2017-04-26 Imagination Tech Ltd Tessellating patches of surface data in tile based computer graphics rendering
US9183652B2 (en) 2013-05-15 2015-11-10 Intel Corporation Variable rasterization order for motion blur and depth of field
US9659393B2 (en) 2013-10-07 2017-05-23 Intel Corporation Selective rasterization
US9934604B2 (en) * 2013-12-27 2018-04-03 Intel Corporation Culling using masked depths for MSAA
US20150310660A1 (en) * 2014-04-25 2015-10-29 Sony Computer Entertainment America Llc Computer graphics with enhanced depth effect
US10268590B2 (en) * 2015-02-23 2019-04-23 Netflix, Inc. Efficient computer-implemented techniques for managing graphics memory
KR102354989B1 (ko) 2015-04-14 2022-01-24 삼성전자주식회사 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
US9922449B2 (en) 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling
US10037621B2 (en) 2015-06-18 2018-07-31 Intel Corporation Hierarchical quadrant based coverage testing for rasterization
US9959643B2 (en) 2015-10-29 2018-05-01 Intel Corporation Variable rasterization order for motion blur and depth of field
US10068307B2 (en) 2016-05-20 2018-09-04 Intel Corporation Command processing for graphics tile-based rendering
US20170345206A1 (en) * 2016-05-27 2017-11-30 Intel Corporation Occlusion query apparatus and method for accelerated rendering
US10453170B2 (en) 2016-09-09 2019-10-22 Intel Corporation Minimum/maximum and bitwise and/or based coarse stencil test
CN113797531A (zh) * 2021-08-30 2021-12-17 网易(杭州)网络有限公司 遮挡剔除实现方法、装置、计算机设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07210707A (ja) * 1994-01-20 1995-08-11 Sumitomo Electric Ind Ltd エッジ付き図形の描画方法及び装置
KR100277803B1 (ko) 1995-03-10 2001-01-15 가나이 쓰도무 3차원 그래픽 표시장치
JP3099940B2 (ja) * 1995-12-25 2000-10-16 日本電気株式会社 3次元グラフィックス制御装置
JPH09265549A (ja) * 1996-03-28 1997-10-07 Hitachi Ltd 画像合成システム
US5751291A (en) * 1996-07-26 1998-05-12 Hewlett-Packard Company System and method for accelerated occlusion culling
GB9716251D0 (en) * 1997-08-01 1997-10-08 Philips Electronics Nv Attribute interpolation in 3d graphics
WO1999056249A1 (en) * 1998-04-27 1999-11-04 Interactive Silicon, Inc. Graphics system and method for rendering independent 2d and 3d objects
AU5686199A (en) 1998-08-20 2000-03-14 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6313839B1 (en) * 1998-10-23 2001-11-06 Hewlett-Packard Company Method and apparatus for performing Z buffer depth comparison operations
US6473082B1 (en) 1999-05-18 2002-10-29 S3 Graphics Co., Ltd. System and method for implementing a two-layer z-range buffer
JP2000331185A (ja) * 1999-05-24 2000-11-30 Sony Corp 画像処理方法、画像処理装置、及びプログラム提供媒体
US6577307B1 (en) 1999-09-20 2003-06-10 Silicon Integrated Systems Corp. Anti-aliasing for three-dimensional image without sorting polygons in depth order
US6525726B1 (en) * 1999-11-02 2003-02-25 Intel Corporation Method and apparatus for adaptive hierarchical visibility in a tiled three-dimensional graphics architecture
US6498605B2 (en) * 1999-11-18 2002-12-24 Intel Corporation Pixel span depth buffer
US7301537B2 (en) * 2002-12-20 2007-11-27 Telefonaktiebolaget Lm Ericsson (Publ) Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal

Also Published As

Publication number Publication date
EP1576542A2 (en) 2005-09-21
US7961185B2 (en) 2011-06-14
JP2006510973A (ja) 2006-03-30
US20040119709A1 (en) 2004-06-24
EP1576542B1 (en) 2006-07-12
ATE333129T1 (de) 2006-08-15
DE60306813D1 (de) 2006-08-24
US7301537B2 (en) 2007-11-27
JP4515917B2 (ja) 2010-08-04
AU2003290018A1 (en) 2004-07-14
AU2003290018A8 (en) 2004-07-14
US20090058852A1 (en) 2009-03-05
KR20050085760A (ko) 2005-08-29
WO2004057533A3 (en) 2004-09-16
DE60306813T2 (de) 2006-11-23
WO2004057533A2 (en) 2004-07-08
KR101001795B1 (ko) 2010-12-15

Similar Documents

Publication Publication Date Title
ES2264021T3 (es) Aparato, metodos y productos de programa de ordenador para procesamiento de graficos utilizando supresion de oclusion de minima profundidad y recorrido a traves de zig-zag.
US7956860B2 (en) Subdividing geometry images in graphics hardware
KR101140460B1 (ko) 그래픽 시스템, 꼭지점 데이터의 타일 기반 변환 방법 및 컴퓨터 판독가능한 저장 매체
Sander et al. Silhouette clipping
US6362818B1 (en) System and method for reducing the rendering load for high depth complexity scenes on a computer graphics display
US10242481B2 (en) Visibility-based state updates in graphical processing units
US20020030693A1 (en) Triangle clipping for 3d graphics
WO2003096276A2 (en) Graphics engine converting individual commands to spatial image information, and electrical device and memory incorporating the graphics engine
US10008029B2 (en) Updating depth related graphics data
US8587592B2 (en) Tile-based rendering apparatus and method
US20100265254A1 (en) Graphics filled shape drawing
CN100339869C (zh) 使用最小深度遮挡剔除和z字形遍历的图形处理设备及方法
JPH09179999A (ja) 画像生成方法およびその装置
US6515660B1 (en) Apparatus and method for dynamic triangle stripping
US20220036634A1 (en) Methods and apparatus for pixel packing
Hofmann et al. Hierarchical multi-layer screen-space ray tracing
Pajarola et al. Fast depth-image meshing and warping
Sugama et al. Low memory usage architecture for 3D graphics based on scan-line rendering
Gay Experience in practical implementation of boundary-defined area fill
JPH02127785A (ja) 画像表示装置
CN115344726A (zh) 一种基于gpu算法的三维数字化数据库构建方法
손지혜 et al. Survey on Graphics Processing Unit