Bagikan melalui


Paparan sumber daya berjenjang HLSL

SintaksIs Microsoft High Level Shader Language (HLSL) baru diperlukan untuk mendukung sumber daya ubin dalam Model Shader 5.

Sintaks HLSL baru hanya diizinkan pada perangkat dengan dukungan sumber daya ubin. Setiap metode HLSL yang relevan untuk sumber daya berjenjang dalam tabel berikut menerima satu (umpan balik) atau dua (penjepit dan umpan balik dalam urutan ini) parameter opsional tambahan. Misalnya, metode Sampel adalah:

Sample(sampler, location [, offset [, clamp [, feedback] ] ])

Contoh metode Sampel adalah Texture2D.Sample(S,float,int,float,uint).

Parameter offset, klem, dan umpan balik bersifat opsional. Anda harus menentukan semua parameter opsional hingga yang Anda butuhkan, yang konsisten dengan aturan C++ untuk argumen fungsi default. Misalnya, jika status umpan balik diperlukan, parameter offset dan klem perlu diberikan secara eksplisit ke Sampel, meskipun mungkin tidak diperlukan secara logis.

Parameter klem adalah nilai float skalar. Nilai literal clamp=0.0f menunjukkan bahwa operasi penjepit tidak dilakukan.

Parameter umpan balik adalah variabel uint yang dapat Anda berikan ke fungsi kueri intrinsik kueri akses memori CheckAccessFullyMapped . Anda tidak boleh mengubah atau menginterpretasikan nilai parameter umpan balik; tetapi, pengkompilasi tidak menyediakan analisis dan diagnostik tingkat lanjut untuk mendeteksi apakah Anda memodifikasi nilai.

Berikut adalah sintaks CheckAccessFullyMapped:

bool CheckAccessFullyMapped(dalam uint FeedbackVar);

CheckAccessFullyMapped menginterpretasikan nilai FeedbackVar dan mengembalikan true jika semua data yang diakses dipetakan dalam sumber daya; jika tidak, CheckAccessFullyMapped mengembalikan false.

Jika parameter penjepit atau umpan balik ada, pengkompilasi memancarkan varian instruksi dasar. Misalnya, sampel sumber daya ubin menghasilkan sample_cl_s instruksi. Jika tidak ada penjepit atau umpan balik yang ditentukan, pengkompilasi memancarkan instruksi dasar, sehingga tidak ada perubahan dari perilaku saat ini. Nilai klem 0,0f menunjukkan bahwa tidak ada penjepit yang dilakukan; dengan demikian, pengkompilasi driver dapat lebih menyesuaikan instruksi dengan perangkat keras target. Jika umpan balik adalah register NULL dalam instruksi, umpan balik tidak digunakan; dengan demikian, pengkompilasi driver dapat lebih menyesuaikan instruksi dengan arsitektur target.

Jika pengkompilasi HLSL menyimpulkan bahwa klem adalah 0,0f dan umpan balik tidak digunakan, kompilator memancarkan instruksi dasar yang sesuai (misalnya, sample bukan sample_cl_s).

Jika akses sumber daya bertingkat terdiri dari beberapa instruksi kode byte konstituen, misalnya, untuk sumber daya terstruktur, kompilator menggabungkan nilai umpan balik individu melalui operasi OR untuk menghasilkan nilai umpan balik akhir. Oleh karena itu, Anda melihat satu nilai umpan balik untuk akses yang begitu kompleks.

Ini adalah tabel ringkasan metode HLSL yang diubah untuk mendukung umpan balik dan/atau penjepit. Semua ini bekerja pada sumber daya ubin dan tidak berjenjang dari semua dimensi. Sumber daya yang tidak diurutkan selalu tampak sepenuhnya dipetakan.

Objek HLSL Metode intrinsik dengan opsi umpan balik (*) - juga memiliki opsi klem
[RW] Texture2D
[RW] Texture2DArray
TextureCUBE
TextureCUBEArray
Mengumpulkan
Dikumpulkan
GatherGreen
GatherBlue
GatherAlpha
GatherCmp
GatherCmpRed
GatherCmpGreen
GatherCmpBlue
GatherCmpAlpha
[RW] Texture1D
[RW] Texture1DArray
[RW] Texture2D
[RW] Texture2DArray
[RW] Texture3D
TextureCUBE
TextureCUBEArray
Sampel*
SampleBias*
SampleCmp*
SampleCmpLevelZero
SampleGrad*
SampleLevel
[RW] Texture1D
[RW] Texture1DArray
[RW] Texture2D
Texture2DMS
[RW] Texture2DArray
Texture2DArrayMS
[RW] Texture3D
[RW] Buffer
[RW] ByteAddressBuffer
[RW] StructuredBuffer
Muat

Akses alur ke sumber daya ubin