PhysX - PhysX

PhysX
NVIDIA PhysX Logo.png
Autor (es) original (is) NovodeX AG ( ETH Zurique )
Desenvolvedor (s) Nvidia Corporation
(desde 2008)
Ageia
(2004-2008)
NovodeX AG
(2001-2004)
Versão estável
9.21.0713 / 12 de outubro de 2021 ( 2021-10-12 )
Repositório https://github.com/NVIDIAGameWorks/PhysX
Sistema operacional Microsoft Windows , macOS , Linux , PlayStation 2 , PlayStation 3 , PlayStation 4 , Xbox 360 , Xbox One , Wii , iOS , Android
Modelo Simulação física
Licença BSD-3
Local na rede Internet Site de desenvolvedor Nvidia PhysX

PhysX é um open-source em tempo real motor de física middleware SDK desenvolvido pela Nvidia como parte da Nvidia GameWorks suite de software .

Inicialmente, os videogames com suporte para PhysX deveriam ser acelerados pelo PhysX PPU ( placas de expansão projetadas pela Ageia ). No entanto, após a aquisição da Ageia pela Nvidia, as placas PhysX dedicadas foram descontinuadas em favor da API ser executada em GPUs GeForce habilitadas para CUDA . Em ambos os casos, a aceleração de hardware permitiu o descarregamento de cálculos físicos da CPU , permitindo-lhe executar outras tarefas em seu lugar.

PhysX e outros motores de física de middleware são usados ​​na grande maioria dos videogames de hoje porque eles liberam os desenvolvedores de jogos de ter que escrever seu próprio código que implementa a mecânica clássica (física newtoniana) para fazer, por exemplo, a dinâmica do soft body .

História

O que é conhecido hoje como PhysX originou-se como um mecanismo de simulação de física chamado NovodeX. O motor foi desenvolvido pela empresa suíça NovodeX AG, uma spin-off da ETH Zurich . Em 2004, a Ageia adquiriu a NovodeX AG e começou a desenvolver uma tecnologia de hardware que poderia acelerar os cálculos físicos, auxiliando a CPU. A Ageia chamou a tecnologia de PhysX, o SDK foi renomeado de NovodeX para PhysX e as placas aceleradoras foram chamadas de PPUs (Physics Processing Units).

O primeiro jogo a usar o PhysX foi Bet On Soldier: Blood Sport (2005).

Em 2008, a Ageia foi adquirida pelo fabricante de tecnologia gráfica Nvidia. A Nvidia começou a habilitar a aceleração de hardware PhysX em sua linha de placas gráficas GeForce e, eventualmente, abandonou o suporte para PPUs Ageia.

PhysX SDK 3.0 foi lançado em maio de 2011 e representou uma reescrita significativa do SDK, trazendo melhorias como multithreading mais eficiente e uma base de código unificada para todas as plataformas suportadas.

No GDC 2015 , a Nvidia disponibilizou o código-fonte do PhysX no GitHub , mas exigiu o registro em developer.nvidia.com. O SDK proprietário foi fornecido aos desenvolvedores gratuitamente para uso comercial e não comercial nas plataformas Windows , Linux , macOS , iOS e Android .

Em 3 de dezembro de 2018, o PhysX tornou-se open source sob uma licença BSD de 3 cláusulas , mas esta mudança se aplicava apenas a computadores e plataformas móveis.

PhysX 5.0 foi anunciado em dezembro de 2019, mas não foi lançado ao público devido à pandemia COVID-19 .

Recursos

O mecanismo PhysX e o SDK estão disponíveis para Microsoft Windows, macOS, Linux, PlayStation 3 , PlayStation 4 , Xbox 360 , Xbox One , Wii , iOS e Android.

PhysX é um SDK de simulação de física multithread. Suporta dinâmica de corpo rígido , dinâmica de corpo suave (como simulação de tecido , incluindo tecido rasgado e pressurizado), bonecos de pano e controladores de personagem, dinâmica de veículo, partículas e simulação de fluido volumétrico.

Aceleraçao do hardware

Comparação dos níveis de física no Mafia II.
(PC) A imagem superior mostra como os detritos são simulados no Mafia II quando PhysX é colocado no nível mais alto nas configurações do jogo. A imagem inferior mostra uma cena semelhante com PhysX voltado para o nível mais baixo.

PPU

Uma unidade de processamento de física (PPU) é um processador especialmente projetado para aliviar a carga de cálculo na CPU, especificamente cálculos envolvendo física. Os PPUs PhysX foram oferecidos aos consumidores na forma de placas PCI ou PCIe pela ASUS , BFG Technologies , Dell e ELSA Technology .

A partir da versão 2.8.3 do PhysX SDK, o suporte para placas PPU foi abandonado e as placas PPU não são mais fabricadas. A última encarnação da placa autônoma PPU PhysX projetada pela Ageia tinha aproximadamente o mesmo desempenho PhysX de uma 9800GTX dedicada.

GPU

Após a aquisição da Ageia pela Nvidia, o desenvolvimento da PhysX se afastou das placas de extensão PPU e se concentrou nas capacidades GPGPU das GPUs modernas.

As GPUs modernas são muito eficientes na manipulação e exibição de gráficos de computador, e sua estrutura altamente paralela os torna mais eficazes do que CPUs de uso geral para acelerar simulações físicas usando PhysX.

Qualquer placa gráfica GeForce preparada para CUDA (GPU série 8 ou posterior com um mínimo de 32 núcleos e um mínimo de 256 MB de memória gráfica dedicada) pode aproveitar as vantagens do PhysX sem a necessidade de instalar uma placa PhysX dedicada.

ÁPICE

A tecnologia Nvidia APEX é uma estrutura dinâmica escalonável de plataforma múltipla construída em torno do PhysX SDK. Foi introduzido pela primeira vez no Mafia II em agosto de 2010. O APEX da Nvidia compreende os seguintes módulos: APEX Destruction, APEX Clothing, APEX Particles, APEX Turbulence, APEX ForceField e anteriormente APEX Vegetation que foi suspenso em 2011.

A partir da versão 1.4.1, o APEX SDK foi descontinuado.

Nvidia FleX

FleX é uma técnica de simulação baseada em partículas para efeitos visuais em tempo real. Tradicionalmente, os efeitos visuais são feitos usando uma combinação de elementos criados usando solvers especializados para corpos rígidos, fluidos, roupas, etc. Como o FleX usa uma representação de partícula unificada para todos os tipos de objetos, ele permite novos efeitos onde diferentes substâncias simuladas podem interagir umas com as outras perfeitamente. Esses solucionadores de física unificados são um grampo do mundo da computação gráfica off - line , onde ferramentas como o nCloth do Autodesk Maya e o Softimage 's Lagoa são amplamente utilizadas. O objetivo do FleX é usar o poder das GPUs para trazer os recursos desses aplicativos offline para computação gráfica em tempo real.

Críticas de tecnologias do mundo real

Em 5 de julho de 2010, a Real World Technologies publicou uma análise da arquitetura PhysX. De acordo com esta análise, a maior parte do código usado nos aplicativos PhysX na época era baseado em instruções x87 sem qualquer otimização multi-threading. Isso pode causar quedas significativas de desempenho ao executar o código PhysX na CPU. O artigo sugeriu que uma reescrita de PhysX usando instruções SSE pode diminuir substancialmente a discrepância de desempenho entre CPU PhysX e GPU PhysX.

Em resposta à análise da Real World Technologies, Mike Skolones, gerente de produto da PhysX, disse que o suporte SSE foi deixado para trás porque a maioria dos jogos são desenvolvidos primeiro para consoles e depois transferidos para o PC. Como resultado, os computadores modernos executam esses jogos mais rápido e melhor do que os consoles, mesmo com pouca ou nenhuma otimização. O gerente sênior de relações públicas da Nvidia, Bryan Del Rizzo, explicou que o multi-threading já estava disponível com CPU PhysX 2.x e que cabia ao desenvolvedor fazer uso dele. Ele também afirmou que multithreading automático e SSE seriam introduzidos com a versão 3 do PhysX SDK.

PhysX SDK 3.0 foi lançado em maio de 2011 e representou uma reescrita significativa do SDK, trazendo melhorias como multithreading mais eficiente e uma base de código unificada para todas as plataformas suportadas.

Uso

PhysX em videogames

A tecnologia PhysX é usada por motores de jogo como Unreal Engine (versão 3 em diante), Unity , Gamebryo , Vision (versão 6 em diante), Instinct Engine, Panda3D , Diesel , Torque , HeroEngine e BigWorld .

Como um dos poucos motores de física principais, é usado em muitos jogos, como The Witcher 3: Wild Hunt , Warframe , Killing Floor 2 , Fallout 4 , Batman: Arkham Knight , Borderlands 2 , etc. A maioria desses jogos usa a CPU para processar as simulações de física.

Os videogames com suporte opcional para PhysX acelerado por hardware geralmente incluem efeitos adicionais, como tecido rasgável, fumaça dinâmica ou fragmentos de partículas simuladas.

PhysX em outro software

Outro software com suporte para PhysX inclui:

Veja também

Referências

links externos