Desmistificando gráficos da próxima
geração
Manoel Balbino de Lima Neto
Diretor Técnico, Programador Líder
Preloud Electronic Entertainment Brazil
O que muda na próxima geração em termos
gráficos?
• Nova geração de consoles e PCs
• Foco em pipeline programável
• Geometria deixa de ser o maior limitador
Comparações:
Antes:
• Predominância de função
fixa
• Efeitos e materiais
dependem de código
interno da engine
• Dificuldade de variar
efeitos/materiais
• Shaders simples com uso
limitado e específico
Agora
• Shaders como base das
engines gráficas
• Materiais e efeitos
definidos fora da engine
• Facilidade de adicionar
novos efeitos e materiais
• Shaders complexos multipropósito
Comparações:
Antes:
• Geometria processada
pela CPU
• Geometria enviada “ondemand” para GPU por
quadro
Agora
• Geometria processada
pela GPU
• Geometria é mantida
sempre na GPU, em
buffers
Importância da pipeline programável
• GPU mais independente da CPU, aumentando a
paralelização
• Flexibilidade e controle sobre o processo de
rasterização, permitindo o uso de algoritmos e
operações não possíveis com função fixa
Tratamento de imagem
• Pós-processamento de imagem é vital na nova
geração
• O maior suporte a shaders permite que efeitos
mais avançados, como motion blur por pixel,
depth of field, ajuste tonal e outros sejam
utilizados simultaneamente sem necessidade de
comprometimento do visual do jogo
Tratamento de imagem
Tratamento de imagem
Render to texture
• Antes limitado a poucos efeitos, é a base de
muitos efeitos visuals na próxima geração:
• Shadow mapping
• Real-time reflections
• Subsurface scattering
Shadow Mapping
Real time reflections
Subsurface scattering
Subsurface scattering
HDR
• Suporte estendido a formatos de textura
floating-point permite que texturas e buffers
armazenem valores além da faixa de 0 a 1
(inclusive valores negativos)
• Isso permite armazenar valores de intensidade
de luz mais próximos da realidade
• Efeitos como reflexos, refrações, materiais
translúcidos, exposição de câmera mais
realistas sem necessidade de “hacks”
HDR
Alta definição
• Tanto em PCs quanto em consoles, houve
aumento nas resoluções mínimas, e uma
migração para formatos 16:9.
• Defeitos gráficos são mais visíveis, e
demandam maior atenção à qualidade da
imagem final
• Com mais pixels para serem preenchidos,
otimizações de rasterização são cruciais.
Alta definição
• Utilizar o mínimo de operações para atingir o
resultado desejado em um shader
• Shader 3 oferece recurso de controle de fluxo
reais (for loops e blocos if else) que podem
aumentar a performance quando bem utilizados
• Todas as texturas devem usar compressão a
menos que seja absolutamente necessário:
taxas de compressão podem ser de 75% ou
87% por pixel, dependendo do formato
Desafios
• Maior demanda sobre conhecimento de
computação gráfica:
– Iluminação, blending de camadas de texturas e
transformação de vértices não são mais feitos
automaticamente pela GPU: o desenvolvedor precisa
“pôr a mão na massa”
– Entender os diversos algoritmos de iluminação e a
lógica por trás deles permite maior liberdade para
criar, otimizar e atingir resultados interessantes
(mesmo que “fisicamente incorretos”)
Desafios
• Gerenciar shaders é vital para um resultado
variado e otimizado:
– A combinação de propriedades de materiais pode
exigir centenas ou milhares de shaders
– Criação manual gera código duplicado, de difícil
manutenção
– Existem formas de automatizar o processo:
• Criação procedural de shaders
• Linkagem dinâmica (fragment linking)
• Über-shaders (super-shaders)
Download

Shaders