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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk