Bagikan melalui


METODE ID3D12GraphicsCommandList5::RSSetShadingRateImage (d3d12.h)

Mengatur gambar laju bayangan ruang layar untuk bayangan laju variabel (VRS). Untuk informasi selengkapnya, lihat Bayangan laju variabel (VRS). Metode ini memerlukan dukungan Tier2 Variable-rate shading (VRS ). Lihat D3D12_FEATURE_DATA_D3D12_OPTIONS6 dan D3D12_VARIABLE_SHADING_RATE_TIER.

Sintaks

void RSSetShadingRateImage(
  ID3D12Resource *shadingRateImage
);

Parameter

shadingRateImage

Jenis: ID3D12Resource*

Penunjuk opsional ke ID3D12Resource yang mewakili gambar laju bayangan ruang layar. Jika NULL, efeknya sama dengan memiliki gambar laju bayangan di mana semua nilai adalah tingkat bayangan 1x1.

Tekstur ini harus menerapkan status D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE .

Ukuran petak peta gambar laju bayangan dapat ditentukan melalui D3D12_FEATURE_DATA_D3D12_OPTIONS6. Oleh karena itu, ukuran gambar laju bayangan harus

ceil((float)rtWidth / VRSTileSize), ceil((float)rtHeight / VRSTileSize)

Gambar laju bayangan harus berupa tekstur 2D dengan satu mip, dan format DXGI_FORMAT_R8_UINT. Setiap texel harus berupa nilai yang sesuai dengan D3D12_SHADING_RATE. Ini harus memiliki tata letak D3D12_TEXTURE_LAYOUT_UNKNOWN dan tidak boleh menjadi sumber daya stensil kedalaman, target render, akses simultan, atau lintas adaptor.

Karena (0, 0) adalah kiri atas di DirectX, gambar laju bayangan yang terlalu kecil atau besar menghasilkan bagian bawah atau kanan tidak memiliki area gambar laju bayangan, atau gambar yang meluas ke arah ini. Ketika ada kelebihan, itu diabaikan (tetapi legal), dan ketika gambar terlalu kecil, semua area di luar batas di bagian bawah dan kanan akan memiliki tingkat bayangan default 1x1 dari gambar (namun, ini tidak berarti bahwa adalah tingkat bayangan akhir. Combiner masih akan diterapkan ke nilai default 1x1 ini).

Mengembalikan nilai

Tidak ada

Keterangan

Agar gambar laju bayangan ruang layar memengaruhi, ID3D12GraphicsCommandList5::RSSetShadingRate harus dipanggil untuk mengatur combiner untuk bayangan. Jika tidak, dengan combiner default (keduanya D3D12_SHADING_RATE_COMBINER_PASSTHROUGH), gambar laju bayangan ruang layar diabaikan dalam menentukan granularitas bayangan.

Combiner kedua yang diteruskan ke [ID3D12GraphicsCommandList5::RSSetShadingRate] adalah salah satu yang berlaku untuk gambar laju bayangan, yang terjadi setelah tingkat bayangan global dan tingkat bayangan per-primitif telah digabungkan.

Algoritma untuk laju bayangan akhir ditentukan oleh

postRasterizerRate = ApplyCombiner(Combiners[0], CommandListShadingRate, Primitive->PrimitiveSpecifiedShadingRate);
finalRate = ApplyCombiner(Combiners[1], postRasterizerRate, ScreenSpaceImage[xy]);

di mana ApplyCombiner adalah

UINT ApplyCombiner(D3D12_SHADING_RATE_COMBINER combiner, UINT a, UINT b)
{
    MaxShadingRate = options6.AdditionalShadingRatesSupported ? 4 : 2;
    switch (combiner)
    {
        case D3D12_SHADING_RATE_COMBINER_PASSTHROUGH: // default
            return a;
        case D3D12_SHADING_RATE_COMBINER_OVERRIDE:
            return b;
        case D3D12_SHADING_RATE_COMBINER_MAX:
            return max(a, b);
        case D3D12_SHADING_RATE_COMBINER_MIN:
            return min(a, b);
        case D3D12_SHADING_RATE_COMBINER_SUM:
            return min(MaxShadingRate, a + b);
        case default:
            return a;
    }
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 10 Build 20348
Server minimum yang didukung Windows 10 Build 20348
Header d3d12.h

Lihat juga

Bayangan laju variabel (VRS)