Documente Academic
Documente Profesional
Documente Cultură
Wu Shin Ting
ting@dca.fee.unicamp.br
FEEC - Unicamp
Clarissa Lin Yasuda
yasuda.clarissa@gmail.com
FCM - Unicamp
Organizao do Minicurso
Imagem Final
Volume adquirido
Espao de textura
Tcnicas de Renderizao: DR
Renderizao Direta
Direct Surface Rendering (DSR)
Direct Volume Rendering (DVR)
Raycasting: DSR
Modelo de iluminao clssica em amostras visveis
Gradientes das intensidades vetor normal
Raycasting: DVR
Composio das intensidades
intensidades cor e opacidade
Organizao do Minicurso
Fonte: http://www.tecmundo.com.br/hardware/1127-o-que-e-gpu-.htm
10
CPU x GPU
CPU: arquitetura MISD ou
MIMD
Paralelismo em tarefas
Prefetch de instrues
Fonte:
http://selkie.macalester.edu/csinparallel/modules/GPUProg
ramming/build/html/Introduction/Introduction.html
11
CPU x GPU
http://www.flixxy.com/gpu-vs-cpu.htm
12
13
GPUs Programveis
Arquitetura GeForce 3
Processadores de
vrtice e de fragmento
dedicados
14
15
16
Fonte: http://www.pgroup.com/lit/articles/insider/v2n1a5.htm
17
Fluxos de Execuo
Streaming Multiprocessor (Grid) SIMT processors
(Warps) Threads
Grid
warp
thread
http://www.cs.cmu.edu/afs/cs/academic/class/15869-f11/www/readings/lindholm08_tesla.pdf
18
Hierarquia de Memria
19
Espaos de Endereamento
DISTINTOS!
20
Fonte: http://ixbtlabs.com/articles2/video/r600-part1.html
21
22
OpenGL API
Abstrao em um fluxo de renderizao
23
Diretrizes
1. Deve-se minimizar e simplificar a sequncia de
instrues em um shader.
2. Deve-se maximizar a localidade espacial dos dados na
memria de textura.
3. Deve-se evitar estruturas de dados complexas.
4. Deve-se instruir apropriadamente as GPUs para
otimizar o balano enre os processamentos e os
acessos s memrias.
24
25
API OpenGL
Uma mquina de estados
Tipos de dados similares a linguagem C
Programabilidade
Vertex shaders: a partir de OpenGL 1.5/2.0, transformaes
geomtricas, iluminao, coordenadas de textura
Fragment shaders: a partir de OpenGL 1.5/2.0, mapeamento
de textura, fog
Geometry shaders: a partir de OpenGL 3.2
Tesselation shaders: a partir de OpenGL 4.
glut
FLTK
wxWidgets
Qt
27
Fluxo de Visualizao
28
29
Requisitos de Aplicativos
Renderizao: Verso de OpenGL >= 2.0
C++
std::cout << "OpenGL version supported by this platform: " <<
glGetString(GL_VERSION) << std::endl;
http://sujatha-techie.blogspot.com.br/2008/10/glsl-with-mingw.html
em Windows
Compilador de C e C++ livre: MinGW
http://www.mingw.org
31
Espao do objeto
(1,1,1)
(0,1,0)
Imagem Final
(0,0,0)
32
Interfaceamento com WM
Funes de glut
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_SINGLE);
win = glutCreateWindow("Volume de Dados");
init();
glutPositionWindow(10, 10);
glutReshapeWindow(VIEWPORT_WIDTH, VIEWPORT_HEIGHT);
glutReshapeFunc(reshape);
glutDisplayFunc(desenheProxyGeometry);
glutKeyboardFunc(keyboard);
glutMainLoop();
34
Estrutura Interna
glTexCoord3f(0.0, 1.0, 0.0);
(0.1.0)
(0.1.0.5)
(0.1.1)
(1.1.0)
(1.1.0.5)
(0.0.1)
(1.1.1)
(1.0.0)
(1.0.0.5)
(1.0.1)
36
37
Demo jai13_basic
38
39
40
Demo jai13_basic_cor
41
Funo de Transferncia 1D
42
Funes de Transferncia
43
44
Demo jai13_basic_ft
45
Problema
Quantidade de instrues a serem transferidas
para a GPU no momento de renderizao cresce
com a quantidade de primitivas grficas.
46
Demo jai13_varray
48
Problema
Quantidade de dados a serem transferidos para a
GPU no momento de renderizao continua
grande.
49
Renderize
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vbo[2]);
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, (const GLvoid *)0);
50
Demo jai13_buffer
51
52
Organizao do Minicurso
53