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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 title claims description 45
- 238000004590 computer program Methods 0.000 title claims description 12
- 230000001629 suppression Effects 0.000 title description 2
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 17
- 230000015654 memory Effects 0.000 claims description 101
- 239000000872 buffer Substances 0.000 claims description 49
- 230000004044 response Effects 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 5
- 208000006440 Open Bite Diseases 0.000 claims description 4
- 239000000543 intermediate Substances 0.000 description 7
- 238000012360 testing method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000003973 paint Substances 0.000 description 4
- 241001253201 Pineda Species 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image 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.
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.
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.
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.
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.
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.
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.
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):
(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).
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).
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).
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).
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.
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.
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)
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)
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 |
-
2003
- 2003-11-21 US US10/720,042 patent/US7301537B2/en not_active Expired - Lifetime
- 2003-12-11 DE DE60306813T patent/DE60306813T2/de not_active Expired - Lifetime
- 2003-12-11 JP JP2004561274A patent/JP4515917B2/ja not_active Expired - Fee Related
- 2003-12-11 AU AU2003290018A patent/AU2003290018A1/en not_active Abandoned
- 2003-12-11 KR KR1020057011326A patent/KR101001795B1/ko active IP Right Grant
- 2003-12-11 ES ES03782371T patent/ES2264021T3/es not_active Expired - Lifetime
- 2003-12-11 AT AT03782371T patent/ATE333129T1/de not_active IP Right Cessation
- 2003-12-11 WO PCT/EP2003/014061 patent/WO2004057533A2/en active IP Right Grant
- 2003-12-11 EP EP03782371A patent/EP1576542B1/en not_active Expired - Lifetime
-
2007
- 2007-08-31 US US11/848,569 patent/US7961185B2/en active Active
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 |