Este conjunto de slides tem como propósito proporcionar um guia simplificado da divisão das APIs do DirectX11 e da sua pipeline, trazendo ao leitor um entendimento geral sobre o assunto.
Espero que eles sejam úteis!
2. Propósito destes slides
Proporcionar um guia simplificado da divisão das APIs do DirectX11 e da sua
pipeline, trazendo ao leitor um entendimento geral sobre o assunto.
Espero que eles sejam úteis!
POR: ALEXANDRE CORREA CASTRO
3. O que é DirectX
Microsoft DirectX é uma coleção de APIs (Application Programming Interface),
projetada para proporcionar aos desenvolvedores uma interface de baixo nível para
acesso ao hardware em plataformas baseadas no sistema operacional Windows
(compatível com Windows Vista ou superior).
Cada componente da API proporciona acesso padronizado a diferentes aspectos do
hardware como: interface gráfica, som, GPU e dispositivos de entrada.
POR: ALEXANDRE CORREA CASTRO
4. Principais diferenças entre DirectX11
e DirectX10
Computação de propósito geral usando a nova API DirectCompute.
Renderização multi threaded.
Hardware tesselation.
POR: ALEXANDRE CORREA CASTRO
5. Principais diferenças entre DirectX11
e DirectX10
Shader Model 5.0 e conceitos de programação orientada a objetos para shaders.
Formatos BC6 (BC6H) e BC7 para compressão de texturas de imagens HDR e LDR.
Aumento da resolução de texturas.
E muito mais!
Mais informações sobre B6HC e BC7 em:
http://msdn.microsoft.com/en-us/library/windows/desktop/hh308955(v=vs.85).aspx
POR: ALEXANDRE CORREA CASTRO
6. Os componentes de DirectX11
O DirectX é dividido em diversos componentes, cada um representando um diferente
aspecto do sistema.
Cada API pode ser utilizada independente da outra possibilitando a adição de uma nova
somente conforme a necessidade.
Nos próximos slides veremos a relação de APIs disponíveis no DirectX11.
POR: ALEXANDRE CORREA CASTRO
7. Os componentes de DirectX11
Direct2D
Direct2D é utilizado para gráficos 2D em aplicações Win32. Ele possui alta performance
na renderização de vetores.
DirectWrite
DirectWrite é utilizado para renderização de fontes e textos em aplicações Direct2D.
POR: ALEXANDRE CORREA CASTRO
8. Os componentes de DirectX11
DXGI
DirectX Graphics Infrastructure, também conhecido como DXGI, é utilizado para criação
de Direct3D swap chain e enumeradores de device adapters (placa de vídeo).
Direct3D
Direct3D é utilizado em todo gráfico tridimensional em DirectX. Esta é a API que recebe
a maior atenção e atualizações.
POR: ALEXANDRE CORREA CASTRO
9. Os componentes de DirectX11
XAudio2
XAudio2 é uma API de baixo nível para processamento de áudio. Esta API é parte do
XDK (Xbox Development Kit) e agora também faz parte do DirectX SDK. XAudio2
substitui a API DirectSound.
XACT3
XACT3 é uma API de alto nível para processamento de áudio construída a partir da
XAudio2.
POR: ALEXANDRE CORREA CASTRO
10. Os componentes de DirectX11
XInput
XInput é a API de dispositivo de entrada do XDK e DirectX SDK, sendo utilizada para
processar os controles do Xbox 360 e PC. XInput substitui a API DirectInput.
XNA Math
XNA Math não é propriamente uma API, mas sim uma biblioteca matemática que
realiza operações otimizadas. Esta biblioteca utiliza SIMD (Single Instruction Multiple
Data) que possibilita múltiplas operações em uma única chamada de instrução.
POR: ALEXANDRE CORREA CASTRO
11. Os componentes de DirectX11
DirectCompute
DirectCompute é uma nova API adicionada na versão 11 do DirectX que permite o uso
da GPU para processar dados de propósito geral com paralelismo.
DirectSetup
Possibilita a instalação da última versão do DirectX junto com o seu jogo.
POR: ALEXANDRE CORREA CASTRO
12. Os componentes de DirectX11
DirectInput
DirectInput é uma API para detecção de teclados, mouses e joysticks. No caso do uso de
teclado e mouse, podemos utilizar funções Win32 como uma opção ao DirectInput.
POR: ALEXANDRE CORREA CASTRO
13. Os componentes de DirectX11
Componentes Obsoletos – removidos ou marcados como deprecated.
DirectDraw – Agregada ao Direct3D.
DirectPlay – Removido, capacitação de rede protocolo UDP (User Datagram Protocol).
DirectShow – Passou a fazer parte do Windows SDK.
DirectMusic – Deprecated, substituído por XAudio2.
DirectSound – Deprecated, substituído por XAudio2.
POR: ALEXANDRE CORREA CASTRO
14. Component Object Model
A API de DirectX é baseada no modelo de COM (Component Object Model).
Os objetos COM consistem em uma coleção de interfaces que expõem funções que os
desenvolvedores utilizam para acessar o DirectX. Estes objetos são DLLs que são
registradas no sistema para prover suporte a um hardware específico da máquina. O
registro destas DLLs ocorrem no momento da instalação do DirectX.
POR: ALEXANDRE CORREA CASTRO
15. Estágios do Direct3D 11
O Direct3D processa sua cena em múltiplos estágios. Cada um destes passos executam
um conjunto específicos de tarefas para resultar em uma imagem final. Estes estágios
são conhecidos como a pipeline de renderização.
POR: ALEXANDRE CORREA CASTRO
16. A Pipeline do Direct3D 11
Input
Assembler
Vertex
Shader
Hull Shader
Tessellator
Domain
Shader
Novidades do Direct3D11
POR: ALEXANDRE CORREA CASTRO
Geometry
Shader
Rasterizer
Pixel
Shader
Output
Merger
17. Estágios da pipeline do Direct3D 11
Input Assembler (IA)
Input Assembler (IA) é o primeiro estágio da pipeline do Direct3D e pode ser
considerado a fase da construção dos blocos de geometrias que serão processados
pelos demais estágios da pipeline.
POR: ALEXANDRE CORREA CASTRO
18. Estágios da pipeline do Direct3D 11
Vertex Shader (VS)
Vertex Shader (VS) é o segundo estágio da pipeline. Este estágio é capaz de trabalhar na
estrutura de vértices do modelo tridimensional e com isso modificar sua estrutura em
tempo de execução.
O Vertex Shader sempre recebe um vértice como entrada e devolve um vértice na saída.
POR: ALEXANDRE CORREA CASTRO
19. Estágios da pipeline do Direct3D 11
Hull Shader (Opcional)
Hull Shader é o terceiro estágio da pipeline. Ele executa operações em conjuntos de
pontos de controle, e gera dados adicionais conhecidos como patch constants.
POR: ALEXANDRE CORREA CASTRO
20. Estágios da pipeline do Direct3D 11
Tessellator (Opcional)
Tessellator é o quarto estágio da pipeline. Este estágio subdivide a geometria gerada
pelo Hull Shader pra criar uma representação mais detalhada do modelo tridimensional.
POR: ALEXANDRE CORREA CASTRO
21. Estágios da pipeline do Direct3D 11
Domain Shader (Opcional)
Domain Shader é o quinto estágio da pipeline. Ele executa operações em vértices saída
do Tessellator, semelhante ao processo de Vertex Shader.
POR: ALEXANDRE CORREA CASTRO
22. Estágios da pipeline do Direct3D 11
Geometry Shader (GS) Opcional
Geometry Shader (GS) é o sexto estágio da pipeline, porém se não houver nenhum
estágio de Tessellation ocorrendo ele será executado logo após ao Vertex Shader.
Este estágio pode gerar novas primitivas como pontos, linhas e triângulos, a partir das
primitivas de entrada da pipeline. Por exemplo: quando processarmos triângulos, três
vértices serão a entrada do Geometry Shader. Este passo pode retornar zero ou mais
primitivas para o próximo item da pipeline.
POR: ALEXANDRE CORREA CASTRO
23. Estágios da pipeline do Direct3D 11
Rasterizer
Rasterizer é o sétimo estágio da pipeline, ele é responsável por converter as primitivas
em pixels. Estes pixels serão os dados de entrada do estágio de Pixel Shader (PS).
O estágio de Rasterizer determinará como o Pixel Shader será invocado e também
poderá executar outras tarefas, como tornar invisível determinados pixels através de
clipping e culling.
POR: ALEXANDRE CORREA CASTRO
24. Estágios da pipeline do Direct3D 11
Pixel Shader (PS)
Pixel Shader (PS) é o oitavo estágio da pipeline, ele é capaz de trabalhar na estrutura
dos pixels depois que um modelo 3D é rasterizado.
Com o Pixel Shader podemos criar efeitos na imagem, como efeitos de
vidro, rugosidade, desfoque entre outros, esse efeitos são conhecidos como pos-effects.
POR: ALEXANDRE CORREA CASTRO
25. Estágios da pipeline do Direct3D 11
Output Merger (OM)
Output Merger (OM) é o nono e último estágio da pipeline, ele agrupa os vários tipos de
dados de saída (pixel shader, alpha blending, depth) para compilar uma imagem final
que será enviada para tela.
POR: ALEXANDRE CORREA CASTRO
26. Referências
Beginning DirectX 11 Game Programming – Allen Sherrod and Wendy Jones
Introduction to 3D Game Programming with DirectX 11 – Frank Luna
POR: ALEXANDRE CORREA CASTRO