doc-sigma-collective-www.sigmaco.org

Técnicas de coligibilidade

58 / 100

Denomina-se como culling techniques, ou (em português) técnicas de coligiblidade, metodologias aplicadas no esforço de optimizar o desenho de simulação escaláveis tridimensionais, em que o número de objetos a serem desenhados tendem a ser arbitrários, bem como seus possíveis níveis de detalhe influenciados por distância desde o ponto de observação.

A palavra “coligibilidade” tende a ser nova para você, mortal; aliás, sequer o Google conseguiu encontrar. Então, de antemão, vou falar sobre este vocábulo. — É sempre bom ampliar o conhecimento sobre nossa língua-mãe, pois é 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ê, uma vez que, 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.

culling sigma collective www.sigmaco.org Técnicas de coligibilidade culling technique, game engineering, OpenGL SIGMA Co. 🇧🇷

Técnicas

A melhor optimizaçã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 algoritmos resolvem quais faces serão ou não serão desenhadas. Confira a seguir.

Por triângulo

O modo de operação por triangulo determina para cada triângulo se o mesmo deveria
ser coligido ou não. A exemplo, esta técnica foi usada em cenários estruturados em BSPs. No entanto, devido ao custo elevado ao CPU, esta técnica caiu em desuso. — Errr, já não era muito usada mesmo.

Por malha

O modo de operação por malha checa cada malha (frequentemente um grupo de triângulos num buffer) se a mesma deveria ser ou não ser coligida. 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.

Ainda, este modo é frequentemente empregado em organizações de mundo onde os objetos são hierarquizados e usam caixas limítrofes para realizar a o teste de coligibilidade contra frústulo do ponto de observação (também conhecido como câmera).

Em lote

O modo de operação em lote verifica lotes inteiros (isto é, um grupo de malhas num buffer) se os mesmos deveriam ser ou não ser coligidos. Este modo se sobressai aos outros devido a minimização de chamadas de desenho e contagem de triângulos. Este modo é frequentemente usado em coligibilidade uniforme de grade.

Responses