GPU와 CPU의 메시 조작


9

약간 궁금한 점이 있습니다-CPU 또는 쉐이더에서 메쉬 조작을 어디에서 수행합니까? 나는 CPU에서 모든 것을하고 있었고 친구는 GPU쪽으로 물건을 옮기라고 제안했습니다.

GPU에서 본 애니메이션과 같은 작업을 수행하는 경우 메시를 어떻게 되 찾을 수 있습니까? (충돌 감지를하고 있기 때문에 ...)

답변:


13

이것은 일반적으로 GPU에서 발생하지만 두 가지 모두에 대한 상충 관계가 있으며 어느 것이 가장 적합한 지 결정하는 것은 귀하의 몫입니다.

GPU에서 조작하는 것은 메쉬 데이터를 한 번만 보내면된다는 것을 의미합니다. 그러면 매트릭스 변환을 보내서 변형시킬 수 있습니다. CPU-> GPU 사이에 필요한 대역폭을 크게 줄이므로 매우 좋습니다. 또한 하나 의 메시 사본 만 GPU에 업로드 하고 다양한 메시 인스턴스에 대해 변형을 적용 할 수 있습니다 . 그러나 "메시 정확도"충돌이 발생하기가 더 어렵습니다. 변환은 GPU에서 수행되므로 CPU에서 테스트 할 수 없습니다.

CPU에서 조작하면 변환 된 메시에 액세스 할 수 있습니다. 알아야 할 모든 것에 액세스 할 수 있습니다. 그러나 매 메시마다 전체 메시를 GPU에 업로드해야합니다. 또한 해당 메시의 인스턴스에 대해 변형 된 메시를 업로드해야합니다 . 요약하면 여기에 찬반 양론의 철저한 목록이 없습니다.

  • GPU의 장점

    • 메쉬 데이터를 한 번 업로드
    • 여러 인스턴스에 맞게 변환
    • 매트릭스 변환 만 보내면됩니다
    • GPU는 이러한 유형의 것들을 병렬 처리하는 데 매우 능숙합니다.
  • GPU에 대한 단점

    • 변환 된 메시는 CPU에서 테스트 할 수 없습니다
  • CPU의 장점

    • 변형 된 메시는 충돌 테스트 및 기타 필요한 사항에 사용할 수 있습니다.
  • CPU에 대한 단점

    • 각 프레임마다 변환 된 전체 메시를 업로드해야 함
    • 메시의 각 인스턴스에 대해 전체 메시를 업로드해야합니다.

그러나 GPU의 단점을 극복하는 방법이 있습니다.

  • 메쉬의 정확한 충돌이 없습니다 . 전체 메시에 대한 경계 상자와 같이 "충분히 근접한"것을 사용 하거나 메시의 각 본에 경계 상자를 갖습니다. 아래는 메쉬에 대한 GPU 변환과 메쉬를 나타내는 축 정렬 경계 상자에 대한 CPU 변환에 사용됩니다. 비 AABB를 사용하면 훨씬 정확한 범위를 얻을 수 있습니다.

고블린 뼈

  • 메시의 정확한 충돌이 필요한 경우에만 CPU에서 메시의 사본을 변환하십시오 . 바운딩 박스 충돌이 true를 반환 한 후 GPU의 변형과 일치하도록 메시를 변형 한 다음 충돌을 확인하여보다 정확한 충돌 데이터를 얻습니다.

올인원 나는 왜 GPU에서 변환하는 것이 더 일반적인지 알 수 있다고 가정합니다.


1
호기심에서, 현대 게임에서 메시의 복잡성, 현대 CPU의 힘 및 멀티 코어 기능 및 CPU가 해야하는 다른 작업을 고려할 때 실제로 메쉬가 CPU에서 변형되는 것이 실용적입니까? 또한 GPU에 업로드하는 속도가 너무 느려서이 아이디어가 시작되지 않을까요?
R4D4

게임에 따라 다르지만 보통 복잡도를 넘는 게임에는 실용적이지 않습니다. GPU에서 변환을 쉽게 선택할 수있는 경우 CPU에서 변환을 수행하는 데 필요한 추가 리소스 요구 사항을 정당화 할 이유를 찾기가 어렵습니다. 문제는 매 프레임마다 변환 된 메시를 GPU로 전송하는 데 더 많은 비용이 들기 때문입니다. 소프트웨어의 경우와 마찬가지로 복잡성과 성능을 결정하는 것은 개발자의 몫입니다.
MichaelHouse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.