Top Banner
APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPU Alexandre Valdetaro Gustavo Bastos Nunes
26

APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

May 21, 2019

Download

Documents

doanhanh
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: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUAlexandre Valdetaro

Gustavo Bastos Nunes

Page 2: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

RESUMO

�Motivação� Introdução ao novo pipeline� Aplicações

� Terreno� Streamline� Phong Tessellation� Tesselagem adaptativa

Page 3: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

MOTIVAÇÃO

Page 4: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

MOTIVAÇÃO

�Modelos altamente detalhados�Economia de largura de banda�Animação somente da malha grosseira

�Continuos & View-Dependent LOD

Page 5: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

CONTINUOS LOD

Page 6: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

VIEW-DEPENDENT LOD

Page 7: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

INTRODUÇÃO AO NOVO PIPELINE

Input Assembler

Vertex Shader

Geometry Shader

Pixel Shader

Setup/Raster

•Praticamente só era possivel manipular vértices.

•Geometry shader criava primitivas, porém com baixo desempenho.

Page 8: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

TESSELLATION PIPELINE

Input Assembler

Vertex Shader

Hull Shader

Tessellator

Domain Shader

Geometry Shader

Setup/Raster

•Direct3D11 tem suporte para tesselagem programável

•Dois novos estágios programáveis•Hull Shader•Domain Shader

•Um estágio fixo:•Tessellator

Pixel Shader

Page 9: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

TESSELLATION PIPELINE

� Hull Shader: Usado para passar de uma base para outra ( ex: triangulo -> patch ). Também usado para passar o nível de tesselagem para cada patch

� Tesselator: Cria os vértices de acordo com o pattern selecionado.

� Domain Shader: Avalia a superfície.

Page 10: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

INPUT ASSEMBLER

Input Assembler• Nova primitiva ( Patch )

•Numero de vértices arbitrario ( até 32 )

•Não existe uma topologia implícita

Vertex Shader

Hull Shader

Tessellator

Domain Shader

Geometry Shader

Setup/Raster

Pixel Shader

Page 11: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

VERTEX SHADER

� Transforma os control points do patch

� Normalmente usado para animação( skinning )

� Permite fazer a animação apenas na malha grosseira que serátesselada depois.

Vertex Shader

Hull Shader

Tessellator

Domain Shader

Geometry Shader

Setup/Raster

Input Assembler

Pixel Shader

Page 12: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

HULL SHADER

� Entrada: patch control points

� Saída: Fatores de tesselagem por aresta e pro interior do patch além do modo de tesselagem

� Transforma os control points para uma base diferente

Hull Shader

Vertex Shader

Tessellator

Domain Shader

Geometry Shader

Setup/Raster

Input Assembler

Pixel Shader

Page 13: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

TESSELLATOR

� Input: Fatores de tesselagem e modo de tesselagem

� Output: Vertices criados e coordenadas [0..1] UV/UVW

� Estágio fixo da pipeline, porém configuravel.

� Domínios: Triangulos, Quads ou Isolines

Tessellator

Input Assembler

Vertex Shader

Hull Shader

Domain Shader

Geometry Shader

Setup/Raster

Pixel Shader

Page 14: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

TESSELATOR

Level 5 Level 5.4 Level 6.6

Page 15: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

TESSELLATOR

Inside Tess: minimum

Inside Tess: average

Inside Tess: maximum

Top,Right = 4.5

Bottom,Left = 9.0

Left = 3.5Right = 4.4Bottom = 3.0

Page 16: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

DOMAIN SHADER

Domain Shader

Input Assembler

Vertex Shader

Hull Shader

Geometry Shader

Setup/Raster

Tessellator

Entrada: Coordenadas parametricas UV/UVW, dados do patch e seus control points

Saida: Malha final tesselada

Geralmente é no domain shader que sai do espaço de objeto e vai para espaço de tela. Multiplicando pela WVP.

Pixel Shader

Page 17: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

GEOMETRY SHADER

� Tem acesso a cada triangulo em particular

� Com o tessellator perde a habilidade de consultar os triangulos adjacentes

Input Assembler

Vertex Shader

Hull Shader

Geometry Shader

Setup/Raster

Tessellator

Domain Shader

Pixel Shader

Page 18: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

TESSELLAGEM ADAPTATIVA

� Triangulo está na silhoueta?� Triangulo está perto ou distante da camera?� Fator de tessellagem de acordo com a aresta em espaço de tela.

� Fator de tesselagem de acordo com um mapa de gradiente.

Page 19: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

EXEMPLO – PHONG TESSELLATION – SIGGRAPH ASIA 2008

Page 20: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

VÍDEO PHONG TESSELLATION

Page 21: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

STREAMLINE

Page 22: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

VIDEO STREAMLINE

Page 23: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

MALHAS PROCEDURAIS

� Utiliza algoritmo de perlin noise em GPU� Displacement dos vértices no domain shader� Ao invés de bump procedural, pode-se fazer agora malhas procedurais

Page 24: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

VÍDEO MALHAS PROCEDURAIS

Page 25: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

PAPER LOD

Page 26: APLICAÇÕES PARA GERAÇÃO DE VÉRTICES EM GPUwebserver2.tecgraf.puc-rio.br/~abraposo/inf2063/NovoPipelineGPU.pdf · Input Assembler Vertex Shader Geometry Shader ... usado para

OUTRAS COISAS A SE FAZER COM O PIPELINE NOVO

� Ordenação de fragmentos� OIT?� CSG?� ...?