Slide 1

Slide 1 text

WebGPU O futuro da visualização 3D no navegador

Slide 2

Slide 2 text

Roadmap 1. Bibliotecas Gráficas 2. Funcionamento 3. Aplicações 4. Ambiente de Desenvolvimento 5. Mão na massa!

Slide 3

Slide 3 text

Bibliotecas Gráficas

Slide 4

Slide 4 text

WebGL e OpenGL WebGL é a atual API de Gráficos padrão dos Navegadores que funciona como wrapper (camada) sobre uma biblioteca de código-aberto chamada OpenGL para interagir com gráficos 3D renderizados por GPU (Placa Gráfica).

Slide 5

Slide 5 text

O problema! Enquanto Sistemas Operacionais como Linux e Android tem o OpenGL como API padrão de Gráficos 3D, outros Sistemas Operacionais como Windows e MacOS tem APIs gráficas próprias, respectivamente DirectX e Metal. Isso acaba sendo um problema porque para rodar em SOs sem suporte é necessário usar uma ferramenta chamada Angle para converter os comandos OpenGL para os nativos o que não é performático.

Slide 6

Slide 6 text

Vulkan A algum tempo vem sendo desenvolvido em consórcio ente empresas de gráficos, navegadores e SOs uma API padrão de gráficos chamada Vulkan para permitir performance nativa de gráficos em diferentes SOs e GPUs.

Slide 7

Slide 7 text

E os navegadores? Esse ano (2022) começou o trabalho de um consórcio formado pelas empresas Apple, Microsoft, Mozilla e Google responsáveis pelo desenvolvimento dos respectivos navegadores Safari, Edge, Firefox e Chrome para criar uma nova API para gráficos 3D. a WebGPU.

Slide 8

Slide 8 text

E como WebGPU resolve o problema? Diferente da API anterior WebGL que era um wrapper sobre a OpenGL, a WebGPU é uma API padrão capaz de se comunicar de forma agnóstica com qualquer biblioteca 3D. Isso permite que ela acesse gráficos nativos em Vulkan, DirectX, OpenGL ou Metal com o mesmo código independente de qual seja o padrão permitindo mais performance e capacidade de processamento da GPU no navegador.

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Funcionamento

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

JS (WebGPU)

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Aplicações

Slide 20

Slide 20 text

Sites interativos

Slide 21

Slide 21 text

Jogos no Browser

Slide 22

Slide 22 text

Aplicações 3D no Browser

Slide 23

Slide 23 text

Aplicações de Gráficos no Browser

Slide 24

Slide 24 text

Aplicações CAD no Browser

Slide 25

Slide 25 text

Machine Learning no Cliente

Slide 26

Slide 26 text

Mobile

Slide 27

Slide 27 text

Metaverso

Slide 28

Slide 28 text

Shaders

Slide 29

Slide 29 text

O que são? Shaders (sombreadores em PT-BR) são os códigos responsáveis por interagir com o processamento gráfico para calcular volume, textura, luz e cor durante a renderização de objetos 3D.

Slide 30

Slide 30 text

GLSL Tradicionalmente os Shaders em OpenGL (e por consequência em WebGL) são escritos em OpenGL Shading Language (GLSL) que é uma linguagem de alto nível baseada na sintaxe de C++ feita para que o programador possa interagir com gráficos em OpenGL de forma neutra.

Slide 31

Slide 31 text

WGSL A nova especificação traz uma nova linguagem de alto nível para interagir com gráficos baseado na sintaxe de C++ e Rust. Ela vai ser o padrão, mas também será possível interagir com a GPU escrevendo Shaders em outras linguagens de programação caso haja suporte e o programador queira (atualmente sendo suportado Rust e Python).

Slide 32

Slide 32 text

Ambiente de Desenvolvimento

Slide 33

Slide 33 text

Ferramentas ● Node LTS (A versões superiores têm problemas de compatibilidade no momento.) ● Typescript ● Webpack ● Visual Studio Code ● Navegador (Chrome Canary)

Slide 34

Slide 34 text

Navegador ● Por ser uma API que atualmente está em fase de desenvolvimento, atualmente é necessário usar o Navegador Chrome na versão Canary. ● Atualmente ainda não está disponível em nenhuma versão do Firefox, Edge ou Safari que também fazem parte do consórcio da W3C, mas em breve será possível também nesses navegadores.

Slide 35

Slide 35 text

Mão na massa!

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

$ git clone https://github.com/Camilotk/webgpu-quickstart QUICKSTART!

Slide 38

Slide 38 text

Bora lá!

Slide 39

Slide 39 text

Obrigado! E-mail: camilotk@gmail.com LinkedIn: https://www.linkedin.com/in/2cazevedo/ GitHub: https://github.com/Camilotk Telegram: @cazevedo