Hay varias razones por las cuales las canalizaciones de renderizado y física tradicionalmente se han mantenido discretas. Tenga en cuenta, mientras enumero esto, que esto no se trata solo de juegos. Su pregunta toca cualquier aplicación que utilice una tecnología de renderizado 3D como OpenGL, sus competidores o sus precursores.
- No todas las aplicaciones que usan 3D necesitan física. Recuerde que OpenGL no fue creado solo para juegos, su uso cubre todo, desde simulaciones médicas hasta modelar estadísticas de ventas, simulaciones de tráfico aéreo y reacciones químicas complejas, y así sucesivamente.
Cualquier sistema que sirve para muchos propósitos se diluye en términos de eficiencia. Una tubería gráfica tiene que ser increíblemente rápida. En el momento en que comience a introducir puntos donde esa tubería debe interactuar con otros subsistemas, como la memoria principal del sistema (donde reside su código), experimentará reducciones de eficiencia en el orden de magnitud. El hardware de su tarjeta gráfica está muy específicamente reducido y ultra optimizado para empujar píxeles , a un gran costo y muchos años de investigación altamente competitiva.
La naturaleza de las estructuras matemáticas y de datos que rodean las operaciones físicas (particularmente la detección y resolución de colisiones, sin las cuales realmente no hay física ) es muy diferente de las matemáticas requeridas para el renderizado.
- Hay soluciones que se ocupan de la física en hardware. Pero a diferencia de la forma en que rendimos, la forma en que realizamos la física en cualquier situación es muy diferente. La indicación más fundamental de esto es que la física newtoniana no es de talla única; Hay otras formas de modelar matemáticamente la física que son más apropiadas en otras situaciones, como la mecánica hamiltoniana. Y en los juegos en particular, cada juego individual puede elegir modelar su física de manera diferente, ya sea en 2D o 3D. ¡Estos ni siquiera necesitan reflejar la física del mundo real! - Porque un juego es producto de la imaginación. En otras palabras, la física es, en última instancia, parte de la dinámica de su juego, y eso puede cambiar de un juego a otro, y mucho menos todas las otras soluciones a las que se aplican tecnologías como OpenGL.
Simular con precisión la física en un nivel de vértice por vértice no es, en su mayor parte, actualmente una opción viable. Dada la gran cantidad de poli de los modelos en la mayoría de los juegos, y la dificultad inherente de la detección de colisiones con poliedros cóncavos, no es tan simple como calcular la física a partir del modelo proporcionado. Para muchos, si no para la mayoría de los juegos en 3D, los volúmenes delimitadores en forma de cilindros o cajas se utilizan para simplificar la detección de colisión, donde incluso se requiere ese tipo de nivel de detección de colisión. Dada la tecnología actual, el nivel de procesamiento involucrado no dejaría mucho espacio para que se ejecute el resto de la lógica del juego. Incluso el PhysX de Nvidia requiere que los poliedros cóncavos complejos se descompongan en poliedros convexos más simples, para la simulación física.
Su tarjeta gráfica produce perspectiva con las transformaciones que realiza. Eso es diferente de las transformaciones realizadas en física, que no tienen nada que ver con la perspectiva como tal: es simplemente calcular posiciones y orientaciones básicas en su mundo. Si conoce MVC, comprenderá que existe una clara diferencia entre los datos que tiene en su aplicación y cómo presenta esos datos.
La industria de la tecnología informática está impulsada por la necesidad, y aunque la visualización es una necesidad casi universal, las simulaciones físicas no son universales como requisito o en términos de sus respectivas implementaciones.
Entonces, mi consejo es que deje de preocuparse por ir contra la corriente y comience a enfocarse en cómo hacer las dos cosas que debe hacer: renderización y física. No obtendrá los datos en la tubería de procesamiento de su tarjeta gráfica (CUDA / OpenCl son excepciones): inserta triángulos y datos de material, bombea su mundo 3D como imagen en movimiento.
Como último comentario, su pregunta no carece de sentido. El deseo de una base combinada para la física y el renderizado, y el hecho de que las matemáticas de punto flotante pueden ser mucho más lentas que el punto fijo, nos muestran por qué las tecnologías de voxel están experimentando un gran resurgimiento de interés: simplifican todo el mundo a la posición de rejilla. , poliedros convexos alineados a los ejes. Esto mejora enormemente el rendimiento, al reducir la cantidad de matemática vectorial de punto flotante necesaria para las operaciones físicas, ya que ahora está trabajando principalmente en una cuadrícula de índice entero, subdividible, instanciable espacialmente. Esta misma cuadrícula se puede usar tanto para renderizado como para física, particularmente porque puede usar diferentes resoluciones de cuadrícula para estos dos subsistemas distintos (cuando se usa una solución basada en octree como SVO).