Shaders: Geometry Shader

4 min de leitura
Imagem de: Shaders: Geometry Shader

Você já está por dentro de quase tudo relacionado ao tão famoso shader. Primeiramente, o TecMundo Games trouxe as informações gerais sobre o processo gráfico que é capaz de transformar uma imagem aparentemente simples em algo muito mais interessante, graças a uma vasta gama de recursos executados na GPU (unidade de processamento gráfico, numa tradução livre).

Nós já explicamos o que são os shaders e para que servem, mostramos mais detalhes sobre o pixel shader e também destrinchamos o vertex shader. Quem acompanhou os artigos sabe que cada um dos efeitos conta com uma função específica, e, quando juntos, geram os belíssimos gráficos que visualizamos em títulos de qualidade.

Entretanto, para entender como o pacote geral funciona, é necessário explorar cada elemento que compõe seu conteúdo. E, além do pixel shader e do vertex shader, temos mais alguns recursos interessantes que você vai conferir aqui no TecMundo Games.

Um deles é o geometry shader, um recurso que ganhou força com a chegada do DirectX 10 da Microsoft e é considerado por muitos como um salvador das CPUs. O motivo, e muito mais, você confere abaixo.

O salvador das CPUs Entendendo o geometry shader

Bem, como você já deve saber, os shaders são como instruções que servem para indicar como será o comportamento da superfície de determinados objetos que aparecem na tela. Com isso, os “microaplicativos” são capazes de gerar diversos efeitos distintos, como o famoso reflexo do ambiente na água, a qualidade das curvas ou a maneira como a grama se movimenta.

Essencialmente, a ideia dos shaders é providenciar efeitos através de artifícios realizados na GPU, evitando, assim, mais cálculos para a CPU, que já trabalha bastante durante a execução de um game, por exemplo. Desta maneira, temos gráficos com uma boa gama de efeitos e que “pesam” bem menos do que deveriam.

Sem dúvidas, um dos shaders mais importantes — e até revolucionário — é o geometry shader. Antes de começarmos a comentar sobre ele, é importante que você saiba de alguns princípios básicos do conceito dos primitivos na computação gráfica. Essencialmente, “primitivos” são os objetos geométricos mais simples gerados pelo sistema.

Um ponto, uma linha e até mesmo um triângulo podem ser considerados objetos geométricos primitivos, sendo irreduzíveis e responsáveis por formar o restante da estrutura em questão. Uma rocha, por exemplo, pode ser formada por centenas de milhares de triângulos.

O geometry shader consegue gerar novos primitivos a partir de linhas, pontos e triângulos que já foram enviados inicialmente à pipeline gráfica. Pipeline? É assim que os programadores chamam a unidade responsável pela transferência de informações relacionadas aos pixels que formam a imagem, a qual oferece maior velocidade de processamento dependendo de seu tamanho. Essencialmente, é o “caminho” que os dados têm de percorrer para gerar o objeto em questão.

Normalmente, para construir um objeto extra, você precisaria de mais arquivos sendo enviados na pipeline, gerando mais processamento da CPU. Contudo, é aí que temos a grande solução de desempenho dos geometry shader. Conforme mencionamos, este efeito consegue gerar novos primitivos a partir de primitivos que já foram enviados, economizando de maneira significativa o esforço da CPU e concebendo novas imagens somente com o uso da GPU.

O geometry shader é executado logo após o vertex shader, efeito capaz de dar “vida” aos primitivos através do cálculo de movimentos. Como os dois trabalham com os primitivos, um depende do outro para funcionar. Mas, enquanto o vertex trabalha apenas com a modificação das vértices, o geometry é capaz de acrescentar ou retirar primitivos.

Desta maneira, conseguimos resultados muito interessantes, os quais, aparentemente, estariam consumindo uma infinidade de processamento da CPU, já que, visualmente, são riquíssimos em detalhes. Mas, tudo não passa da mágica do geometry shader.

Fonte: Beyond3d
Na imagem acima, você confere um uso relativamente comum do geometry shader. No canto inferior direito, temos uma espécie de nave espacial que parece estar infestada por uma trepadeira alienígena. Se você separar a nave da trepadeira, entenderá perfeitamente como a geometry shader foi empregada.

Essencialmente, a nave em si é a construção original, gerada de modo convencional. Já a trepadeira, ou as texturas adicionais, são objetos primitivos construídos a partir dos objetos originais. Literalmente, as ramificações brotam sem que seja necessário um esforço adicional da CPU, graças ao geometry shader.

E por falar em texturas, temos outra imagem que ilustra bem o uso deste shader. Nela, vemos um peixe com várias “deformações” na pele. Na foto da esquerda, as texturas não são tão expressivas assim, já que não há uso do geometry shader. Contudo, ao utilizar o recurso, vemos uma transformação radical, com detalhes como espinhos e outras abominações volumosas surgindo por toda parte.

O geometry shader também é muito utilizado para a criação de pelos artificiais. Em vez de utilizar camadas pré-definidas, o geometry shader é capaz de criar uma pelagem muito mais natural, como vemos na imagem do coelho abaixo. Percebe-se mais volume do que o habitual, dando a sensação de que o objeto é realmente “fofo”.


Abaixo, outro exemplo, desta vez com o game Lost Planet. Aqui, temos uma comparação interessante de uma imagem sem o geometry shader e outra com o recurso acionado. Na primeira, a pelagem não convence, parecendo “chapada” e sem uma movimentação natural. Já na outra imagem, tudo parece bem mais natural, de maneira semelhante ao que conferimos no coelho.

Sem geometry shader


Com geometry shader


O geometry shader é, sem dúvidas, um dos shaders que mais fazem a diferença no pacote geral. Com o auxílio do pixel shader, executado logo em seguida, o resultado pode ser um objeto bem próximo da realidade, com detalhes por toda a parte e sem sugar todo o processamento da CPU.

Cupons de desconto TecMundo:
* Esta seleção de cupons é feita em parceria com a Savings United
Você sabia que o TecMundo está no Facebook, Instagram, Telegram, TikTok, Twitter e no Whatsapp? Siga-nos por lá.