RWTexture2D

Sumber daya baca/tulis.

Metode Deskripsi
GetDimensions Mendapatkan dimensi sumber daya.
Muat Membaca data tekstur.
Operator[] Mendapatkan variabel sumber daya.

 

Anda dapat mengawali objek RWTexture2D dengan kelas penyimpanan globallycoherent. Kelas penyimpanan ini menyebabkan hambatan memori dan sinkronisasi untuk membersihkan data di seluruh GPU sedih sehingga grup lain dapat melihat penulisan. Tanpa penentu ini, hambatan atau sinkronisasi memori hanya akan menghapus tampilan akses yang tidak berurut (UAV) dalam grup saat ini.

Objek RWTexture2D memerlukan jenis elemen dalam pernyataan deklarasi untuk objek . Misalnya, deklarasi berikut tidak benar:

// The following declaration is incorrectly coded.
RWTexture2D myTexture;

Deklarasi berikut sudah benar:

// The following declaration is correctly coded.
RWTexture2D<float> tex;

Karena objek RWTexture2D adalah objek jenis UAV, propertinya berbeda dari objek jenis tampilan sumber daya shader (SRV), seperti objek Texture2D . Misalnya, Anda dapat membaca dari dan menulis ke objek RWTexture2D, tetapi Anda hanya dapat membaca dari objek Texture2D.

Objek RWTexture2D tidak dapat menggunakan metode dari objek Texture2D , seperti Sampel. Namun, karena Anda dapat membuat beberapa jenis tampilan ke sumber daya yang sama, Anda dapat mendeklarasikan beberapa jenis tekstur sebagai tekstur tunggal dalam beberapa shader. Misalnya, cuplikan kode berikut menunjukkan bagaimana Anda dapat mendeklarasikan dan menggunakan objek RWTexture2D sebagai tex dalam shader komputasi lalu mendeklarasikan dan menggunakan objek Texture2D sebagai tex dalam shader piksel.

Catatan

Runtime memberlakukan pola penggunaan tertentu saat Anda membuat beberapa jenis tampilan ke sumber daya yang sama. Misalnya, runtime tidak memungkinkan Anda memiliki pemetaan UAV untuk sumber daya dan pemetaan SRV untuk sumber daya yang sama yang aktif secara bersamaan.

 

Kode berikut adalah untuk shader komputasi:

RWTexture2D<float> tex;
[numthreads(groupDim_x, groupDim_y, 1)]
void main(
    uint3 groupId : SV_GroupID,
    uint3 groupThreadId : SV_GroupThreadID,
    uint3 dispatchThreadId : SV_DispatchThreadID,
    uint groupIndex : SV_GroupIndex)
{
    tex [dispatchThreadId.xy] = <something>;
}

Kode berikut adalah untuk shader piksel:

struct PixelShaderInput
{
    float4 pos : SV_POSITION;
    float2 tex : TEXTURE;
};

Texture2D<float> tex;
float4 main(PixelShaderInput input) : SV_TARGET
{
    return tex.Sample(TextureSampler, input.tex);
}

Minimum Shader Model

Objek ini didukung dalam model shader berikut.

Shader Model Didukung
Model Shader 5 dan model shader yang lebih tinggi ya

 

Objek ini didukung untuk jenis shader berikut:

Puncak Hull Domain Geometri Pixel Compute
x x

 

Lihat juga

Objek Model Shader 5