Existem várias razões pelas quais os pipelines de renderização e física são tradicionalmente mantidos em sigilo. Tenha em mente, como listo estes, que não se trata apenas de jogos. Sua pergunta toca em qualquer aplicativo que use uma tecnologia de renderização em 3D como o OpenGL, seus concorrentes ou precursores.
- Nem todo aplicativo que usa 3D precisa de física. Lembre-se de que o OpenGL não foi construído apenas para jogos, seu uso abrange tudo, desde simulações médicas a modelagem de estatísticas de vendas, simulações de tráfego aéreo a reações químicas complexas e assim por diante.
Qualquer sistema que serve a muitos propósitos se dilui em termos de eficiência. Um pipeline gráfico precisa ser incrivelmente rápido. No momento em que você começa a introduzir pontos em que esse pipeline precisa interagir com outros subsistemas, como a memória principal do sistema (onde reside o código), você experimentará reduções em ordem de grandeza na eficiência. O hardware da sua placa de vídeo é muito especificamente reduzido e ultra-otimizado para o envio de pixels , com um grande custo e muitos anos de pesquisa altamente competitiva.
A natureza das estruturas matemáticas e de dados que cercam as operações físicas (particularmente a detecção e resolução de colisões, sem as quais realmente não existe física ) é muito diferente da matemática necessária para a renderização.
- Existem soluções que lidam com a física em hardware. Mas, diferentemente do modo como representamos, o modo como realizamos a física em qualquer situação difere amplamente. A indicação mais fundamental disso é que a física newtoniana não é única; existem outras maneiras de modelar matematicamente a física que são mais apropriadas em outras situações, como a mecânica hamiltoniana. E particularmente nos jogos, todo jogo individual pode optar por modelar sua física de maneira diferente, seja em 2D ou 3D. Eles nem precisam refletir a física do mundo real! - porque um jogo é um produto da imaginação. Em outras palavras, a física faz parte da dinâmica do jogo e isso pode mudar de jogo para jogo - sem falar em todas as outras soluções às quais tecnologias como o OpenGL são aplicadas.
Simular com precisão a física em um nível de vértice por vértice não é, na maioria das vezes, uma opção viável. Dadas as altas contagens de modelos na maioria dos jogos e a dificuldade inerente à detecção de colisões envolvendo poliedros côncavos, não é tão simples quanto calcular a física a partir do modelo fornecido. Para muitos, se não a maioria dos jogos em 3D, volumes delimitadores na forma de cilindros ou caixas são usados para simplificar a detecção de colisões, onde esse tipo de nível de detecção de colisões é necessário. Dada a tecnologia atual, o nível de processamento envolvido não deixaria muito espaço para o restante da lógica do jogo. Até o PhysX da Nvidia exige que os poliedros complexos e côncavos sejam decompostos em poliedros convexos mais simples, para simulação em física.
Sua placa gráfica está produzindo perspectiva com as transformações que realiza. Isso é diferente das transformações realizadas na física, que nada têm a ver com a perspectiva em si - é simplesmente calcular posições e orientações básicas em seu mundo. Se você conhece o MVC, entenderá que há uma diferença distinta entre os dados que você mantém em seu aplicativo e como você os apresenta .
O setor de tecnologia da computação é impulsionado pela necessidade e, embora a visualização seja uma necessidade quase universal, as simulações de física não são de modo algum universais, nem como requisito nem em termos de suas respectivas implementações.
Portanto, meu conselho é: pare de se preocupar em ir contra a corrente e comece a se concentrar em como fazer as duas coisas que você precisa fazer: renderização e física. Você não obterá os dados no pipeline de processamento da sua placa de vídeo (CUDA / OpenCl são exceções): você insere triângulos e dados de material, ele bombeia seu mundo 3D como imagem em movimento.
Como um final à parte, sua pergunta não é sem sentido. O desejo de uma base combinada para a física e a renderização, e o fato de que a matemática de ponto flutuante pode ser muito mais lenta que o ponto fixo, mostra-nos por que as tecnologias voxel estão vendo um enorme ressurgimento de interesse: elas simplificam o mundo inteiro até o posicionamento na grade , poliedros convexos alinhados ao eixo. Isso melhora muito o desempenho, reduzindo a quantidade de matemática vetorial de ponto flutuante necessária para operações físicas, pois agora você trabalha principalmente em uma grade espacialmente subdividível, instável e indexada por número inteiro. Essa mesma grade pode ser usada para renderização e física, principalmente porque você pode usar diferentes resoluções de grade para esses dois subsistemas distintos (ao usar uma solução baseada em octree, como SVOs).