SlideShare a Scribd company logo
1 of 26
DirectX11
FUNDAMENTOS

POR: ALEXANDRE CORREA CASTRO
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

More Related Content

Similar to DirectX11: Fundamentos

CCS COMPILADOR - PARTE II
CCS COMPILADOR -  PARTE IICCS COMPILADOR -  PARTE II
CCS COMPILADOR - PARTE IISaldit Software
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLTony Alexander Hild
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Filipo Mór
 
Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Alcides Costa
 
Aula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfAula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfDeboraMateus3
 
OpenGL ou Direct3D
OpenGL ou Direct3DOpenGL ou Direct3D
OpenGL ou Direct3DMarcos Silva
 
IntroduçãO Ao Xna Campus Party
IntroduçãO Ao Xna  Campus PartyIntroduçãO Ao Xna  Campus Party
IntroduçãO Ao Xna Campus PartyJosé Farias
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1B Bellaver
 
Desenvolvendo aplicações com Kinect
Desenvolvendo aplicações com KinectDesenvolvendo aplicações com Kinect
Desenvolvendo aplicações com KinectErick Mendonça
 
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
.NET Core 3.x e ASP.NET Core 3.x - Coders in RioRenato Groff
 
Introdução ao XNA
Introdução ao XNAIntrodução ao XNA
Introdução ao XNAJosé Farias
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16Gabriel Lima
 
Todos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOTodos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOFernando Rizzato
 

Similar to DirectX11: Fundamentos (20)

autocad_basico
autocad_basicoautocad_basico
autocad_basico
 
CCS COMPILADOR - PARTE II
CCS COMPILADOR -  PARTE IICCS COMPILADOR -  PARTE II
CCS COMPILADOR - PARTE II
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
 
LEON3 e KIT ALTERA.
LEON3 e KIT ALTERA.LEON3 e KIT ALTERA.
LEON3 e KIT ALTERA.
 
Introdução Play framework
Introdução Play frameworkIntrodução Play framework
Introdução Play framework
 
Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1Fundamentos de VHDL em Lógica Programável v1.1
Fundamentos de VHDL em Lógica Programável v1.1
 
Aula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdfAula 1 introdução a VHDL 2016.pdf
Aula 1 introdução a VHDL 2016.pdf
 
OpenGL ou Direct3D
OpenGL ou Direct3DOpenGL ou Direct3D
OpenGL ou Direct3D
 
Dynamips, Dynagen e GNS3
Dynamips, Dynagen e GNS3Dynamips, Dynagen e GNS3
Dynamips, Dynagen e GNS3
 
IntroduçãO Ao Xna Campus Party
IntroduçãO Ao Xna  Campus PartyIntroduçãO Ao Xna  Campus Party
IntroduçãO Ao Xna Campus Party
 
Ix ws allan
Ix ws allanIx ws allan
Ix ws allan
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1
 
Desenvolvendo aplicações com Kinect
Desenvolvendo aplicações com KinectDesenvolvendo aplicações com Kinect
Desenvolvendo aplicações com Kinect
 
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
.NET Core 3.x e ASP.NET Core 3.x - Coders in Rio
 
Introdução ao XNA
Introdução ao XNAIntrodução ao XNA
Introdução ao XNA
 
Apostila curso-autocad-2017
Apostila curso-autocad-2017 Apostila curso-autocad-2017
Apostila curso-autocad-2017
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
 
Todos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOTodos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIO
 
CGPI Aula 27/08/2018
CGPI Aula 27/08/2018CGPI Aula 27/08/2018
CGPI Aula 27/08/2018
 

DirectX11: Fundamentos

  • 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