PhysX

[섬네일|[BFG 테크놀로지스|BFG 피직스 카드]]
**피직스**(PhysX)는 엔비디아가 엔비디아 게임웍스 소프트웨어 제품군의 일부로 개발한 오픈 소스 실시간 물리 엔진 미들웨어 SDK이다.

초기에는 PhysX를 지원하는 비디오 게임이 PhysX PPU (에이지아가 설계한 확장 카드)에 의해 하드웨어 가속되도록 의도되었다. 그러나 에이지아가 엔비디아에 인수된 후, 전용 PhysX 카드는 CUDA가 활성화된 지포스 GPU에서 API를 실행하는 방식으로 단종되었다. 두 경우 모두 하드웨어 가속은 CPU에서 물리 계산을 오프로드하여 다른 작업을 수행할 수 있도록 했다.

PhysX 및 기타 미들웨어 물리 엔진은 오늘날 많은 비디오 게임에서 사용되는데, 이는 게임 개발자가 예를 들어 연체동역학을 수행하기 위해 고전역학을 구현하는 자체 코드를 작성할 필요 없이 개발 시간을 절약할 수 있도록 하기 때문이다.

## 역사
오늘날 PhysX로 알려진 것은 NovodeX라는 물리 시뮬레이션 엔진으로 시작되었다. 이 엔진은 스위스 회사이자 취리히 연방 공과대학교의 스핀오프인 NovodeX AG에 의해 개발되었다. 2004년, 에이지아는 NovodeX AG를 인수하고 CPU를 보조하는 물리 계산 가속화 하드웨어 기술 개발을 시작했다. 에이지아는 이 기술을 PhysX라고 불렀고, SDK는 NovodeX에서 PhysX로 이름이 변경되었으며, 가속기 카드는 PPU(Physics Processing Units)로 불렸다.

PhysX 기술을 사용한 최초의 비디오 게임은 2005년 9월 러시아에서만 출시된 더 스탈린 서브웨이이다.

2008년, 에이지아는 그래픽 기술 제조업체인 엔비디아에 인수되었다. 엔비디아는 지포스 그래픽 카드 라인업에서 PhysX 하드웨어 가속을 활성화하기 시작했고 결국 에이지아 PPU에 대한 지원을 중단했다.

PhysX SDK 3.0은 2011년 5월에 출시되었으며, SDK의 중요한 재작성을 나타내며, 더 효율적인 멀티스레딩과 모든 지원 플랫폼을 위한 통합 코드 베이스와 같은 개선 사항을 가져왔다.

GDC 2015에서 엔비디아는 PhysX 소스 코드를 깃허브에 공개했지만, developer.nvidia.com에서 등록해야 했다. 이 사유 소프트웨어 SDK는 Windows, 리눅스, MacOS, iOS 및 Android 플랫폼에서 상업적 및 비상업적 용도로 개발자에게 무료로 제공되었다.

2018년 12월 3일, PhysX는 3-절 BSD 라이선스로 오픈 소스화되었지만, 이 변경 사항은 컴퓨터 및 모바일 플랫폼에만 적용되었다.

2022년 11월 8일, 오픈 소스 릴리스가 PhysX 5로 업데이트되었으며, 동일한 3-절 BSD 라이선스를 따른다.

2025년 2월, 지포스 RTX 50 시리즈의 32비트 CUDA 애플리케이션 지원이 중단되어 32비트 타이틀에서 GPU 가속 PhysX가 작동하지 않게 되었다. 이로 인해 미러스 엣지 및 보더랜드 2와 같은 타이틀에서 GPU PhysX 옵션이 CPU에 의해 처리되어 성능 저하가 발생했다.

## 특징
PhysX 엔진 및 SDK는 마이크로소프트 윈도우, MacOS, 리눅스, 플레이스테이션 3, 플레이스테이션 4, 엑스박스 360, 엑스박스 원, Wii, iOS 및 Android에서 사용할 수 있다.

PhysX는 다중 스레드 물리 시뮬레이션 SDK이다. 강체 동역학, 연체동역학 (찢어지는 옷과 가압된 옷 포함), 래그돌 피직스 및 캐릭터 컨트롤러, 차량 동역학, 입자 시스템 및 부피 유체 시뮬레이션을 지원한다.

## 하드웨어 가속
### PPU
물리 처리 장치 (PPU)는 CPU의 계산 부담, 특히 물리와 관련된 계산 부담을 덜어주기 위해 특별히 설계된 프로세서이다. PhysX PPU는 PCI 또는 PCIe 카드 형태로 ASUS, BFG 테크놀로지스, 델 및 ELSA Technology에서 소비자에게 제공되었다.

PhysX SDK 버전 2.8.3부터 PPU 카드 지원이 중단되었고, PPU 카드는 더 이상 제조되지 않는다. 에이지아가 설계한 PhysX PPU 독립형 카드의 마지막 버전은 전용 9800GTX와 거의 동일한 PhysX 성능을 가졌다.

### GPU
엔비디아가 에이지아를 인수한 후, PhysX 개발은 PPU 확장 카드에서 벗어나 현대 GPU의 GPGPU 기능에 초점을 맞추었다.

현대 GPU는 컴퓨터 그래픽을 조작하고 표시하는 데 매우 효율적이며, 고도로 병렬적인 구조는 PhysX를 사용하여 물리 시뮬레이션을 가속화하는 데 일반 CPU보다 더 효과적이다.

모든 CUDA 지원 지포스 그래픽 카드(최소 32코어 및 최소 256MB 전용 그래픽 메모리를 갖춘 8-시리즈 또는 이후 GPU)는 전용 PhysX 카드를 설치할 필요 없이 PhysX를 활용할 수 있다.

## APEX
엔비디아 APEX 기술은 PhysX SDK를 기반으로 하는 다중 플랫폼 확장 가능한 동역학 프레임워크이다. 이 기술은 2010년 8월 마피아 II에서 처음 소개되었다. 엔비디아 APEX는 APEX Destruction, APEX Clothing, APEX Particles, APEX Turbulence, APEX ForceField 모듈로 구성되며, APEX Vegetation은 2011년에 중단되었다.

버전 1.4.1부터 APEX SDK는 더 이상 사용되지 않는다.

## 엔비디아 FleX
FleX는 실시간 시각 효과를 위한 입자 기반 시뮬레이션 기술이다. 전통적으로 시각 효과는 강체, 유체, 의류 등을 위한 전문 솔버를 사용하여 생성된 요소들의 조합으로 만들어진다. FleX는 모든 객체 유형에 대해 통합된 입자 표현을 사용하기 때문에, 서로 다른 시뮬레이션된 물질들이 원활하게 상호작용할 수 있는 새로운 효과를 가능하게 한다. 이러한 통합 물리 솔버는 오프라인 컴퓨터 그래픽스 세계의 주요 요소이며, 오토데스크 마야의 nCloth 및 오토데스크 소프트이미지의 Lagoa와 같은 도구들이 널리 사용된다. FleX의 목표는 GPU의 성능을 사용하여 이러한 오프라인 애플리케이션의 기능을 실시간 컴퓨터 그래픽스로 가져오는 것이다.

## Real World Technologies의 비판
2010년 7월 5일, Real World Technologies는 PhysX 아키텍처에 대한 분석을 발표했다. 이 분석에 따르면, 당시 PhysX 애플리케이션에 사용된 대부분의 코드는 멀티스레딩 최적화 없이 X87 명령어를 기반으로 했다. 이는 CPU에서 PhysX 코드를 실행할 때 상당한 성능 저하를 야기할 수 있었다. 이 기사는 SSE 명령어를 사용하여 PhysX를 재작성하면 CPU PhysX와 GPU PhysX 간의 성능 불일치를 크게 줄일 수 있다고 제안했다.

Real World Technologies의 분석에 대한 응답으로, PhysX의 프로덕트 매니저인 마이크 스콜론스(Mike Skolones)는 대부분의 게임이 먼저 콘솔용으로 개발된 다음 PC로 포팅되기 때문에 SSE 지원이 뒤쳐졌다고 말했다. 결과적으로, 현대 컴퓨터는 최적화가 거의 또는 전혀 없어도 콘솔보다 이러한 게임을 더 빠르고 잘 실행한다.
엔비디아의 수석 PR 매니저인 브라이언 델 리조(Bryan Del Rizzo)는 멀티스레딩이 이미 CPU PhysX 2.x에서 사용 가능했으며, 개발자가 이를 활용하는 것은 개발자의 몫이었다고 설명했다. 그는 또한 자동 멀티스레딩과 SSE가 PhysX SDK 버전 3에서 도입될 것이라고 밝혔다.

PhysX SDK 3.0은 2011년 5월에 출시되었으며, SDK의 중요한 재작성을 나타내며, 더 효율적인 멀티스레딩과 모든 지원 플랫폼을 위한 통합 코드 베이스와 같은 개선 사항을 가져왔다.

## 사용

### 비디오 게임에서의 PhysX
PhysX 기술은 언리얼 엔진 (버전 3 이상), 유니티, 게임브리오, Vision (버전 6 이상), Instinct Engine, 판다3D, Diesel, 토크, 히어로엔진 및 BigWorld와 같은 게임 엔진에서 사용된다.

몇 안 되는 주요 물리 엔진 중 하나로서, 더 위쳐 3: 와일드 헌트, 워프레임, 킬링 플로어 2, 배트맨: 아캄 나이트, 플래닛사이드 2 및 보더랜드 2와 같은 많은 게임에서 사용된다. 이 게임들의 대부분은 CPU를 사용하여 물리 시뮬레이션을 처리한다.

하드웨어 가속 PhysX에 대한 선택적 지원을 제공하는 비디오 게임은 종종 찢어지는 옷감, 동적 연기 또는 시뮬레이션된 입자 잔해와 같은 추가 효과를 포함한다.

### 기타 소프트웨어에서의 PhysX
PhysX를 지원하는 기타 소프트웨어는 다음과 같다:
* 액티브 월드 (AW), Windows에서 클라이언트가 실행되는 3D 가상 현실 플랫폼
* 아마존이 개발한 3D 게임 개발 엔진 아마존 럼버야드
* 오토데스크 3ds 맥스, 오토데스크 마야 및 오토데스크 소프트이미지, 컴퓨터 애니메이션 스위트
*DarkBASIC Professional (DarkPHYSICS 업그레이드 포함), 게임 개발을 위한 프로그래밍 언어
*DX Studio, 대화형 3D 그래픽 생성을 위한 통합 개발 환경
*ForgeLight, 이전 소니 온라인 엔터테인먼트가 개발한 게임 엔진.
* 퓨처마크의 3D마크06 및 밴티지 벤치마킹 도구
*Microsoft Robotics Studio, 로봇 제어 및 시뮬레이션 환경
* 엔비디아의 SuperSonic Sled 및 Raging Rapids Ride, 기술 데모
* OGRE (NxOgre 래퍼를 통해), 오픈 소스 렌더링 엔진
*PAL (소프트웨어), 물리 시뮬레이션 API 추상화 시스템 (PhysX를 위한 COLLADA 및 Scythe Physics Editor 지원 제공)
*Rayfire, 오토데스크 3ds 맥스용 플러그인으로 파쇄 및 기타 물리 시뮬레이션 가능
*Physics Engine Evaluation Lab, 물리 엔진을 평가, 비교 및 벤치마킹하도록 설계된 도구.
* 에픽게임즈의 언리얼 엔진 게임 개발 소프트웨어. 언리얼 엔진 4.26부터 PhysX는 공식적으로 더 이상 사용되지 않는다.
*Unity ApS의 유니티. 유니티의 데이터 중심 기술 스택은 PhysX를 사용하지 않는다.

## 같이 보기
* 하복
* 오픈지엘

## 각주

## 외부 링크
* 

분류:가상 현실
분류:컴퓨터 물리 엔진
분류:엔비디아 소프트웨어