Professional Documents
Culture Documents
la GPU. Adaptaremos y simplicaremos el algoritmo para el procesado directo de supercies Bzier eliminando de la propuesta original el requerimiento
de utilizacin de jerarquas de supercies. Por otra parte y con el objetivo
de la sntesis en tiempo real en mente, analizaremos diferentes tcnicas para
la reduccin de los requerimientos de transmisin entre CPU y GPU y para
reducir el nmero de fases de sincronizacin. Finalmente presentamos una
comparativa de los resultados obtenidos con las diversas tcnicas propuestas
con los asociados a la implementacin tradicional que evala las supercies
directamente en la CPU.
Existen diferentes estrategias alternativas a este mtodo clsico como la
realizacin de la triangulacin en extensiones hardware de la GPU [6], en la
GPU de forma directa en las tarjetas grcas ms recientes [8, 9], la evaluacin directa de los puntos de la supercie en la GPU [2] o la sntesis de la
imagen utilizando algoritmos de
Ray tracing
[18, 1, 4, 19].
Con este objetivo en nuestra implementacin sobre la GPU hemos utilizado la API (
Para ello empezaremos describiendo las caractersticas de las tarjetas grcas y su evolucin en los ltimos aos. La Seccin 3.2.2 se centra en el
algoritmo descrito en [8], punto de partida de nuestro trabajo. En el apartado 3.2.3 se describe la adaptacin y modicaciones que proponemos sobre
el algoritmo de trabajo persiguiendo el objetivo de la triangulacin y sntesis de modelos basados en supercies Bzier en tiempo real. Posteriormente,
en la Seccin 3.2.4, se incluye un anlisis de los resultados obtenidos para
las diferentes propuestas presentadas. Para nalizar, en la Seccin 3.2.5, se
presentan las principales conclusiones.
Processing Unit )
rasterizar
tringulos pretransfor-
21
Nvidia Geforce 256, Geforce2, ATI Radeon 7600 o S3's Savage3D. Se libera
a la CPU de la transformacin de vrtices y la iluminacin local. Se sigue
teniendo un conjunto de operaciones muy limitadas a pesar de que aumentan
aquellas destinadas a combinar texturas y pxeles. Por ello, se dice que esta
generacin es congurable, pero todava no programable.
La tercera generacin de GPUs surge en 2001, con por ejemplo: Nvidia
Geforce 3 y 4 Ti, Microsoft Xbox, ATI Radeon 8500. En esta generacin
surge el
Vertex
Pixel
generacin el
respecto al
shaders
stream processors
(SPs) unicados
shaders
shader.
Vertex Shader
(VS). En
esta etapa se procesan uno a uno todos los vrtices que llegan desde el
Assembler
Input
22
Input
Assembler
Vertex
Shader
Geometry
Shader
Stream
Output
Memoria
Rasterizer
Pixel
Shader
Output
Merger
El
Geometry Shader
racin de GPUs. Recibe como entrada una primitiva simple (punto, lnea o
tringulo) y tiene la capacidad de generar vrtices. Un programa del
etry Shader
Geom-
Pixel Shader
Rasterizer
mables del cauce y en la cual se calcula el valor para cada pixel, aplicando
tcnicas como
bump mapping
o sombreado [17].
shader
similares
23
NURBs
o
T-Splines
Aproximacin
Bzier 1
bicbicas
ETAPA DE PREPROCESO
GPU
Jerarqua
bicbica
Generacin
mallas 2
resoluciones
CPU
Seleccin
de
LOD
ETAPA DE SNTESIS
GPU
Mallas
resolucin
Jerarqua
bicbica
l,
Evaluacin
superficies
Bzier
Rasterizer
Vertex Buffer
Figura 3.10:
GPU
f.
En
Spline
me-
diante una jerarqua gruesa de polgonos bicbicos Bzier racionales (ver paso
1 de la Figura 3.10). Puesto que uno de los objetivo de [8] es que el algoritmo
funcione sobre cualquier tarjeta grca que soporte al menos la versin
1,0
12,
esto implica
24
Geometry Shader
por
triangular (ver Ecuacin 3.6). As, los vrtices virtuales que son denidos
inicialmente sin coordenadas especcas, son posteriormente procesados en
el
Vertex Shader
lugar de utilizar una malla por supercie, que ira en contra de la losofa
del clculo del renado en la GPU, se crea una malla predenida por nivel
de resolucin y se almacena en la GPU en este paso del preproceso.
En el paso 3 de la gura, se atraviesa para cada fotograma
la jerarqua
de supercies Bzier y se seleccionan aquellas supercies que tienen suciente resolucin para garantizar la precisin deseada en la visualizacin. Si
durante el recorrido se alcanza un nodo hoja, se generan supercies bicbicas
k
adicionales. Los puntos de control de cada supercie [B ], 0 k S (siendo
Vertex Shader
la
ecuacin 3.6 para cada supercie y para cada vrtice virtual de la malla
resolucin adecuada para ese caso. Para sintetizar los polgonos de Bzier
en la GPU, en [8] se opt por la evaluacin directa frente al algoritmo de
deCasteljau [17] ya que la implementacin en la GPU del primero de ellos es
ms eciente.
ETAPA DE PREPROCESO
GPU
CPU
Generacin
mallas 2
resoluciones
CPU
Seleccin
de
LOD
25
Mallas
resolucin
l,t,k
Evaluacin
superficies
Bzier
ETAPA DE SNTESIS
GPU
Puntos de
control
Rasterizer
Vertex Buffer
k
En concreto, en nuestra propuesta [B ] se almacena en tres arrays diferenk
k
k
tes [Bx , By , Bz ], de tipo
uno por cada coordenada y en memoria
de texturas usando un buer de texturas (
) [10]. Se consigue mejor
oat4 4
tbuer
tbuer, permite
empaquetar datos que pueden ser accedidos desde variables separadas en una
26
Vertex Buer
Vertex Buer
Index Buer
y el tamao
Ne = 3 S
siendo S el nmero de supercies.
t de la malla
Ne , por cada
27
En la GPU, se generan los tringulos necesarios para representar la supercie Bzier con la resolucin seleccionada. En la Figura 3.12 se muestra
el pseudocdigo del
Vertex Shader
Vertex Shader
Vertex Shader
recibir co-
multiplican estos valores, siguiendo la Ecuacin 3.6 para generar los vrtices
deseados (lnea 11).
Con esta aproximacin se realiza una llamada sncrona,
draw Primitive
la GPU por fotograma y para cada una de las supercies que forman la escena.
Por tanto, el nmero de sincronizaciones,
NDP ,
por fotograma es
NDP = S .
NDP = 1
por fotograma.
NDP . Con
batching
[5]. Esta tcnica persigue minimizar el nmero de llamadas a draw Primitive,
este objetivo hemos introducido en nuestra propuesta la tcnica de
para ello, se juntan los datos de todas las supercies a sintetizar en un nico
envo y se realiza una llamada sncrona por cada fotograma, lo que reduce
el nmero de sincronizacin por fotograma a
NDP = 1.
Como se ver en la
batching
est limitada a la
cantidad de memoria disponible en la GPU para el almacenamiento temporal de la informacin hasta que se realice el proceso de sincronizacin. As,
si en la implementacin basada en [8], la memoria reservada era la suma
del tamao de la malla de las cuatro resoluciones permitidas en su imple32
16
8
4
mentacin (M R + M R + M R + M R ), con nuestra tcnica con
32
32
se necesita reservar S M R
siendo M R
la malla de resolucin de mximo
batching
tamao permitida. De esta forma, la cantidad de memoria que hay que reser-
batching
batching.
28
(a)
(b)
(c)
Figura 3.13:
(c) Elefante
Teapot,
(b)
Teacup
3.2.4. Resultados
En esta seccin se presentan los resultados obtenidos. Todas las medidas,
se han obtenido en un sistema Intel core duo E6600 con 2GB de RAM, una
Geforce 8800GTX y utilizando Microsoft Vista, con la versin de DirectX 10
y la versin 4.0 de
shader.
Teapot
29
En la Tabla 3.1 se muestran los fotogramas por segundo (FPS) de diferentes escenas para las diferentes propuestas de sntesis de supercies Bzier que
hemos analizado. La primera columna muestra el nmero de modelos utilizados por cada escena. La segunda columna (CPU) muestra los FPS cuando
se realiza la aproximacin tradicional, esto es, se hace la triangulacin de
las supercies Bzier en la CPU usando la tcnica de
forward dierencing
batching
Vertex Shader
pero se geb
nera el mismo nmero de NDP que en el caso de GP U . En la sexta columna
d
(GP U ) se muestran los FPS cuando se aplica la tcnica de
. En las
batching
Buer
y del
Index Buer,
Vertex
30
6,91
1,86
1,96
2,03
8,37
10 elefantes
0,078
0,077
0,078
0,99
20 elefantes
0,039
0,039
0,039
0,33
GP U b
31
GP U c ,
NDP
es el factor
NDP
por fotograma.
batching
se
consigue un rendimiento peor que con la implementacin en la CPU, a pesar de que en este ltimo caso se est enviando un mayor nmero de informacin y los clculos se realicen en la CPU. Pero tenemos que destacar
l
que el rendimiento del
est limitado por el tamao de M R
Vertex Shader
adems de por el
stream
hemos comproba-
Vertex Shader
La tcnica de
batching
macin en la memoria de la tarjeta grca evitando con ello continuas sincronizaciones asociadas a cada supercie individual a representar. Se observa
claramente que para que el
batching
reiterada cada vez que se llene la memoria del sistema pues, de otra forma,
las prestaciones del sistema quedarn muy limitados. Esto se puede comprod
bar en los resultados indicados en la columna GP U cuando el nmero de
objetos del modelo aumenta. Ntese que por motivos de claridad incluimos
en esta tabla los resultados asociados a la aplicacin de un nico
batching,
batching
batching
3.2.5. Conclusiones
El mtodo clsico para la sntesis de las supercies Bzier se basa en
la triangulacin de dichas superces en la CPU y el envo de la malla de
tringulos resultante a la GPU para su sntesis. Como se ha podido comprobar
por los resultados obtenidos, al triangulizar los supercies Bzier en la GPU
se obtiene un mejor rendimiento debido al paralelismo inherente a la GPU,
aunque esta mejora en el rendimiento disminuye conforme aumenta el nmero
de supercies.
Al realizar las triangulaciones directamente en la GPU se consiguen varios objetivos, liberar la CPU de carga computacin grca, disminuir los
32
batching
Geometry Shader
Apndice A
Artculo
En este apndice se incluye el artculo titulado Explotacin de la tarjeta grca para la sntesis de modelos basados en supercies Bzier. Este
artculo, recoge los puntos principales del trabajo comentado en este dossier.
Ha sido aceptado en las XIX Jornadas de paralelismo, que se celebrarn en
Castelln en septiembre de 2008.
33
34
Apndice A. Artculo
n
I. Introduccio
1 Dpto.
de Electr
onica y Sistemas. Universidade de A
Coru
na, e-mail: {rconcheiro,margamor,doallo}@udc.es
2 Dpto. de Electr
onica y Computaci
on. Universidade de
Santiago de Compostela, e-mail:mboo@dec.usc.es
n
X
i=0
Bi Jn,i (t), 0 t 1
(1)
(1 t)
(2)
35
(5)
Q(u, v) = [u
=
=
=
=
(3)
(1)
.n.. 1
(1)
n1 0
n
0
n
0
(1)
n1
...
n1
(1)0
0
n
1
(1)
...
...
nn
...
...
...
(1)
[t3
t2
t1
1]
1
3
3
1
3
6
3
0
3
3
0
0
1
0
0
0
B0
B1
B2
B3
Partiendo de la descripci
on de una curva Bezier se
puede definir de forma an
aloga las superficies Bezier.
As una superficie Bezier se define como:
Q(u, v) =
Pn
i=0
Pm
j=0
0 u, v 1
B0,0
B1,0
B2,0
B3,0
1
3
3
1
3
6
3
0
u 1]
B0,1
B1,1
B2,1
B3,1
3
3
0
0
1
3
3
1
B0,2
B1,2
B2,2
B3,2
1
0
0
0
3
6
3
0
B0,3
B1,3
B2,3
B3,3
v3
3
3
0
0
1
0
0
0
2
v
v
1
n y sntesis de NURBS en
III. Triangulacio
la GPU
(1 t)3
3t(1 t)2
3t2 (1 t)
t3
(4)
36
Apndice A. Artculo
A
123
B
123
"
C #
!
$
%&
'
D
()* +), - .//)*
567 87 95 : ;<65: =:
423
0
37
()*
9
()*
:
,-./. 0, 1 23- ,1 41
+)*
<=>? @A BC
D@>? E@F
;
!" # $%%
&
'
tante. Adem
as la latencia de los c
alculos de acceso a
esta memoria estan mejor ocultos que en otras. Por
otro lado, el tbuffer, permite empaquetar datos que
pueden ser accedidos desde variables separadas en
una misma operaci
on, aumentando as el ancho de
banda.
Las mallas de diferente resolucion que indican las
coordenadas parametricas a ser posteriormente evaluadas para el c
omputo de los nuevos vertices son
generadas en la CPU antes de comenzar el proceso
de sntesis de igual forma que en la secci
on III. Estas
mallas son enviadas a la GPU y almacenadas en ella,
como se puede ver en el paso 2 de la Figura 4. Cada
malla de resolucion, MR, se almacena en la memoria
de la GPU en el paso de preproceso como un Vertex Buffer [11], lo que permite acelerar la sntesis de
la geometra y proporcionar un alto ancho de banda
en el flujo de datos, as que la tarjeta gr
afica puede
leer mas rapidamente las primitivas. No es necesario generar ning
un Index Buffer [11] ya que los
valores almacenados en el Vertex Buffer mantienen
las relaciones de localidad para permitir generar los
polgonos necesarios.
En cada fotograma se sintetizan cada una de las
superficies con el nivel de resolucion adecuado. En
nuestra aproximaci
on, como hemos indicado, no es
necesario enviar los puntos de control de la superficie
Bezier ya que estan almacenados en la GPU. Lo que
se enva por cada superficie y para cada fotograma f
es el nivel l, el ndice de la superficie k y el tama
no
t de la malla de resolucion (ver paso 3 de la figura).
As el n
umero de envos, Ne , por cada fotograma es:
Ne = 3 S
siendo S el n
umero de superficies.
En la GPU, se generan los triangulos necesarios
para representar la superficie Bezier con la resoluci
on seleccionada. En la Figura 5 se muestra el pseudoc
odigo del Vertex Shader para generar la triangulaci
on de las superficies Bezier bic
ubicas en funcion
de las mallas de resolucion. Utilizamos el Vertex
38
Apndice A. Artculo
TABLA I
Fotogramas por segundo (fps)
(a)
(b)
1 teacup
10 teacups
20 teacups
30 teacups
40 teacups
50 teacups
100 teacups
1 teapot
10 teapots
20 teapots
30 teapots
40 teapots
50 teapots
100 teapots
1 elefante
10 elefantes
20 elefantes
CPU
145,35
29,36
16,03
11,25
8,43
6,85
3,31
129,37
24,82
13,33
9,10
7,13
5,56
2,80
6,91
GP U a
95,51
10,19
4,67
2,57
0,61
0,52
0,26
71,50
8,42
3,29
1,86
0,54
0,43
0,20
1,86
0,078
0,039
GP U b
96,89
11,94
4,34
2,57
0,66
0,52
0,25
74,41
9,58
3,32
1,96
0,53
0,42
0,21
1,96
0,077
0,039
GP U c
97,09
12,27
4,63
2,68
0,66
0,53
0,26
80
9,69
3,44
2,03
0,54
0,43
0,21
2,03
0,078
0,039
GP U d
408,16
85,32
40,21
19,87
13,12
8,49
2,31
363,64
84,60
29,09
14,19
8,54
5,8
1,54
8,37
0,99
0,33
(c)
Fig. 6. Modelos utilizados para l=4 y l=16 (a) Teapot, (b)
Teacup y (c) elefante
39
40
Apndice A. Artculo
Bibliografa
[1] A. Efremov, V. Havran and H.P. Seidel. Robust and Numerically Stable
Bzier Clipping Method for Ray Tracing NURBS Surfaces.
21st Spring
734, 2006.
[4] C. Benthin, I. Wald and P. Slusallek. Interactive Ray Tracing of Free-
Form Surface.
2004.
[5] C.
Cebenoyan.
Addison-Wesley, 2004.
[6] F. J. Espino, M. Bo, M. Amor and J.D. Bruguera. Hardware Support
for Adaptive Tessellation of Bzier Surfaces on Local Tests.
[7] K. Grya.
Journal of
Mi-
41
42
Bibliografa
[10] Microsoft.
Technical Brief. The GeForce 6 Series of GPUs High Performance and Quality for Complex Image Eects, 2004.
[11] Nvidia.
[12] Nvidia.
Addison-Wesley, 2005.
Springer, 1997.
[16] D. F. Rogers.
XIX
Addison-Wesley, 2003.
ware, 2008.
Word-