
Hola estimados foreros.
De un tiempo a esta parte había tenido la gran curiosidad por probar NVIDIA PhysX, y ahora que lo instale y lo hice funcionar en mi pc, les cuento que tal es.
PhysX, es un motor físico y kit de desarrollo (development kit), propietario de NVIDIA, diseñado para calcular en tiempo real procesos físicos complejos. Originalmente diseñado por AGEIA, la cual fue adquirida por NVIDIA.
En el comienzo, con AGEIA, existieron unas primeras tarjetas de proceso de físicas, que en resumen eran unas tarjetas dotadas de un procesador especifico para calcular el comportamiento físico (PPU - Physics processing Unit) de los objetos en un juego, en vez de poner una animación predefinida, o un cálculo físico procesado por el CPU, lo que ocupa tiempo del procesador.

Ageia’s Physics Processing Unit (PPU), Manufacturada por BFG Technologies
Por ejemplo, si en un shooter le disparas a una lata de bebida, la lata saltará en un par de direcciones predefinidas, o bien su movimiento será calculado por el CPU. En cambio con PhysX, la lata saltará de acuerdo a varios parametros físicos, entre otros el ángulo de incidencia de la bala, la distancia, y el calibre de la bala (por dar un ejemplo) todo calculado por el procesador dedicado a físicas, lo que en teoría liberaría al CPU de esta carga.
En la actualidad, ya no se fabrican estas tarjetas dedicadas, sin embargo, NVIDIA transportó y desarrolló el motor de físicas para ser ejecutado en sus GPU (Graphics processing unit). PhysX también puede ser ejecutado por el CPU, pero a expensas de un rendimiento inferior debido a las diferencias de arquitectura entre el CPU y el GPU.
Desde hace varias versiones de drivers, NVIDIA deshabilitó el proceso de PhysX cuando exista otra tarjeta "no nVidia" en el PC. Esto ha llevado a la búsqueda de una solución, la cual fue otorgada por un usuario del foro NGOHQ, (GenL) quien desarrollo un parche, que anula esta restricción, permitiendo a los usuarios que tienen por ejemplo una tarjeta grafica con GPU ATI (ahora en adelante se fabricaran con el nombre AMD solamente), poder instalar una segunda tarjeta gráfica NVIDIA para procesar PhysX.
Ahora algunos datos:
El proceso de fisicas por GPU no aumenta el rendimiento grafico de los juegos (no aumentan los FPS). eso es algo a considerar. Si bien libera al CPU del proceso físico de los objetos, implementar esto no va a aumentar los FPS de todos los juegos, y de hacerlo es un aumento mínimo y tal vez más notorio en CPUs de menor poder de calculo. Solo hará que en los juegos que soportan PhysX, los FPS no bajen tanto al activar estas características y/o activar ciertos objetos en la renderización de la escena.
Lo que hace, es que los juegos programados para funcionar con PhysX de NVIDIA, puedan utilizar esta característica, y así obtener efectos más abundantes y de mejor calidad respecto a físicas.
El PhysX de nvidia, lo que produce en los juegos es incorporar efectos visuales afectados por algunas leyes fisicas en la escena, tales como los trozos y astillas de madera que saltan y rebotan al explotar un barril o puerta, pedazos de muro que saltan y quedan en el suelo al recibir balazos, telas que se mueven y rasgan mas naturalmente como banderas o capas, o el movimiento del humo y la niebla al ser atravesado por un cuerpo, fragmentos de vidrio realistas y fluidos de aspecto volumetrico interactivo con el entorno, objetos móviles y personajes. PhysX se encarga de representar estos complejos movimientos de las distintas partículas en la escena utilizando el potencial de cálculo en paralelo del GPU.
Es por esto que los juegos que soportan PhysX, presentan detalles gráficos sometidos a leyes físicas, que en algunos casos son acelerados por una GPU nvidia, pudiendo usar muchos de estos efectos, en otros casos cuando no hay GPU nvidia, PhysX puede usar el CPU para su representación, claro que con menor cantidad de detalle ya que es un calculo grande, y en otros casos simplemente de no haber GPU nvidia no se puede utilizar y mencionados efectos simplemente no se recrean.
Qué pasa con los juegos que no usan PhysX de nvidia? no tienen físicas acaso? Claro que tienen, la mayoría de los juegos usan otros motores físicos (solo por nombrar uno, el motor Havok) que calculan fisicas para los objetos de la escena usando el CPU.
Simplemente NVIDIA marketea con el asunto de liberar al CPU de estos cálculos complejos, para que el CPU trabaje más libremente.
Utilizo el término "marketear" por un hecho que me llamó; la atención cuando lo leí: El proceso de físicas por GPU no es un proceso eficiente, debido a que las instrucciones utilizadas (x87 floating point instruction set (fp87)) son anacrónicas y provienen del co procesador matemático Intel 8070. Si estos mismos programas de NVIDIA PhysX estuviesen escritos para usar las instrucciones SSE o SSE2 de los CPU, se obtendría mucho mas rendimiento en físicas y sin usar GPU. De hecho, en consolas PhysX corre usando las extensiones AltiVec para procesar físicas, las cuales son muy similares a las instrucciones SSE. Por esto, Nvidia no tiene una razón "Técnica" para seguir usando las instrucciones X87, simplemente es un asunto de marketing, y se respaldan en la cantidad de procesos en paralelo que desarrollan sus tarjetas graficas, al incorporar una gran cantidad de Shader cores, o actualmente CUDA cores. Sin embargo sólo las tarjetas High End poseen una cantidad mayor.

Coprocesador matemático Intel 8087, una reliquia.
Como habilitar PhysX si tengo una ATI (AMD) en mi PC??? El procedimiento a continuación es un relato textual de mi experiencia, usando Windows 7, una Ati 5870 lightning como principal y una GTX260 Core 216 para físicas.
Bueno, como les había mencionado, el usuario GenL del foro NGOHQ, creó un parche, que elimina la restricción impuesta por NVIDIA, llamado "Hybrid PhysX Mod "
La última versión de este parche, la 1.04ff, y es compatible con las últimas versiones de drivers Nvidia (258.96) y PhysX Software System (9.10.0513) asegurando la compatibilidad con los títulos más recientes.
Procedimiento:
Primero: desinstalar TODOS los controladores existentes tanto de NVIDIA como de ATI. Usen todos los recursos que tengan para lograr este objetivo, limpiadores de registro y desinstaladores. Si pueden hacerlo con una instalación limpia de Windows (recién formateado) mejor.
Segundo: Instalar los drivers de la VGA principal (en este caso la ATI) y reiniciar.
Tercero: Instalar los drivers de la segunda VGA (en este caso la NVIDIA) y reiniciar.
Cuarto: Instalar el PhysX System Software y reiniciar.
Quinto: Aplicar el Hybrid PhysX mod 1.04ff, y reiniciar. Es seguro aplicar el mod mas de una vez, ya que detecta si los archivos ya han sido parchados, para hacer el proceso solamente 1 vez. esto es ideal cuando se actualiza o los drivers o el PhysX SS.
Sexto: comprobar que todo funciona utilizando el FluidMark (1.2.2).
En este paso me cabecee unos minutos, junto con el usuario Gaspar quien ya había hecho esto con los parches anteriores, porque al usar el Fluidmark, este procesaba las físicas con el CPU en vez del GPU... después de dar vuelta un rato, encontré en el FAQ de GenL la respuesta: en algunos programas y juegos, hay que borrar o renombrar uno o más archivos DLL relacionados con físicas, para forzar al programa/juego a que utilice las físicas del sistema en vez del que trae integrado. En este caso renombré el archivo PhysXDevice.dll, y así el fluidmark proceso las físicas usando el GPU nvidia.
Con esto se comprueba que el sistema funciona:

Datos anexos:
Con el ultimo Mod liberado, no hay que hacer nada mas aparte de lo que aquí se describe, con los parches anteriores había que poner un monitor en la tarjeta nvidia, o hacer un "fake display". esto ya no es necesario.
Tampoco es necesario ir al panel de control de nvidia y buscar la opción "habilitar PhysX en este dispositivo". Esta opción dejo de existir en los últimos drivers, y el Mod mismo activa esta opción.
El requerimiento mínimo para ejecutar PhysX acelerado por GPU es una tarjeta de la serie GeForce 8 o superior, con un mínimo de 32 cores y 256Mb de vRam. Sin embargo cada aplicación tiene sus propios requerimientos, y es así como algunos juegos andarán bien con una GT240 y otros se quedaran cortos hasta con una GX260 con 216 cores.
En general, y basándome en los comentarios de diversos foros, utilizando una Geforce 9800GT en adelante se obtiene una buena experiencia.
En la pagina de NVIDIA hay un listado con las tarjetas que soportan PhysX: Listado de Tarjetas NVIDIA que soportan PhysX
En la página de nZone, hay un listado oficial de los juegos que soportan PhysX: Listado oficial de Juegos que soportan PhysX. Esta en mantenimiento en estos momentos., por mientras pueden ver un listado parcial con algunos títulos recientes aca.
El listado no oficial de juegos, está el final de la pagina de Wikipedia. Sin embargo esta lista no es muy fidedigna.
Saludos!
Fuentes:
Aquí podrán encontrar información más específica.
Geeks3d.com
Nvidia.es
Realworldtech.com
NGOHQ.COM
Ozone3d.net
Este tema ha sido editado por KrameX: 12 February 2012 - 11:12 PM
Update





















