Bagikan melalui


Nilai Referensi Stensil Yang Ditentukan Shader (Grafik Direct3D 11)

Mengaktifkan shader piksel untuk menghasilkan Nilai Referensi Stensil, daripada menggunakan yang ditentukan API, memungkinkan kontrol terperinci yang sangat halus atas operasi stensil.

Nilai yang ditentukan shader menggantikan Nilai Referensi Stensil yang ditentukan API untuk pemanggilan tersebut, yang berarti perubahan memengaruhi pengujian stensil, dan ketika stensil op D3D11_STENCIL_OP_REPLACE (satu anggota D3D11_STENCIL_OP) digunakan untuk menulis nilai referensi ke buffer stensil.

Dalam versi D3D11 yang lebih lama, Nilai Referensi Stensil hanya dapat ditentukan oleh metode ID3D11DeviceContext::OMSetDepthStencilState . Ini berarti bahwa nilai ini hanya dapat didefinisikan pada granularitas per gambar. Fitur D3D11.3 ini memungkinkan pengembang membaca dan menggunakan Nilai Referensi Stensil (SV_StencilRef) yang merupakan output dari shader piksel, yang berarti dapat ditentukan pada granularitas per piksel atau per sampel.

Fitur ini bersifat opsional di D3D11.3. Untuk menguji dukungannya, periksa PSSpecifiedStencilRefSupported bidang boolean D3D11_FEATURE_DATA_D3D11_OPTIONS2 menggunakan ID3D11Device::CheckFeatureSupport

Berikut adalah contoh penggunaan SV_StencilRef dalam shader piksel:

uint main2(float4 c : COORD) : SV_StencilRef
{
    return uint(c.x);
}

Fitur Direct3D 11.3

Model Shader 5.1