Técnicas de coligibilidade

De técnicas de coligibilidade, ou originalmente “culling techniques”, provavelmente você prodígio já viu algum relato sobre. Bem, vou tratar aqui sobre estas técnicas, as quais são as “técnicas de coligibilidade”.

Introdução

Aparentemente eu foi o pioneiro em encontrar uma equivalência para o termo em nossa língua, então eu oficializo aqui este termo aportuguesado.

A palavra “coligibilidade” tende a ser nova para vocês mortais; aliás, sequer o Google conseguiu encontrar. Então, de antemão, vou falar sobre este vocábulo, aliás, é sempre bom ampliar o conhecimento sobre nossa língua-mãe; é nossa maior identidade cultural.

O substantivo “coligibilidade” vem do verbo “coligir”, o qual significa reunir, reagrupar, rearranjar coisas seletivas numa coleção. Talvez não haja soado claro para você, aliás, coleção e seleção indutivamente atuam como antônimos, mas a ideia é: selecionar, da coleção de todas as coisas do cenário, somente as coisas visíveis; resultando numa outra coleção. E para fazer isso, há técnicas diferentes, as quais veremos a seguir.

Técnicas

A melhor otimização na renderização é não renderizar algo desnecessário. E é nesta questão que a coligibilidade entra em cena; para descobrir o que pode ser ignorado durante a renderização, porque não pode ser visível de qualquer maneira. Abaixo estão as técnicas básicas de
coligibilidade que mais são implementadas.

Coligibilidade de contra-faces

As faces voltadas para fora da câmera não são visíveis, portanto, não requerem consideração no tempo de desenho. Esta técnica é tão usada que é implementada pelo hardware. Esta técnica corta rudemente a quantidade de faces desenhadas pela metade.

Coligibilidade de portal

Esta técnica divide a cena em setores com portais entre elas. Ao renderizar, a câmera estará num dos setores e este setor será renderizado normalmente. Mas para cada portal que é visível no setor em questão, um frústulo de vista é configurado para o tamanho do portal e, em seguida, o setor atrás deste portal é renderizado.

A coligibilidade de portal funciona recursivamente, resultando na possibilidade de muitas geometrias serem selecionadas pela visualização do frústulo ao renderizar os outros setores. Uma técnica muito útil para cenas internas.

Coligibilidade de detalhes

Quando a geometria está tão distante a ponto de não ser mais visível, não há necessidade de desenhá-la. Assim sendo, esta pode ser descartada com segurança. Um esquema mais avançado de seleção de detalhes que diminui a quantidade de detalhes com a distância é o LOD (level of detail, ou nível de detalhe).

Coligibilidade de frústulo de vista

As faces que estão fora do frústulo de vista não estão visíveis — desconsiderando que não lidaremos com reflexão agora — para que possam ser coligidos. Essa verificação é feita verificando se o volume limítrofe das geometrias está fora do volume de frústulo de vista ou não.

Portanto, a verificação não será feita em todas as faces, pois isto custaria muito em questão de desempenho. Algumas vezes, a coligibilidade do frústulo de vista pode custar mais do que o ganho (por exemplo, ao fazer instanciação). Uma maneira de acelerar a coligibilidade do frústulo de vista é usar uma estrutura espacial adequada para a cena, como octree, BSP ou similar, por exemplo.

Coligibilidade de oclusão

Esta é a técnica de coligibilidade mais difícil de implementar.

A geometria que está oclusa por outra geometria não precisa ser renderizada. Uma solução é usar o buffer de profundidade (Z) e classificar a geometria de frente para trás. Porém, está técnica não tem garantia absoluta de funcionamento, fora que todos os pixeis serão verificados em relação ao buffer de profundidade.

A considerar os contrapesos ao uso desta técnica, será custoso em questão de desempenho para cenas grandes. Técnicas melhores de coligibilidade de oclusão coligem as geometrias antes mesmo que estas sejam enviadas para a GPU.

Modos

Há diferentes modos de operação em que algorítimos resolvem quais faces serão ou não desenhadas. Confira a seguir.

Por triângulo

Este modo de operação determina para cada triângulo se deveria
ser coligido ou não.

Um exemplo de técnica que foi usada em BSPs, no entando, agora não mais, devido ao custo elevado ao CPU.

Por malha

Este modo de operação checa cada malha (um grupo de triângulos num buffer) se eles deveriam ser coligidos ou não.

Este modo se sobressai ao modo por triângulo uma vez que minimiza a contagem de triângulos e mantem baixas as alterações de estado.

Este modo é frequentemente usado em hierarquias de caixas limítrofes de coligibilidade de frústulo de vista.

Em lote

Este modo de operação verifica lotes inteiros (um grupo de malhas num buffer) se deveriam ser coligidos ou não.

Este modo se sobressai aos outros devido a minimização de chamadas de desenho e contagem de triângulos.

Este modo é frequentemente usada em coligibilidade uniforme de grade.

Leave a Reply