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.