Buscar

Aula Computação Grafica

Prévia do material em texto

Computação Gráfica para 
Jogos Eletrônicos
Visão geral sobre o processo de renderização de 
jogos digitais
Slides por: Leonardo Tórtoro Pereira (leonardop@usp.br)
Assistentes: Gustavo Ferreira Ceccon (gustavo.ceccon@usp.br), 
Gabriel Simmel (gabriel.simmel.nascimento@usp.br) e Ítalo Tobler (italo.tobler.silva@usp.br)
1
Este material é uma criação do 
Time de Ensino de Desenvolvimento de Jogos 
Eletrônicos (TEDJE)
Filiado ao grupo de cultura e extensão 
Fellowship of the Game (FoG), vinculado ao 
ICMC - USP
Este material possui licença CC By-SA. Mais informações em: 
https://creativecommons.org/licenses/by-sa/4.0/legalcode 2
https://creativecommons.org/licenses/by-sa/4.0/legalcode
Objetivos
➔ Introduzir a área de Computação Gráfica (CG)
➔ Mostrar contribuições dos jogos eletrônicos para a área
➔ Mostrar a evolução dos hardwares da área
◆ De CPU a GPU
➔ Introduzir o conceito de pipeline e mostrar o pipeline da 
GPU e OpenGL
3
Objetivos
4
➔ Como modelos são estruturados, representados e 
apresentados para os usuários
➔ Como transformações são feitas em 3D e como isso é 
representado na câmera
➔ Mostrar os conceitos e algoritmos básicos por trás das 
principais técnicas utilizadas na área, além de exemplos 
de utilização
Índice
1. Introdução
2. CPU vs GPU
3. Tipos de imagens
4. Modelos 3D
5. Pipeline & Hardware
6. Renderização
5
1. Introdução
6
1. Introdução
➔ O que é Computação Gráfica (CG)?
◆ Imagens e filmes criados usando computadores
◆ Dados de imagem criados por computador
● Principalmente com ajuda de softwares e 
hardwares gráficos especializados
7
1. Introdução
➔ Quais são os tópicos mais importantes da área?
◆ Design de interface de usuário
◆ Gráficos de sprites e de vetor
◆ Modelagem 3D
◆ Shaders
◆ Design de GPU
◆ Visão computacional
◆ Entre outros!
8
1. Introdução
➔ A CG baseia-se fortemente em 3 ramos da ciência
◆ Geometria
◆ Óptica
◆ Física
9
1. Introdução
➔ É responsável por
◆ Exibir dados de imagem e arte efetivamente e de 
maneira agradável ao usuário.
◆ Processar dados de imagem recebidos do mundo 
físico
10
1. Introdução
➔ Revolucionou
◆ Animação
◆ Filmes
◆ Publicidade
◆ Design gráfico
◆ Jogos Eletrônicos
11
1. Introdução
➔ Bibliotecas gráficas mais usadas:
◆ OpenGL
◆ DirectX
◆ Vulkan
12
2. CPU vs GPU
13
2. CPU vs GPU
➔ No início da CG
◆ Seu processamento era feito em CPU
● Todo computador tem uma! :)
● Poucos núcleos (antigamente só 1!) :(
● Não é usada apenas para gráficos :(
● Alto custo por núcleo :(
14
2. CPU vs GPU
➔ Atualmente
◆ Seu processamento é feito (principalmente) em GPU
● Deve ser comprada à parte :(
● Muitos núcleos :)
○ 1152 - GTX 760
○ 2560 - GTX 1080
○ 5760 - Titan Z
15
https://www.karlrupp.net/2013/06/cpu-gpu-and-mic-hardware-characteristics-over-time/
16
https://www.karlrupp.net/2013/06/cpu-gpu-and-mic-hardware-characteristics-over-time/
https://blogs.mathworks.com/deep-learning/2017/10/20/deep-learning-with-gpus-and-matlab/
17
https://blogs.mathworks.com/deep-learning/2017/10/20/deep-learning-with-gpus-and-matlab/
2. CPU vs GPU
➔ Por que GPUs ficaram tão rápidas?
◆ Intensidade aritmética
● Mais transistores para computações
● Menos para lógica de decisão
◆ Economia
● Demanda é alta devido à 
○ Indústria multibilionária dos jogos eletrônicos
18
3. Tipos de Imagens
19
➔ Tipos de imagem 2D
◆ Raster
◆ Imagem vetorizada
◆ Sprites
3. Tipos de Imagens
20
Imagens Rasterizadas
21
Raster
● Modo de representação de imagem
● Matriz de pixels
● Características do raster:
○ Altura
○ Largura
○ bits/pixel (define o alcance dos 
valores da matriz)
22
Raster
● Pixel Art
○ Arte a nível de pixel
○ Necessita baixa utilização de 
memória
■ Os primeiros consoles 
possuíam memória muito 
pequena
○ Ainda hoje utilizada em jogos
○ Baixo custo para exibição 23
Exemplos Pixel Art
24
*Shameless self 
promotion*
Hyper Light 
Drifter
Blasphemous
Chrono 
Trigger
https://store.steampowered.com/app/257850/Hyper_Light_Drifter/
https://store.steampowered.com/app/257850/Hyper_Light_Drifter/
https://store.steampowered.com/app/774361/Blasphemo
https://store.steampowered.com/app/613830/CHRONO_TRIGGER/
https://store.steampowered.com/app/613830/CHRONO_TRIGGER/
Raster
● Problema: reescalar imagens
○ Algoritmos de interpolação
● Aliasing
○ Solução: Anti-aliasing
25
Raster
26
Raster
27
Raster
● Cuidado com anti-aliasing em pixel art!
● Antes de re-escalar use o método certo (Caixa)
28
128x128 
Filtro Bicúbico
128x128 
Filtro Caixa
64x64
Original
Sprite feito por Leonardo Tórtoro Pereira. Não usar sem permissão :)
Raster
29
320x320 Bicúbica 320x320 Caixa
Sprite feito por Leonardo Tórtoro Pereira. Não usar sem permissão :)
Imagem Vetorizada
30
Imagem Vetorizada
● Representar Imagens por contornos e 
preenchimentos
○ Imagens compostas por “caminhos” e polígonos 
primitivos
● Softwares capazes de transformar imagens 
rasterizadas em vetorizadas
○ Grande perda de informação com imagens de 
tons contínuos
○ Processo inverso relativamente fácil 31
Exemplos Imagens Vetorizadas
32
https://opengameart.org/forumtopic/2d-vector-arti
st-at-your-service
https://www.gamedevmarket.net/asset/desert-2d-
game-vector-background/
https://opengameart.org/forumtopic/2d-vector-artist-at-your-service
https://opengameart.org/forumtopic/2d-vector-artist-at-your-service
https://www.gamedevmarket.net/asset/desert-2d-game-vector-background/
https://www.gamedevmarket.net/asset/desert-2d-game-vector-background/
Imagem Vetorizada
● Imagens vetorizadas não 
possuem problemas para 
re-escalar
○ Pode ser rasterizada em 
diferentes dimensões
● Em contrapartida, a imagem 
precisa ser rasterizada para 
ser exibida e a cada vez que 
for reescalada 33
https://en.wikipedia.org/wiki/Vector_graphics
https://en.wikipedia.org/wiki/Vector_graphics
Sprites
34
Sprites
● Bitmaps integrados a uma cena maior
○ Originalmente se referia a objetos 
independentes, processados 
separadamente e depois integrados a 
outros elementos
○ Esse método de organização facilitava 
detecção de colisões entre diferentes 
sprites
35
Quick Tips!
36
Ferramentas Interessantes para arte 2D
➔ Desenhos em geral:
◆ Krita (Open Source)
◆ Gimp (Open Source)
◆ Photoshop
➔ Pixel art:
◆ Aseprite (Tem na Steam)
◆ Pyxel Edit
➔ Geração de níveis por tileset
◆ Tiled (Com integração para Unity) 37
https://krita.org/en/
https://www.gimp.org/
http://www.adobe.com/products/photoshop.html
https://www.aseprite.org/
http://pyxeledit.com/
http://www.mapeditor.org/
http://www.seanba.com/tiled2unity
Ferramentas Interessantes para arte 2D
➔ Animação com Bones
◆ DragonBones (Open Source)
◆ Spine
◆ Spriter
➔ Evite usar animação com Bones em pixel art!
◆ É recomendado animar frame a frame :)
38
http://dragonbones.com/en/index.html
http://pt.esotericsoftware.com/
https://brashmonkey.com/
4. Modelos 3D
39
➔ Representados através de malhas
◆ Superfícies representadas através de um conjunto de 
triângulos
➔ Por que usar triângulos? Por que não usar quadrados?
◆ Simples, planares e geralmente não quebram em 
transformações
40
4. Modelos 3D
41
4. Modelos 3D
https://www.gfxtotal.com.br/tutoriais/modelar-abridor-de-latas-high-poly-3ds-max/
https://www.gfxtotal.com.br/tutoriais/modelar-abridor-de-latas-high-poly-3ds-max/
MVP
42https://learnopengl.com/Getting-started/Coordinate-Systems 
https://learnopengl.com/Getting-started/Coordinate-Systems
➔ Texturas
◆ São imagens que vão para a memória da placa de 
vídeo
● Toda imagem vira uma textura, até sprites
◆ Mapeamento UV (S,T,U,V,W,X,Y,Z) é necessário para 
representar a superfície 3D numa imagem 2D
◆ Filtro é uma interpolação para suavizar os pixels entre 
os vértices
43
4. Modelos 3D
Imagem (Textura)
44
https://www.pinterest.com/pin/429953095648140137/?from_navigate=true 
https://www.pinterest.com/pin/429953095648140137/?from_navigate=true
Mapa UV
45
http://cgi.tutsplus.com/articles/game-character-creation-series-kila-chapter-3-uv-mapping--cg-26754http://cgi.tutsplus.com/articles/game-character-creation-series-kila-chapter-3-uv-mapping--cg-26754
46
http://learnopengl.com/#!Getting-started/Textures 
➔ Filtros para escolher a melhor textura para dado pixel
➔ Dois modos comuns
◆ Nearest (esquerda) seleciona o pixel que possui centro 
mais próximo da coordenada da textura
◆ Filtro bilinear (direita) valor interpolado dos texels vizinhos 
da textura
6. Renderização
http://learnopengl.com/#!Getting-started/Textures
Quick Tips!
47
Ferramentas interessantes para arte 3D
➔ Blender (Open Source)
◆ Propósitos gerais (Até edição de vídeo)
➔ Autodesk Maya
◆ Propósitos gerais
➔ Houdini 
◆ Animação, focada em geração procedural
➔ ZBrush 
◆ Foco em escultura, integração com várias ferramentas
48
https://www.blender.org/
https://www.autodesk.eu/products/maya/overview
https://www.sidefx.com/
http://pixologic.com/
5. Pipeline & Hardware
49
5. Pipeline & Hardware
➔ Pipeline:
◆ Encadeamento de comandos
◆ Ordem na qual os comandos são executados
➔ Antigamente:
◆ Chips, placas e/ou unidades distintas por estágio
◆ Fluxo de dados fixo pelo pipeline
◆ Hardware costumava seguir isso:
50
Transformada de vértices e iluminação
Construção de triângulos e rasterização
Texturização e sombreamento de pixel
Teste de profundidade e blending (composição)
Transformada de vértices e iluminação 51
5. Pipeline & Hardware
52
Sombream
ento de 
Vértice
Sombream
ento de 
Vértice
Sombream
ento de 
Vértice
Sombream
ento de 
Vértice
Sombream
ento de 
Vértice
Sombream
ento de 
Vértice
Sombream
ento de 
Vértice
Construção 
de triângulo
Seleção de 
profundidad
e
Sombream
ento de 
pixel
Textura
Blend / 
Profundid
ade
Memória
Sombream
ento de 
pixel
Textura
Blend / 
Profundid
ade
Memória
Sombream
ento de 
pixel
Textura
Blend / 
Profundid
ade
Memória
Sombream
ento de 
pixel
Textura
Blend / 
Profundid
ade
Memória
Sombream
ento de 
pixel
Textura
Blend / 
Profundid
ade
Memória
Sombream
ento de 
pixel
Textura
Blend / 
Profundid
ade
Memória
Sombream
ento de 
pixel
Textura
Blend / 
Profundid
ade
Memória
Arquitetura de GPU 
em 2003
➔ Atualmente
◆ GPUs totalmente programáveis
◆ Arquitetura unificada
◆ Programável em C
◆ Fluxo de dados arbitrário
◆ Modelo de programação de múltiplos propósitos
53
5. Pipeline & Hardware
➔ Atualmente
◆ Hardware de propósito específico
◆ Threading e pipelining gerenciados por hardware
◆ “Gráficos” e computação livremente misturados
54
5. Pipeline & Hardware
➔ Clipping (recorte) 
◆ Recorta polígonos ou pedaços fora da visão da tela
55http://n63.icequake.net/doc/n64intro/kantan/images/1-2-3-5.gif
5. Pipeline & Hardware
➔ Culling (Seleção)
◆ Seleciona dados desnecessários para o pipeline 
gráficos
◆ Exemplo: dados para desenhar a parte “de trás” de um 
objeto
◆ N64 suporta dois tipos de culling:
● Back-face e de volume
56
5. Pipeline & Hardware
➔ Back-face culling
◆ Retira a parte de trás de objetos
57http://n63.icequake.net/doc/n64intro/kantan/images/1-2-3-6.gif
5. Pipeline & Hardware
➔ Volume culling
◆ Retira itens que estão completamente fora do campo 
visual da lista de exibição (display list) que desenha 
objetos
58http://n63.icequake.net/doc/n64intro/kantan/images/1-2-3-7.gif
5. Pipeline & Hardware
➔ Z-buffer e z-test
◆ Literalmente a componente Z dos fragmentos
◆ São úteis e configuráveis, importantes para interação entre 
fragmentos, principalmente alpha blending
59
5. Pipeline & Hardware
Design discreto X unificado
60
Arquitetura unificada: Sombreamentos de vértices, pixels, etc. tornam-se 
threads rodando em diferentes programas em núcleos flexíveis
Design discreto
Shader A
Shader B
Shader C
Shader D
Design unificado
 Núcleo de Shader
ibuffer ibuffer ibuffer ibuffer
obuffer obuffer obuffer obuffer
Por que unificar?
61
http://www.nvidia.com/content/nvision2008/tech_presentations/Technology_Keynotes/NVISION08-Tech_Keynote-GPU.pdf
Por que unificar?
62
http://www.nvidia.com/content/nvision2008/tech_presentations/Technology_Keynotes/NVISION08-Tech_Keynote-GPU.pdf
Bonus Stage: 
Arquitetura do N64
63
64
https://media0dk-a.akamaihd.net/24/12/e7f4ff8d93dd9182292772a7815e8305.jpg http://vignette1.wikia.nocookie.net/banjokazooie/images/a/ab/Ss-banjo-kazooie-xb
la-007.jpg/revision/latest?cb=20100413020934
https://www.serebii.net/stadium/mewtwo.jpg
http://n63.icequake.net/doc/n64intro/kantan/images/1-2-3-1.gif 65
Blocos de processos do RCP
66http://n63.icequake.net/doc/n64intro/kantan/images/1-2-3-2.gif
Blocos de processos do RSP
67http://n63.icequake.net/doc/n64intro/kantan/images/1-2-3-2.gif
Arquitetura do N64
➔ Processos gráficos executados no RSP
◆ A maioria dos processos do RSP são executados 
quando os dados de vértices são carregados no cache 
de vértices
◆ Os processos principais são:
● Transformadas geométricas
○ Necessárias para mover ou escalar objetos 3D
68
Exemplo de Volume Culling do N64
69
https://www.youtube.com/watch?v=dKpmnUez2Xc
Unidades do RDP
70
http://n63.icequake.net/doc/n64intro/kantan/images/1-2-3-2.gif
● Rasterizador (RS) transforma triângulos 
e retângulos em pixels
● Motor de Textura (TX) provê 
amostragem para texels (elementos de 
imagem) através do uso de TMEM 
(Memória de Textura)
● Filtro de Textura (TF) provê filtragem 
para texels criados pelo TX
● Combinador de Cor/Combinador Alpha 
(CC/AC) combina duas cores de pixels 
criadas pelo RS e texels criados pelo TF e 
interpola entre essas duas cores.
Unidades do RDP
71http://n63.icequake.net/doc/n64intro/kantan/images/1-2-3-2.gif
● O Misturador (Blender) (BL) mistura a cor 
do pixel determinada em CC, a cor no 
frame buffer, a cor de fog, e assim em 
diante. Desenha a cor resultante no 
frame buffer. Nestemomento, também 
provê o Z-buffering para a primeira parte 
do processo de anti-aliasing.
● Interface de Memória (MI) processa 
informação de pixel no frame buffer 
incluindo operações de ler, modificar e 
escrever
Bonus Stage: 
Arquitetura do SNES
72
https://upload.wikimedia.o
rg/wikipedia/en/thumb/f/f
4/Supermarioworld.jpg/25
0px-Supermarioworld.jpg
73
http://cdn.gamer-net
work.net/2017/usgam
er/street_fighter_II_t
urbo_snes_classic_02.
png
https://tctechcrunch201
1.files.wordpress.com/2
017/09/ffvi.jpg
http://4.bp.blogspot.co
m/_9MOywHCf_4Y/S_b
Aab1OJEI/AAAAAAAAFB
4/amu6EOdDsd4/s400/
gfs_4582_2_2.jpg
Arquitetura do SNES
➔ SNES
◆ Velocidade da CPU 2.86MHz (até 10.74 MHz)
◆ 16bits
◆ 24 bit bus - usado para acessos gerais
◆ 8 bit bus - usado para acesos de registro APU e PPU
◆ Instruções por segundo: 1.79 MIPS
74
75http://meseec.ce.rit.edu/551-projects/fall2014/3-1.pdf
Arquitetura do SNES
➔ SNES
◆ Velocidade da CPU 2.86MHz (até 10.74 MHz)
◆ 16bits
◆ 24 bit bus - usado para acessos gerais
◆ 8 bit bus - usado para acessos de registro APU e PPU
◆ Instruções por segundo: 1.79 MIPS
76
77http://meseec.ce.rit.edu/551-projects/fall2014/3-1.pdf
Arquitetura do SNES
➔ Picture Processing Unit (PPU)
◆ 2 unidades: PPU1 e PPU2
◆ PPU1 gera dados, rotação e escala de caracteres de 
background
◆ PPU2 realiza efeitos especiais
◆ 32.768 cores
◆ Mesmo sinal de clock da CPU
◆ 7 modos de vídeo diferente 78
Arquitetura do SNES
➔ Picture Processing Unit (PPU): 64kB de RAM
◆ 256x224
◆ 512x224
◆ 256x239
79
◆ 512x239
◆ 512x448
◆ 512x478
Arquitetura do SNES
➔ SNES pode mostrar 256 cores de uma vez
◆ Divididas em 16 sub-paletas, com 16 cores (1 sempre 
transparente)
◆ Tiles de BG usam qualquer uma das 8 primeiras 
sub-paletas, enquanto os sprites usam as outras 8
80
Arquitetura do SNES
➔ Modos de vídeo
◆ Alteram entre si quantidade de camadas e cores nas 
paletas
◆ Especificação e decodificação de elementos varia
81
Arquitetura do SNES
➔ Mode 7
◆ Camada única que pode ser rotacionada e escalada 
usando transformações de matrizes
◆ HDMA (Horizontal Direct Memory Access) é 
normalmente usadopara mudar os parâmetros da 
matriz para cada scanline para gerar efeitos de 
perspectiva
82
83
https://www.coranac.com/tonc/img/mode7/m7_ex_00.png https://www.heyuguys.com/images/2012/05/mode7_example
.jpeghttp://www.nintendoblast.com.br/2014/01/revisit
ando-os-tempos-aureos-do-mode-7.html
http://www.nintendoblast.com.br/2014/01/revisit
ando-os-tempos-aureos-do-mode-7.html
Arquitetura do SNES
➔ Cartuchos
◆ Super FX chip
● CPU RISC
● Renderiza gráficos que a CPU normal não consegue
● Processa principalmente polígonos 3D
● 10.5 MHz de clock
◆ Super Accelerator System
84
https://en.wikipedia.org/wiki/File:SNES_Star_Fox.png
85
86http://meseec.ce.rit.edu/551-projects/fall2014/3-1.pdf
http://meseec.ce.rit.edu/551-projects/fall2014/3-1.pdf
Cx4 - Co-processador matemático
87
http://www.vgmuseum.com/end/snes/a/mmx2-3.gif
Engine do DKC 2 (feita em Assembly)
88
Bonus Stage: Uncanny 
Valley
89
Uncanny Valley
Mass Effect: Andromeda
90
https://www.youtube.com/watch?v=tO_-ezQBaZ8
Bonus Stage: Uncanny Valley
➔ Gráficos atuais ultra realistas
◆ Uncanny Valley
● Parece e move-se quase igual um ser real
○ Mas não totalmente
● Causa asco em algumas pessoas
91
Uncanny Valley
92https://upload.wikimedia.org/wikipedia/commons/f/f0/Mori_Uncanny_Valley.svg
Uncanny Valley
93https://www.japan-zone.com/culture/bunraku.shtml
6. Renderização
94
6. Renderização
➔ Requer
◆ Geometria (modelo)
◆ Instruções de como desenhar (shader)
➔ Shader
◆ Vertex Shader
◆ Geometry Shader
◆ Fragment (Pixel) Shader
95
6. Renderização
➔ Shaders
◆ São literalmente programas (instruções) que passamos 
para a placa de vídeo
◆ GPU compila e guarda o programa na memória (limitações)
● Por isso alguns jogos demoram para iniciar
◆ Especificações DirectX e OpenGL tentam padronizar
96
Pipeline da renderização
97
http://learnopengl.com/#!Getting-started/Hello-Triangle 
http://learnopengl.com/#!Getting-started/Hello-Triangle
➔ Materiais
◆ Descrevem como o objeto deve se comportar visualmente
◆ Pode conter informações como reflexão, transparência, 
quão metálico, quão liso etc.
◆ Depende diretamente dos shaders
6. Renderização
98
Fragment (Pixel) Shader
99
http://polycount.com/discussion/70739/lcubershader-cgfx-a-maya-viewport-shader-for-fun-and-learning 
http://polycount.com/discussion/70739/lcubershader-cgfx-a-maya-viewport-shader-for-fun-and-learning
Iluminação Especular e Difusa
➔ Difusa
◆ Cor que objeto recebe sob luz direta
◆ Mais forte na direção da luz e esmaece conforme o 
ângulo da superfície aumenta
➔ Especular
◆ Cor de destaque de um objeto.
◆ Aparece como reflexão da luz na superfície
➔ https://clara.io/learn/user-guide/lighting_shading/materials/material_types/webgl_materials
100
https://clara.io/learn/user-guide/lighting_shading/materials/material_types/webgl_materials
➔ Vertex Shader
◆ Transformações de mundo
◆ Matriz MVP (Model View Projection)
◆ Mapeamento de coordenadas
➔ Geometry Shader
◆ Altera os vértices
◆ Cria novos vértices
101
6. Renderização
➔ Tesselation Shader
◆ Quebra a geometria
◆ Adiciona detalhes
➔ Fragment Shader
◆ Processamento paralelo
◆ Interpolação dos vértices
102
6. Renderização
Geometry Shader
103
http://irrlicht.sourceforge.net/forum/viewtopic.php?t=35500&start=15 
http://irrlicht.sourceforge.net/forum/viewtopic.php?t=35500&start=15
➔ Mapeamentos (Mapping)
◆ Texturas
◆ Bump
● Displacement
● Normal
● Parallax
● Height
◆ Cube
◆ Shadow 104
6. Renderização
➔ Normal Map
◆ Modifica a luz através da superfície da textura
◆ Baseia-se no vetor normal à superfície
105
6. Renderização
Normal Map
106
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
➔ Heigth ou Parallax map
◆ Similar ao normal, mas mais complexo (e mais 
pesado)
◆ Normalmente usado em conjunto com mapas normais
◆ Move áreas da textura da superfície visível
● Alcança um efeito a nível de superfície de oclusão
◆ Protuberâncias terão suas partes próximas (frente à 
camera) exagerados. E a outra parte reduzida
107
6. Renderização
Heightmap ou Parallax Map
108
http://docs.unity3d.com/Manual/StandardShaderMaterialParameterHeightMap.html 
http://docs.unity3d.com/Manual/StandardShaderMaterialParameterHeightMap.html
Normal e Parallax Map
109
http://learnopengl.com/#!Advanced-Lighting/Parallax-Mapping 
http://learnopengl.com/#!Advanced-Lighting/Parallax-Mapping
Displacement Map
110
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
Bump Map
111
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
Bump e Displacement Maps
112
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
Cube Map
113
http://learnopengl.com/#!Advanced-OpenGL/Cubemaps 
http://learnopengl.com/#!Advanced-OpenGL/Cubemaps
Skybox
114
http://learnopengl.com/#!Advanced-OpenGL/Cubemaps 
http://learnopengl.com/#!Advanced-OpenGL/Cubemaps
Reflexão
115
http://learnopengl.com/#!Advanced-OpenGL/Cubemaps 
http://learnopengl.com/#!Advanced-OpenGL/Cubemaps
Refração
116
http://learnopengl.com/#!Advanced-OpenGL/Cubemaps 
http://learnopengl.com/#!Advanced-OpenGL/Cubemaps
➔ Blending
◆ Aritmética entre Alpha
◆ Transparência
◆ Translucência
117
6. Renderização
Blending
118
http://learnopengl.com/#!Advanced-OpenGL/Blending 
http://learnopengl.com/#!Advanced-OpenGL/Blending
Blending
119
http://andersriggelsen.dk/glblendfunc.php 
http://andersriggelsen.dk/glblendfunc.php
➔ Post Processing
◆ Fotografia
◆ Aplicar shader no framebuffer
◆ Médio custo
◆ Realismo
120
6. Renderização
Post Processing
121
http://haxepunk.com/documentation/tutorials/post-process/ 
http://haxepunk.com/documentation/tutorials/post-process/
Bloom
122
http://haxepunk.com/documentation/tutorials/post-process/ 
http://haxepunk.com/documentation/tutorials/post-process/
HDR
123
http://gamesetwatch.com/ 
http://gamesetwatch.com/
Depth of Field
124
https://steamcommunity.com/sharedfiles/filedetails/?id=134522361 
https://steamcommunity.com/sharedfiles/filedetails/?id=134522361
➔ Sombra
◆ Alto custo
◆ Mapeamento
◆ Aproximação
◆ Anti-aliasing
125
6. Renderização
Shadow Map
126
https://takinginitiative.wordpress.com/2011/05/25/directx10-tutorial-10-shadow-mapping-part-2/ 
https://takinginitiative.wordpress.com/2011/05/25/directx10-tutorial-10-shadow-mapping-part-2/
Shadow Map
127
https://takinginitiative.wordpress.com/2011/05/25/directx10-tutorial-10-shadow-mapping-part-2/ 
https://takinginitiative.wordpress.com/2011/05/25/directx10-tutorial-10-shadow-mapping-part-2/
Soft Shadow e Penumbra
128
https://en.wikipedia.org/wiki/Umbra,_penumbra_and_antumbra 
https://en.wikipedia.org/wiki/Umbra,_penumbra_and_antumbra
● http://acko.net/files/fullfrontal/fullfrontal/webgl
math/online.html
129
6. Renderização
http://acko.net/files/fullfrontal/fullfrontal/webglmath/online.html
http://acko.net/files/fullfrontal/fullfrontal/webglmath/online.html
Ray tracing
130
https://en.wikipedia.org/wiki/Ray_tracing_(graphics) 
https://en.wikipedia.org/wiki/Ray_tracing_(graphics)
Dúvidas?
131
Referências
132
Referências
[1]http://www.nvidia.com/content/nvision2008/tech_presentations/Technology_Keynotes/NVISION08-Tech_Keynote-G
PU.pdf
[2]http://n64.icequake.net/doc/n64intro/kantan/
[3]https://en.wikipedia.org/wiki/Microcode
[4]https://en.wikipedia.org/wiki/Texel_(graphics)
[5]http://www.nvidia.com/object/cuda_home_new.html
[6]https://llpanorama.wordpress.com/2008/05/21/my-first-cuda-program/
[7]http://www.nvidia.com/content/gtc/documents/1055_gtc09.pdf
[8]https://en.wikipedia.org/wiki/Computer_graphics
[9]http://www.graphics.cornell.edu/online/tutorial/
[10]https://en.wikipedia.org/wiki/2D_computer_graphics
[11]https://en.wikipedia.org/wiki/Pixel_art[12]https://en.wikipedia.org/wiki/Font_rasterization
[13]http://acko.net/files/fullfrontal/fullfrontal/webglmath/online.html
[14]http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
133
http://www.nvidia.com/content/nvision2008/tech_presentations/Technology_Keynotes/NVISION08-Tech_Keynote-GPU.pdf
http://www.nvidia.com/content/nvision2008/tech_presentations/Technology_Keynotes/NVISION08-Tech_Keynote-GPU.pdf
http://n64.icequake.net/doc/n64intro/kantan/
https://en.wikipedia.org/wiki/Microcode
https://en.wikipedia.org/wiki/Texel_(graphics)
http://www.nvidia.com/object/cuda_home_new.html
https://llpanorama.wordpress.com/2008/05/21/my-first-cuda-program/
http://www.nvidia.com/content/gtc/documents/1055_gtc09.pdf
https://en.wikipedia.org/wiki/Computer_graphics
http://www.graphics.cornell.edu/online/tutorial/
https://en.wikipedia.org/wiki/2D_computer_graphics
https://en.wikipedia.org/wiki/Pixel_art
https://en.wikipedia.org/wiki/Font_rasterization
http://acko.net/files/fullfrontal/fullfrontal/webglmath/online.html
http://blog.digitaltutors.com/bump-normal-and-displacement-maps/
Referências
[12]https://en.wikipedia.org/wiki/Sprite_(computer_graphics)
[13]https://en.wikipedia.org/wiki/Vector_graphics
[14]https://en.wikipedia.org/wiki/3D_computer_graphics
[15]https://en.wikipedia.org/wiki/Computer_animation
[16]https://en.wikipedia.org/wiki/Uncanny_valley
[17]https://www.youtube.com/watch?v=eN3PsU_iA80 
[18]https://images.nvidia.com/content/pdf/tesla/whitepaper/pascal-architecture-whitepaper.pdf
[19]http://meseec.ce.rit.edu/551-projects/fall2014/3-1.pdf
[20]https://www.karlrupp.net/2013/06/cpu-gpu-and-mic-hardware-characteristics-over-time/
[21]https://help.poliigon.com/en/articles/1712652-what-are-the-different-texture-maps-for
134
https://en.wikipedia.org/wiki/Sprite_(computer_graphics)
https://en.wikipedia.org/wiki/Vector_graphics
https://en.wikipedia.org/wiki/3D_computer_graphics
https://en.wikipedia.org/wiki/Computer_animation
https://en.wikipedia.org/wiki/Uncanny_valley
https://www.youtube.com/watch?v=eN3PsU_iA80
https://images.nvidia.com/content/pdf/tesla/whitepaper/pascal-architecture-whitepaper.pdf
http://meseec.ce.rit.edu/551-projects/fall2014/3-1.pdf
https://www.karlrupp.net/2013/06/cpu-gpu-and-mic-hardware-characteristics-over-time/
https://help.poliigon.com/en/articles/1712652-what-are-the-different-texture-maps-for
Referências Complementares
[1]http://nesdev.com/NESDoc.pdf
[2]http://www.vasulka.org/archive/Writings/VideogameImpact.pdf#page=24
[3]https://en.wikipedia.org/wiki/Real-time_computer_graphics
[4]http://dkc-forever.blogspot.com.br/2015/11/curiosidades-designer-da-rare-revela.html
[5]http://level42.ca/projects/ultra64/Documentation/man/
[6]http://www.nintendoblast.com.br/2014/01/revisitando-os-tempos-aureos-do-mode-7.html
[7] Asset usado na Unity: https://assetstore.unity.com/packages/3d/vegetation/trees/hd-dry-tree-125878
135
http://nesdev.com/NESDoc.pdf
http://www.vasulka.org/archive/Writings/VideogameImpact.pdf#page=24
https://en.wikipedia.org/wiki/Real-time_computer_graphics
http://dkc-forever.blogspot.com.br/2015/11/curiosidades-designer-da-rare-revela.html
http://level42.ca/projects/ultra64/Documentation/man/
http://www.nintendoblast.com.br/2014/01/revisitando-os-tempos-aureos-do-mode-7.html
https://assetstore.unity.com/packages/3d/vegetation/trees/hd-dry-tree-125878