2014-04-24 2 views
2

Maya promo video은 GPU 캐시가 사용자가 응용 프로그램을 더 빨리 실행하는 것에 어떤 영향을 주는지 설명합니다. Cinder와 같은 프레임 워크에서 우리는 비디오 카드로 전송하는 각 프레임 업데이트의 장면에있는 모든 지리 정보를 다시 그립니다. 그래서 프로그래머 전람에서 GPU 캐싱 뒤에있는 것이 무엇인지 알아 봅니까? 그런 기술 뒤에있는 OpenGL/DirectX API는 무엇입니까? GPU 메모리에 내 메시를 "캐시"하는 방법?OpenGL/DirectX 프로그래머에서 "GPU 캐시"란 무엇입니까?

+0

이 가능성이 삼각형을 최적화를 의미 포스트 T & L 캐시 지역에 대한 메쉬. 예전에는이 캐시가 상대적으로 작은 FIFO 대기열이었고 최적의 활용을 달성하기 위해 스트립 순서로 정점을 정렬해야했습니다. 이것은 더 정교한 모델링 소프트웨어가 할 수있는 일이지만 요즘은 관련성이 거의 없습니다. –

답변

1

먼저, 을 사용하는 "GPU 캐시"용어는 카드에 단순히 저장된 그래픽 데이터를 말합니다. 은 Maya에서 장치 독립적 저장 및 렌더링을 위해 메쉬를 최적화하는 것을 의미합니다. 카드 제조업체의 경우 "GPU 캐시"라는 개념이 다릅니다 (이 경우 L1 또는 L2 CPU 캐시와 비슷한 의미입니다).

최종 질문에 답하십시오 : OpenGL 용어를 사용하여 일반적으로 VBO (정점 버퍼 개체)를 만듭니다. 그러면 카드에 데이터가 저장됩니다. 그런 다음 그릴 때 카드에 해당 버퍼를 사용하도록 지시 할 수 있습니다.

이렇게하면 메인 (CPU) 메모리에서 그래픽 (GPU) 메모리로 메쉬 데이터를 복사하는 오버 헤드를 피할 수 있습니다. 메쉬 데이터를 변경하지 않고 메쉬를 여러 번 그려야하는 경우 훨씬 더 효율적입니다.

2

내 지식에 따라 OpenGL이나 DirectX에서 GPU 캐시에 있을지, 저장하지 않고, 추적 할 것인지를 직접 지정할 방법이 없습니다. 그러나 캐시를 최대한 활용할 수 있도록 유지 관리해야하는 방법론이 있습니다. 이들 중 일부는 다음을 포함합니다 :

  • 배치, 배치, 배치.
  • 직접 데이터를 GPU에 업로드
  • 메쉬에서 버텍스 지역성을 최대화하기 위해 인덱스를 정렬하십시오.
  • 상태 변경을 최소로 유지하십시오.
  • 쉐이더 변경을 최소한으로 유지하십시오.
  • 질감을 최소한으로 유지하십시오.
  • 가능하면 최대 텍스처 압축을 사용하십시오. (텍셀 샘플링 지역을 극대화하기 위해) 가능한
  • 사용 밉 매핑은

은 단일 GPU 캐시가 없다는 것을 명심하는 것이 중요하다. 여러 개의 (정점, 텍스처 등) 독립 캐시가 있습니다.

출처 :

OpenGL SuperBible - Memory Bandwidth and Vertices

GPU Gems - Graphics Pipeline Performance

GDC 2012 - Optimizing DirectX Graphics