PhysX

PhysX
Información sobre la plantilla
Concepto:PhysX es un motor propietario de capa de software intermedia y un kit de desarrollo diseñados para llevar a cabo cálculos físicos muy complejos.


PhysX. Es un motor propietario de capa de software intermedia o "middleware" y un kit de desarrollo diseñados para llevar a cabo cálculos físicos muy complejos. Conocido anteriormente como la SDK de NovodeX, fue originalmente diseñado por AGEIA y tras la adquisición de AGEIA, es actualmente desarrollado por Nvidia e integrado en sus chips gráficos más recientes.

Descripción

El término PhysX también puede referirse a la tarjeta PPU (Unidad de Procesamientos de Física en sus siglas en inglés) la cual proporciona aceleración de hardware cuando es integrada en tarjetas gráficas (estas tarjetas liberan a la CPU de tareas propias del renderizado de imagen proporcionando imágenes más fluidas). Por tanto, es importante saber si nos referimos a la parte hardware o software (middleware) cuando haya una referencia al término PhysX dado a que es fuente común de confusión.

Especificaciones

  • 125 millones de transistores.
  • 182 mm² de tamaño.
  • Memoria: 128 MBGDDR3RAM en interfaz de 128 bits.
  • Versiones de Asus y BFG tienen 128 MBGDDR3RAM.
  • Interfaz: PCI
  • Sphere: 530 millones por segundo (capacidad máxima).
  • Convex: 530 000 por segundo (capacidad máxima).
  • Ancho de banda de Instrucciones (picos): 20 billones por segundo.

Las tarjetas de Nvidia que soportan PhysX son las series GeForce 8 en adelante. También lo soportan las tarjetas gráficas de portátiles desde la Serie 8M en adelante (En ambos casos, siempre y cuando tengan al menos 32 núcleos de procesamiento y 256 MB de memoria de vídeo dedicada).

Cómo funciona

El motor de juegos se le habilita un plugin llamado APEX que actúa como un puente entre dicho motor y el PhysX SDK. Este plugin permite traducir el nivel de detalle seleccionado por el jugador en un conjunto de parámetros que el SDK entiende, así permitiendo al SDK concentrarse en enviar los comandos físicos al hardware habilitado (CPUs, GPUs o PPU) como lo muestra la gráfica a continuación:

En caso de que no se haya implementado APEX, la comunicación que hay va directo del motor de juegos al API de PhysX. La consecuencia de esto, es que solo se permite habilitar o deshabilitar la física por hardware sin tener en cuenta las prestaciones del hardware que se está empleando. Este modo sin APEX es lo que ocurre en la actualidad por ejemplo con UnrealTournament 3 que solo tiene una caja para habilitar o deshabilitar física por hardware en las opciones del juego.

NVIDIA PhysX

NVIDIA habla que hay varios modos para usar PhysX de ahora en adelante y los modos son los siguientes:

Sin aceleración: Los cálculos de física son procesados por el CPU

Aceleración por GPU que consta de tres modos:

Un solo GPU: para tanto cálculos de física como de gráficas en tres dimensiones

Modo SLI: Dos GPUs realizan cálculos de física y gráficos de forma simultanea

Multi-GPU: Un GPU se dedica a procesar únicamente gráficos y el otro únicamente física

AgeiaPhysX: Cálculos físicos por medio del ya descontinuado PPU de la ya inexistente AGEIA

Rol que cumple el CPU cuando PhysX es acelerado por el GPU

El modelo de computación heterogénea que plantea NVIDIA habla que cada chip es ideal para ciertas tareas. Por ende, lo ideal es usarlos en conjunto explotando las mejores propiedades de cada uno. Así, la parte del código de PhysX que se presta más para un chip de procesamiento general es ejecutado en el CPU y el código que se presta para tareas paralelas es ejecutado en el GPU.

Limitaciones de esta tecnología y posibles soluciones a corto o mediano plazo

El reto más grande que vemos es la necesidad de educar a los desarrolladores de juegos de manera abierta acerca del potencial de esta tecnología y sus diferentes usos en los juegos. Además, tenemos mucho trabajo por delante para alcanzar el nivel artístico visto en películas en donde, literalmente, se observan cientos de miles de objetos rígidos y millones de partículas.

Fuente

  • PhysX[1]. Consultado 12/02/2019
  • Physics engines[2]. Consultado 12/02/2019