리소스 액세스

리소스에 액세스하는 방법에는 여러 가지 가 있습니다. 관계없이 Direct3D는 범위를 벗어나 액세스하는 모든 리소스에 대해 0을 반환하도록 보장합니다.

액세스 바이트 오프셋

바이트 오프셋을 사용하여 두 가지 새 버퍼 형식에 액세스할 수 있습니다.

인덱스별 액세스

리소스 유형은 인덱스 를 사용하여 리소스의 특정 위치를 참조할 수 있습니다. 다음 예제를 고려해 보세요.

uint2 pos;
Texture2D<float4> myTexture;
float4 myVar = myTexture[pos];

다음은 myTexture 2D 텍스처 리소스의 pos 위치에 있는 텍셀에 저장된 4개의 float 값을 myVar 변수에 할당하는 예제입니다.

참고

이러한 방식으로 텍스처에 액세스하는 기본값은 mipmap 수준 0(가장 자세한 수준)입니다.

 

참고

"float4 myVar = myTexture[pos];" 줄은 "float4 myVar = myTexture.Load(uint3(pos,0));"와 같습니다. 인덱스별 액세스는 새로운 HLSL 구문 개선 사항입니다.

 

참고

DirectX SDK의 2010년 6월 버전 이상 컴파일러를 사용하면 바이트 주소 버퍼를 제외한 모든 리소스 유형을 인덱싱할 수 있습니다.

 

참고

2010년 6월 컴파일러 이상에서는 로컬 리소스 변수를 선언할 수 있습니다. 이러한 변수에 전역적으로 정의된 리소스(예: myTexture)를 할당하고 전역 리소스와 동일한 방식으로 사용할 수 있습니다.

 

Mips 메서드로 액세스

Texture 개체에는 mipmap 수준을 지정하는 데 사용할 수 있는 Mips 메서드(예: Texture2D.mips)가 있습니다. 이 예제에서는 mipmap 수준 2의 (7,16)에 저장된 색을 2D 텍스처로 읽습니다.

uint x = 7;
uint y = 16;
float4 myColor = myTexture.mips[2][uint2(x,y)];

이는 2010년 6월 컴파일러 이상에서 향상된 기능입니다. "myTexture.mips[2][uint2(x,y)]" 식은 "myTexture.Load(uint3(x,y,2))"와 같습니다.

컴퓨팅 셰이더 개요