리소스(Direct3D 10)
리소스는 Direct3D 파이프라인에서 액세스할 수 있는 메모리 내 영역입니다. 파이프라인이 메모리에 효율적으로 액세스하려면 파이프라인에 제공된 데이터(예: 입력 기하 도형, 셰이더 리소스, 텍스처 등)를 리소스에 저장해야 합니다. 모든 Direct3D 리소스가 파생되는 두 가지 리소스 종류는 버퍼와 질감입니다. 각 파이프라인 단계마다 최대 128개의 리소스를 활성화할 수 있습니다.
일반적으로 각 애플리케이션은 여러 개의 리소스를 만듭니다. 리소스의 예로는 버텍스 버퍼, 인덱스 버퍼, 상수 버퍼, 텍스처, 셰이더 리소스가 있습니다. 리소스를 사용할 수 있는 방법을 결정하는 다음과 같은 몇 가지 옵션이 있습니다. 강력한 형식이거나 형식이 없는 리소스를 만들 수 있습니다. 리소스의 읽기 및 쓰기 액세스가 모두 가능하도록 할지 여부를 제어할 수 있습니다. CPU나 GPU만 또는 CPU와 GPU 모두 리소스에 액세스할 수 있도록 할 수 있습니다. 당연히 속도와 기능의 상충 관계가 생깁니다. 리소스에 허용하는 기능이 많아질수록 성능은 떨어진다고 예상해야 합니다.
애플리케이션은 종종 많은 텍스처를 사용하기 때문에 Direct3D는 텍스처 관리를 간소화하기 위해 텍스처 배열의 개념도 도입합니다. 텍스처 배열에는 애플리케이션 내에서 또는 셰이더에 의해 인덱싱될 수 있는 하나 이상의 텍스처(모두 동일한 유형 및 차원)가 포함됩니다. 텍스처 배열을 통해 여러 개의 인덱스가 있는 단일 인터페이스를 사용하여 많은 텍스처에 액세스할 수 있습니다. 필요한 만큼 많은 텍스처 배열을 만들어 다양한 텍스처 유형을 관리할 수 있습니다.
애플리케이션이 사용할 리소스를 만든 후에 리소스를 사용할 파이프라인 단계에 각 리소스를 연결하거나 바인딩합니다. 이 작업은 포인터를 리소스로 가져가는 바인드 API를 호출하여 수행됩니다. 둘 이상의 파이프라인 단계에서 동일한 리소스에 액세스해야 할 수 있으므로 Direct3D 10에서는 리소스 뷰의 개념을 소개합니다. 뷰는 액세스할 수 있는 리소스 부분을 식별합니다. 공유 리소스의 바인딩 규칙을 따른다고 가정하면 m 뷰 또는 리소스를 만들어 n 파이프라인에 바인딩할 수 있습니다(규칙에 따르지 않으면 컴파일 시간에 런타임이 오류를 생성함).
리소스 뷰는 리소스(텍스처, 버퍼 등)에 액세스하기 위한 일반 모델을 제공합니다. 뷰를 사용하여 액세스할 데이터와 액세스 방법을 알 수 있으므로 리소스 뷰로 형식이 없는 리소스를 만들 수 있습니다. 즉, 컴파일 시간에 주어진 크기에 대한 리소스를 만든 다음, 리소스가 파이프라인에 바인딩될 때 리소스 내에서 데이터 형식을 선언할 수 있습니다. 뷰는 셰이더에서 깊이/스텐실 표면을 다시 읽고, 단일 패스로 동적 큐브맵을 생성하고, 볼륨의 여러 조각에 동시에 렌더링하는 기능 등 리소스를 사용하기 위한 많은 새로운 기능을 노출합니다.
기본 리소스 종류, 텍스처 배열 및 리소스를 만들고 사용하는 방법에 대한 자세한 내용은 다음 다른 topics 참조하세요.
- 리소스 종류
- 리소스 선택
- 버퍼 리소스 만들기
- 텍스처 리소스 만들기
- 리소스 데이터 복사 및 액세스
- 메모리 구조 및 뷰
- 블록 압축
- 리소스 제한 표
- 좌표계
- 부동 소수점 규칙
- 데이터 형식 변환 규칙
- 레거시 형식 매핑
관련 항목