Até certo ponto, isso é uma função de como o 3D é renderizado. Por exemplo, o OpenGL seleciona automaticamente a geometria fora do intervalo -1,0, +1,0 no espaço da tela XY (Z é mais complexo, mas semelhante). A geometria descartada nunca gera fragmentos (aproximadamente pixels) e, portanto, nunca é transformada em imagem real, apesar de ter sido enviada ao sistema para renderização. De qualquer forma, é impossível gravar no espaço fora da janela de renderização (se tudo estiver funcionando como deveria).
Em alguns contextos, basta confiar nesse comportamento como uma otimização. No entanto, você ainda precisa passar todos os dados do jogo por pelo menos um estágio de renderização (vertex shaders) antes que a placa de vídeo possa saber o que é visível. Em algo como, digamos, Skyrim, isso seria impraticável. Você não apenas precisa enviar todos os vértices do mundo através do pipeline de renderização, mas também carregar todos os vértices na memória do sistema / vídeo. Isso é ineficiente, se possível.
Portanto, muitos jogos farão uso da seleção baseada em CPU. Eles normalmente implementam algum tipo de sistema de nível de detalhe (LOD), em que a qualidade e a existência de ativos são impactadas pela importância em que elas são avaliadas em um determinado contexto. Uma malha piramidal pode ser uma aproximação aceitável para uma montanha se você estiver a 80 quilômetros dela. Se você não consegue vê-lo (como se estivesse bloqueado por outras montanhas), não há necessidade de carregá-lo. Existem vários métodos mais complexos para fazer isso, que são tópicos que não considero diretamente relevantes para a profundidade solicitada por essa pergunta, mas observe o mosaico para um dos exemplos mais comuns.
A verdadeira essência disso é que o visual é apenas o produto do jogo. Os dados reais não têm nada a ver diretamente com o que você está vendo ou não vendo na maioria das vezes, e os dados são filtrados por vários estágios para remover informações estranhas antes de chegar ao ponto em que uma imagem é gravada na tela. Dependendo do design do mecanismo, o visual pode ser extremamente dissociado da lógica real do jogo, na medida em que algo como ter uma interface 2D e 3D para o mesmo jogo seja uma possibilidade. É até possível para muitos mecanismos de jogos rodarem sem saída, seja como for; Às vezes, isso é usado para testar a IA do jogo.
É aí que as coisas podem ficar complicadas, no entanto. Em algo simples como um jogo de Mario, não é muito proibitivo calcular o movimento de todos os inimigos no nível, mesmo que eles não sejam visíveis. Nos contextos modernos, o que está acontecendo fora da tela é uma questão real de consideração séria. Se houver várias cidades inteiras de NPCs, como você lida com o comportamento delas quando são completamente descartadas - como quando o jogador está em uma cidade diferente? Deseja realmente calcular centenas de decisões dos NPCs em todo o mapa? A resposta geralmente é não, mas a abordagem exata para fazer isso pode variar, e pode ter alguns impactos no jogo.
É importante observar que é assim que as coisas funcionam agora . Os próprios jogos antigos do Mario provavelmente foram programados de maneiras muito diferentes (não sei falar exatamente), dadas as limitações extremas de hardware da época. O conceito de 3D não existia naquela época; hoje, quase todos os jogos, mesmo os totalmente 2D, usam a renderização 3D de alguma forma, mesmo que não saibam. O hardware de vídeo moderno é o primeiro em 3D, e a renderização em 2D (pelo menos quando faz uso adequado do hardware) simplesmente ignora a 3ª dimensão.