Nilai Referensi Stensil Yang Ditentukan Shader (Grafik Direct3D 12)

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

Nilai Referensi Stensil biasanya ditentukan oleh metode ID3D12GraphicsCommandList::OMSetStencilRef . Metode ini menetapkan nilai referensi stensil pada granularitas per gambar. Namun, nilai ini dapat ditimpa oleh shader piksel.

Fitur D3D12 (dan D3D11.3) ini memungkinkan pengembang membaca dan menggunakan Nilai Referensi Stensil (SV_StencilRef) yang merupakan output dari shader piksel, memungkinkan granularitas per piksel atau per sampel.

Nilai yang ditentukan shader menggantikan nilai referensi yang ditentukan API untuk pemanggilan tersebut, yang berarti perubahan memengaruhi pengujian stensil, dan ketika operasi stensil D3D12_STENCIL_OP_REPLACE (satu anggota D3D12_STENCIL_OP) digunakan untuk menulis nilai referensi ke buffer stensil.

Fitur ini bersifat opsional di D3D12 dan D3D11.3. Untuk menguji dukungannya, periksa bidang boolean PSSpecifiedStencilRefSupportedD3D12_FEATURE_DATA_D3D12_OPTIONS menggunakan CheckFeatureSupport.

Berikut adalah contoh penggunaan SV_StencilRef dalam shader piksel:

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

Merender

Pengikatan Sumber Daya di HLSL

Model Shader 5.1

Menentukan Tanda Tangan Akar di HLSL