Duas idéias que tenho em mente:
1) A cena é renderizada em um buffer invisível, usando modelos de baixa resolução e baixa contagem de polígonos (ou mesmo usando apenas volumes limitados, como cubos ou esferas). O buffer é então verificado para saber o que é visível ou não. Antes de renderizar a cena de baixa resolução, poderia ser aplicada alguma seleção de frustum, para remover o máximo de objetos possível.
2) Uma ferramenta é executada no mapa estático e executará um traçado de raio complexo (e, portanto, lento) para saber, para algumas posições 3D no mapa, o que é visível e o que não é. Toda essa informação é então armazenada de maneira eficiente, que pode ser usada posteriormente pelo usuário em tempo de execução (por exemplo: uma octree). Esta solução funcionaria apenas para malhas estáticas (por exemplo: construção) que não movessem objetos.
Respostas:
A resposta de Jovan é ótima, mas só quero acrescentar que às vezes há suporte de hardware para fazer a pergunta "Essa geometria realmente renderizou pixels?" (sua ideia nº 1) Essas são chamadas consultas de oclusão - este é um bom artigo sobre GPU Gems sobre elas aqui
Isso é bastante semelhante à sua ideia nº 1, exceto que você não precisa de um buffer invisível e pode ser mais eficiente ou mais simples do que verificar o buffer. O artigo vinculado faz um ótimo trabalho detalhando como as consultas de oclusão de hardware funcionam.
O Unreal Engine utiliza consultas de oclusão de hardware em plataformas que o suportam, além de outras técnicas, como a seleção de frustum e o pré-cálculo de qual geometria estática está ocluída.
fonte
Esta técnica é utilizada pelo Killzone e está detalhada na sua apresentação Practical Oclusion Culling on PS3 . Eles também usam portais para áreas internas.
Um aspecto a ser lembrado sobre os grandes mapas externos é que a simplificação de malha é tão importante quanto o descarte de oclusão, portanto, algumas variações dos campos de altura com o mapeamento de geometria são frequentemente usadas. Aqui está um bom artigo que aborda o abate também. A GPU Gems 2 possui uma implementação .
fonte
Pelo menos os dois primeiros jogos do Quake usaram a estratégia 2; Não sei se os motores da idTech ainda o usam. O mundo acessível é dividido em espaços convexos organizados em uma estrutura de dados em árvore ("partição de espaço binário"), e para cada nó na árvore há um vetor de bits que representa quais outros nós são visíveis nesse nó ("conjunto potencialmente visível").
fonte