Top Banner
1 de 40 INTRODUÇÃO AO FAST LIGHT TOOLKIT - FLTK The Fast Light ToolKit Curso de Verão – Instituto de Computação & CA Computação Michel Alves dos Santos - UFAL Bolsista do Centro de Pesquisa em Matemática Computacional 8º Impacto
40

FLTK Summer Course - Part VIII - Eighth Impact

Jul 17, 2015

Download

Education

Michel Alves
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: FLTK Summer Course - Part VIII - Eighth Impact

1 de 40INTRODUÇÃO AO FAST LIGHT TOOLKIT - FLTK

The Fast Light ToolKit

Curso de Verão – Instituto de Computação & CA ComputaçãoMichel Alves dos Santos - UFALBolsista do Centro de Pesquisa em Matemática Computacional

8º Impacto

Page 2: FLTK Summer Course - Part VIII - Eighth Impact

2 de 40O QUE É FLTK ?

The Fast Light ToolKit

O FLTK (sigla de Fast Light ToolKit), pronunciado como "fulltick", é um kit de desenvolvimento de interfaces gráficas para a linguagem C++, disponível para diversos sistemas operacionais (GNU/Linux – através do sistema gráfico X11, M$ Windows®, Mac OS X, OS/2 e Solaris).

Suporta gráficos 3D via OpenGL®, bem como provê emulação à biblioteca GLUT.

Fornece um rico conjunto de componentes gráficos porém, visando se manter sempre enxuto e modular, prezando pela eficiência sem ostentação.

Software Livre distribuído sob a licença LGPL (GNU Library General Public License).

Possui uma ferramenta chamada FLUID, que permite de maneira fácil e visual a construção de todo o esqueleto de uma interface gráfica.

Page 3: FLTK Summer Course - Part VIII - Eighth Impact

3 de 40

Hierarquia de objetos do pacote FLTK

HIERARQUIA DAS CLASSES DO PACOTE FLTK

Page 4: FLTK Summer Course - Part VIII - Eighth Impact

4 de 40FLUID - FLTK USER INTERFACE DESIGNER/FAST LIGHT USER INTERFACE DESIGNER

FLUIDO FLUID (sigla de FLTK User Interface Designer) é um editor visual de interfaces gráficas, uma ferramenta integrante do pacote FLTK, responsável pela geração automática do código fonte (na linguagem C++) da interface gráfica construída.

Page 5: FLTK Summer Course - Part VIII - Eighth Impact

5 de 40SUPORTE A GRÁFICOS 3D VIA OPENGL E A KITS COMO O GLUT

Suporte a OpenGL®

Page 6: FLTK Summer Course - Part VIII - Eighth Impact

6 de 40

Nosso foco hoje é suporte a OpenGL, mas antes vamos

falar um pouco sobre tecnologia ...

VAMOS FALAR UM POUCO SOBRE TECNOLOGIA

Page 7: FLTK Summer Course - Part VIII - Eighth Impact

7 de 40TECNOLOGIAS E PLACAS

Vídeo – Tecnologias e Placas

Visão Geral Unidade de Processamento Software e Programação Fabricantes e Tecnologias Projeções Futuras

Page 8: FLTK Summer Course - Part VIII - Eighth Impact

8 de 40VISÃO GERAL

Visão Geral

Definição e Funções Memória Barramento

Page 9: FLTK Summer Course - Part VIII - Eighth Impact

9 de 40DEFINIÇÃO E FUNÇÕES

Definição e Funções

Placa de Vídeo – Dispositivo responsável pelo processamento de dados vindos da memória principal. Os resultados do processamento são enviados ao monitor, que irá formar a imagem.

NVIDIA Quadro FX 5800 – 4GB de memória e 240 processadores paralelos e programáveis CUDA. Preço aproximado U$ 3499,00.

GeForce GTX 280

Radeon HD 4870 X2

Page 10: FLTK Summer Course - Part VIII - Eighth Impact

10 de 40TABELA COMPARATIVA – PLACAS DE VíDEO

Page 11: FLTK Summer Course - Part VIII - Eighth Impact

11 de 40MEMÓRIAS

Memórias

GDDR1 GDDR2 GDDR3 GDDR4 GDDR5

GD

DR

2G

DD

R3

Page 12: FLTK Summer Course - Part VIII - Eighth Impact

12 de 40BARRAMENTOS

Barramentos

AGP(Accelerated Graphics Port) – Conexão dedicado para dispositivos de vídeo com a memória principal;AGP 1x;AGP 2x;AGP 4x;AGP 8x;

PCI Express – Barramento voltado a vários tipos de dispositivos.1x;4x;8x;16x;32x;

Page 13: FLTK Summer Course - Part VIII - Eighth Impact

13 de 40AGP - Accelerated Graphics Port

AGP

Esquema de controle e comunicação do barramento AGP

Page 14: FLTK Summer Course - Part VIII - Eighth Impact

14 de 40MICROSOFT VISUAL C++

PCI - Express

Esquema de controle e comunicação do barramento PCI-Express

Page 15: FLTK Summer Course - Part VIII - Eighth Impact

15 de 40

Unidade de Processamento

CONCEITOS SOBRE GPU

GPU PhysX

Page 16: FLTK Summer Course - Part VIII - Eighth Impact

16 de 40O QUE É GPU ?

GPU – Graphics Processing UnitGPU (Graphics Processing Unit), conhecido também como VPU, é um tipo de microprocessador especializado em processar gráficos em computadores pessoais, estações de trabalho ou videogames.

GPUs modernas têm estrutura de processamento paralelo que as tornam mais capazes neste tipo de trabalho que CPUS normais.

Exemplo de algumas “pastilhas” de GPU´s da NVIDIA

Page 17: FLTK Summer Course - Part VIII - Eighth Impact

17 de 40EVOLUÇÃO DAS GPU´s

GPU – EvoluçãoO que aconteceu com as GPU´s nos últimos anos?

Número de operações de ponto flutuante por segundo para a CPU e GPU.

Page 18: FLTK Summer Course - Part VIII - Eighth Impact

18 de 40CPU VERSUS GPU

CPU X GPU

A GPU dedica mais transistores ao processamento de dados; Maior número de processadores paralelos.

Page 19: FLTK Summer Course - Part VIII - Eighth Impact

19 de 40

Pipeline de uma GPU

PIPELINE DE UMA GPU

Estrutura/Esquematização do pipeline de uma GPU

Page 20: FLTK Summer Course - Part VIII - Eighth Impact

20 de 40API´S PARA GPU´S

API´s para programar a GPU

Alto nível:– Brook, Sh, RapidMind– Microsoft Accelerator

• Baixo nível:– DirectX, OpenGL– CUDA (Compute Unified Device Architecture) - NVidia– CTM (Closer to Metal) - ATI/AMD

Page 21: FLTK Summer Course - Part VIII - Eighth Impact

21 de 40

Shaders :– ARB (GPU Assembly Language)– GLSL (OpenGL Shading Language)– Cg (C for Graphics – Nvidia)– HLSL (DirectX High-Level Shader Language)

Exemplo de um vertex shader :void main (void){ vec4 v = vec4(gl_Vertex); v.z = 0.0; gl_Position = gl_ModelViewProjectionMatrix * v;}

Programando a GPU

PROGRAMANDO A GPU

Page 22: FLTK Summer Course - Part VIII - Eighth Impact

22 de 40PHYSX

PhysXO NVIDIA PhysX é um poderoso mecanismo de física, que permite o uso de elementos físicos em tempo real nos mais modernos jogos para PC e para console.O software PhysX é compatível com Sony Playstation 3, Microsoft Xbox 360, Nintendo Wii e PC.Criado especificamente para aceleração de hardware através de poderosos processadores com centenas de núcleos. Em conjunto com a excepcional capacidade de processamento paralelo da GPU, o PhysX produz um crescimento exponencial na potência de processamento da física, com recursos tais como: Explosões com efeitos de poeira e destroços; Personagens com geometrias complexas e articuladas para permitir movimentação e interação mais realistas; Espetaculares armas novas, com efeitos incríveis; Tecidos que se enrugam e rasgam naturalmente; Fumaça e névoa formadas em torno de objetos em movimento.

Page 23: FLTK Summer Course - Part VIII - Eighth Impact

23 de 40SOFTWARE E PROGRAMAÇÃO

Software e Programação

Vertex Shader Pixel Shader Geometry Shader DirectX OpenGL

Page 24: FLTK Summer Course - Part VIII - Eighth Impact

24 de 40SHADERS

Shaders

O Shader nada mais é que um campo na computação gráfica que pode ser usado por um hardware específico (placa de vídeo) para renderizar efeitos.

O Shader é responsável por calcular efeitos(cores) e também por calcular a visibilidade de um objeto.

Exemplo de shader usando o famoso e adorado TeaPot.

Page 25: FLTK Summer Course - Part VIII - Eighth Impact

25 de 40VERTEX, PIXEL E GEOMETRY

Vertex, Pixel e Geometry Shader

• Vertex shader - Manipula vértices. Esses são então enviados para os geometry shaders.

• Geometry shader - Combina uma série de vértices em objetos que serão processados pelos pixel shaders.

• Pixel shader - Um pixel shader serve para manipular um pixel, geralmente para aplicar um efeito em uma imagem, exemplos: realismo, sombras e efeitos de explosões.

Page 26: FLTK Summer Course - Part VIII - Eighth Impact

26 de 40EXEMPLO DE APLICAÇÃO DOS SHADERS

Aplicação dos Shaders

Exemplo de aplicação dos shaders em uma “cena”.

Page 27: FLTK Summer Course - Part VIII - Eighth Impact

27 de 40DIRECTX

DirectX

Microsoft Directx é uma grande biblioteca de APIs - Application Programming Interface (ou Interface de Programação de Aplicativos) para aplicações relacionadas a multimídia e programação de jogos, usando as plataformas da Microsoft.

Page 28: FLTK Summer Course - Part VIII - Eighth Impact

28 de 40OPENGL

OpenGL

O OpenGL é um conjunto de algumas centenas de funções, que fornecem acesso a praticamente todos os recursos do hardware de vídeo.

Page 29: FLTK Summer Course - Part VIII - Eighth Impact

29 de 40FABRICANTES E TECNOLOGIAS

Fabricantes e Tenologias

nVidia ATI SLI CrossFire

Page 30: FLTK Summer Course - Part VIII - Eighth Impact

30 de 40

GeForce GTX 280

FABRICANTE : nVIDIA

Page 31: FLTK Summer Course - Part VIII - Eighth Impact

31 de 40

Radeon HD 4870 X2

FABRICANTE : ATI

Page 32: FLTK Summer Course - Part VIII - Eighth Impact

32 de 40

SLI

SLI

Placas de vídeo conectadas em paralelo para aumentar desempenho em jogos.

PCI-Express 16x Placa-mãe baseada no chipset nVIDIA. Mesmo chip Gráfico SLI, SLI-Quad , SLI de três vias.

.

Modos: SFR (Split Frame Rendering) AFR (Alternate Frame Rendering) AFR de SFR SLI AA (Anti-Alising)

Apenas uma saída de vídeo e aumento menor que 100%.

Page 33: FLTK Summer Course - Part VIII - Eighth Impact

33 de 40

CrossFire

CROSSFIRE

Placas de vídeo conectadas em paralelo para aumentar desempenho em jogos.

PCI-Express 16x Placa-mãe baseada chipset AMD / ATI ou Intel. Pode usar chip Gráfico diferente. (Mesma Família). CrossFire, CrossFire Nativo, CrossFireX.

.

Modos: Scissors SuperTiling AFR (Alternate Frame Rendering) Super AA (Anti-Alising)

Apenas uma saída de vídeo e aumento menor que 100%.

Page 34: FLTK Summer Course - Part VIII - Eighth Impact

34 de 40

Projeções Futuras

PROJEÇÕES FUTURAS

CUDA APU

Page 35: FLTK Summer Course - Part VIII - Eighth Impact

35 de 40

CUDA

CUDA

Nvidia : Beneficiar-se do alto desempenho da GPU. Nvidia x Intel Processamento Independente e de propósito geral em

cada Stream/thread processor Base para a criação do PhysX

Page 36: FLTK Summer Course - Part VIII - Eighth Impact

36 de 40

AMD [ APU ]

APU

União GPU e CPU em uma única peça de silício; CPGPU/APU; GPU: Alto processamento CPU: Alta programabilidade Núcleos Heterogêneos DirectX 10.1 Possivelmente utilizará a Arquitetura da GPU RV 800

Page 37: FLTK Summer Course - Part VIII - Eighth Impact

37 de 40

INTEL

INTEL

1ª Geração: Larrabee; Processamento Independente; Chips x86 interconectados; 16/48 núcleos; Suporte tanto a OpenGL como Directx.

Page 38: FLTK Summer Course - Part VIII - Eighth Impact

38 de 40DÚVIDAS ?

Dúvidas ?

Page 39: FLTK Summer Course - Part VIII - Eighth Impact

39 de 40PENSAMENTO DO DIA !

Siddhartha Gautama – Mais conhecido como “Buddha”

“Três classes de pessoas são infelizes: a que não sabe e não pergunta, a que sabe e não ensina, a que ensina e não

faz”

Page 40: FLTK Summer Course - Part VIII - Eighth Impact

40 de 40FIM !!!