Mengakses Sumber Daya

Ada beberapa cara untuk mengakses sumber daya. Terlepas dari itu, Direct3D menjamin untuk mengembalikan nol untuk sumber daya apa pun yang diakses di luar batas.

Offset Byte Akses

Dua jenis buffer baru dapat diakses menggunakan offset byte:

Akses Menurut Indeks

Jenis sumber daya dapat menggunakan indeks untuk mereferensikan lokasi tertentu di sumber daya. Pertimbangkan contoh ini:

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

Contoh ini menetapkan 4 nilai float yang disimpan di texel yang terletak di posisi pos di sumber daya tekstur myTexture 2D ke variabel myVar .

Catatan

Default untuk mengakses tekstur dengan cara ini adalah mipmap level zero (tingkat yang paling rinci).

 

Catatan

Baris "float4 myVar = myTexture[pos];" setara dengan "float4 myVar = myTexture.Load(uint3(pos,0));". Akses menurut indeks adalah peningkatan sintaks HLSL baru.

 

Catatan

Pengkompilasi dalam SDK DirectX versi Juni 2010 dan yang lebih baru memungkinkan Anda mengindeks semua jenis sumber daya kecuali untuk buffer alamat byte.

 

Catatan

Kompilator Juni 2010 dan yang lebih baru memungkinkan Anda mendeklarasikan variabel sumber daya lokal. Anda dapat menetapkan sumber daya yang ditentukan secara global (seperti myTexture) ke variabel ini dan menggunakannya dengan cara yang sama seperti rekan global mereka.

 

Metode Access By Mips

Objek tekstur memiliki metode mips (misalnya, Texture2D.mips), yang dapat Anda gunakan untuk menentukan tingkat mipmap. Contoh ini membaca warna yang disimpan di (7.16) pada tingkat mipmap 2 dalam tekstur 2D:

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

Ini adalah peningkatan dari kompilator Juni 2010 dan yang lebih baru. Ekspresi "myTexture.mips[2][uint2(x,y)]" setara dengan "myTexture.Load(uint3(x,y,2))".

Gambaran Umum Shader Komputasi