2012-04-08 1 views
1

문제의 단순화를 위해 구체를 생각해 봅시다. 저는 구가 있고 실행 전에 반경, 위치 및 삼각형 수를 알고 있다고 가정 해 봅시다. 삼각형 수가 충분히 큽니다 (예 : ~ 50k 삼각형).더 빠른 것은 : 실행 또는 테셀레이션 전에 세부적인 메쉬 생성?

일반적으로이 구형 메쉬를 작성하고 그래픽 카드에 50k 삼각형을 모두 스트리밍하는 것이 더 빠르지 않습니까? 아니면 단일 구석 (구의 중심을 나타냄)을 보내고 테셀레이션 및 지오메트리 셰이더를 사용하는 것이 더 빠릅니까? GPU에서 구체를 만드시겠습니까?

내가 100 개 이상의 구가 서로 다른 위치에 있다면 여전히 빨라질까요? 선체/지오메트리 셰이더를 사용하여 인스턴스화 할 수있는 무언가를 만들 수 있습니까?

답변

1

나는이 일을 동시에 진행하고 있습니다. FPS의 측면에서

은 미리 계산 방법은 것이 상황에서 빠른 당신이 (다른 모델 같은) 하나의 거대한 50K 삼각형 영역의 페이로드를 덤프하고 거기에서 여러 위치에 그것을 그릴 수 있기 때문에 .

모든 삼각형이 수식에서 프레임 당 여러 번 생성되므로 테셀레이션 메서드가 느려질 수 있습니다.

+0

귀하의 주장이 보편적으로 적용될만큼 구체적이지 않습니다. 하드웨어 가속 테셀레이션의 이점은 호스트 (CPU)에서 GPU로 상호 연결을 통해 전송해야하는 지오메트리를 최소화하는 것입니다. 구형과 같은 정적 데이터를 VBO 또는 유사한 방식으로 GPU에 전송하는 경우 속도는 비슷합니다. 좀 더 동적 인 지오메트리가 필요하다면, 특히 다수의 객체에 대해서는 GPU 제한에 비해 시스템 버스가 제한 될 수 있습니다. – radical7

+0

내 대답은이 질문을 위해 특별히 제작되었습니다 ... Tessellation은/always/slower입니다. 나는 그것을 위해서만 편집했습니다. –

3

테셀레이션은 분명히 중요합니다. 특히 하이트 맵 (heightmap)에서의 변위와 결합되었을 때. 귀하의 질문에 설명 된 고립 된 환경은 귀하의 질문에 완전히 답하지 않을 수밖에 없습니다.

테셀레이션을 사용하기 전에 CPU 폴리/삼각형 경계가 될 것이므로 GPU 활용을 시작하여 게임/장면의 전반적인 삼각형을 늘릴 수 있어야합니다. 계산은 GPU에서 매우 빠르므로 예를 들어 테셀레이션 다중 하위 분할 수준을 사용하는 것이 좋습니다. 가끔은 200 개의 3 차원 평면에서 3 ~ 4 배를 세분화하는 데 만족했습니다.

주로 환경/정적 메쉬 장면 개체에 테셀레이션이 사용되므로 CPU 바인딩이되지 않고도 문자 및 기타 움직이는/애니메이션 모델에 트라이를 보낼 수 있습니다.

학습 곡선을 돕기 위해 테셀레이션 예제를위한 Unity3D 및 CryEngine과 같은 체크 아웃 엔진.