2017-11-22 2 views
1

응용 프로그램 (CPU 쪽)과 GPU 쪽의 경계가 혼란 스럽습니다. 누군가 게임에서 일반적으로 응용 프로그램이 담당하는 것이 무엇인지 이해할 수 있습니까?3D 게임에서 CPU와 GPU : 누가 무엇을하고 있습니까?

내 이해는 응용 프로그램이 렌더링 할 GPU의 프레임을 제출하고, 가장 기본적인 렌더링 형식의 버텍스 셰이더, 래스터 화 및 픽셀 셰이더와 관련된 프로세스입니다. 따라서 GPU에는 프레임간에 발생하는 개념이 없다고 생각합니다.

응용 프로그램이 모든 개체가 월드 공간에있는 위치를 추적하고 있다는 것을 의미합니까? 그리고 사용자가 캐릭터를 움직이면 (예를 들어) 응용 프로그램이 새 위치를 결정하여 GPU에 새로운 변환을 제출합니까?

특히 정점 쉐이더는 두 개의 정적 포즈를 기반으로 시간에 따라 모델에 애니메이션을 적용하는 모핑과 같은 작업에 사용할 수 있다는 점을 알고 혼란 스럽습니다.

답변

1

나는 최첨단 엔진과 접촉하지 않았지만 마지막으로 확인한 결과 게임 상태는 거의 대부분 CPU에 저장되고 데이터는 CPU에서 훨씬 더 자주 기록됩니다 GPU는 거의 자주 읽지 않습니다.

CPU에 저장된 중복 데이터를 포함 할 수도 있습니다 (드라이버가하는 일에 대해 이야기하지 않음). 예를 들어, 엔진은 CPU와 GPU 모두에 삼각형 메쉬를 저장하여 절두체 컬링, 충돌 감지 및 피킹과 같은 작업을 수행 할 수 있습니다. 이러한 중복성의 이유 중 하나는 GPU 코드에서 게임 로직의 대부분을 작성하는 것이 너무 어렵지는 않을지라도 어떤 경우에는 불가능하기 때문입니다. 예를 들어 GPU 측면에서 충돌 감지의 일부를 가속화 할 수는 있지만 물리적 시스템을 GPU 푸시 이벤트로 완전히 만들 수는 없습니다. 오디오 시스템의 물리 시스템에서 충돌 이벤트 (GPU 오디오 하드웨어와 통신 할 수 없음). 다른 하나는 GPU가 일반적으로 메모리 측면에서 더 제한적이라는 것입니다. 예를 들어, CPU가 게임 맵에 대한 모든 이미지 ("CPU 메모리"로 하드 드라이브 포함)를 저장할 수 있습니다. 활성 텍스처 데이터가 GPU에 중복되어 있습니다 (텍스처는 상황에 따라 더 낮은 해상도를 사용합니다).

GPU는 여전히 매우 전문적인 하드웨어입니다. 결국 키보드, 마우스, 게임 패드, 오디오 재생 또는 하드 드라이브에서 파일로드 등의 사용자 입력을 직접 읽을 수 없으므로 GPU에 Pong을 쓸 수 없습니다. CPU는 여전히 모든 것을 조정하는 "마스터 두뇌"와 같습니다.

트위닝 및 스키닝과 같은 것들은 GPU에서 계산되는 경우가 있지만 "상태 관리"와 다릅니다. CPU는 각 뼈대에 대한 행렬을 뼈 계층 구조에 저장 한 다음 해당 행렬과 변형되지 않은 버텍스 위치를 GPU에 전달하고 즉시 처리하도록 할 수 있습니다. 이 시나리오에서는 게임 상태가 GPU에 저장/관리되는 것이 아니므로 GPU가 프레임 단위로 즉석에서 데이터를 계산할 수 있습니다. 이러한 시나리오에서는 매우 빠르게 수행 할 수 있으며 필요하지도 않습니다 첫 번째 장소에 지속적으로 저장됩니다. 이 경우 CPU는 결과 데이터를 다시 읽지 않습니다.

일반적으로 GPU는 상태 관리를 위해 많이 사용되지 않습니다. 이 작업은 적합한 작업을 수행하는 데 필요한 장소에서 빠르게 작업을 수행하는 데 더 자주 사용됩니다. 거기에 상태가 저장되어있는 경우 CPU에 이미 충분한 데이터가 있으므로 임시 상태로 버리고 다시 생성 할 수 있습니다. 예외적으로 GPGPU 소프트웨어는 GPU에서 일부 응용 프로그램 상태를 독점적으로 저장 한 것으로 보았습니다. CPU가 GPU에서 읽는 것보다 CPU에서 더 많은 내용을 복사하는 대신 CPU에 복사하지 않고 게임을 생각하지는 않습니다. 꽤 많은 것을하고 있습니다.

그래, 일반적으로 GPU는 게임 세계와 주를 오히려 무시하고 있습니다. CPU는 텍스쳐 데이터와 메쉬 나 이미지의 VBO와 같은 복사 가능한 데이터를 일시적으로 여기 저기에 저장하고, GPU를 사용하여 신속하게 많은 양의 폐기 가능한 데이터를 계산하고 출력합니다. 영구 데이터를 저장하고 출력하기 위해 자주 사용되지는 않습니다.

내가 비유를 찾으려고하면 피자 식당의 비즈니스 관리자가 고객 주소를 지속적으로 저장하는 것처럼 보입니다. 그들은 고객에게 피자 배달을 위해 빠른 오토바이로 피자 배달원에게 일시적으로 주소를 알려줄 수도 있지만 피자가 모든 고객의 주소를 추적 할 수 있도록 독점적으로 배달하지는 않습니다. (피자를 배달하는 사람들은 피자를 배달하는 모든 단일 고객 주소를 기억하지 못할 수도 있고, 관리자는 고객 데이터를 저장하기위한 데이터베이스가있는 컴퓨터를 가지고있을 수도 있습니다.) 그것은 대부분 비즈니스 관리자 -> 피자 배달원으로부터 단방향 통신입니다. 따라서 빠른 오토바이를 착용 한 피자 녀석이이 주소로 피자를 배달합니다. GPU에서 CPU에 이르기까지 비슷한 점이 있습니다. "안녕하세요, GPU, 빨리 계산 해보세요. 여기에 필요한 데이터가 있습니다. "

+1

깊이있는 설명에 감사드립니다. 사실을 명확히하는 데 정말로 도움이되었습니다. – Colin

관련 문제