Direct3D 12 Conservative Rasterization
Rasterisasi Konservatif menambahkan beberapa kepastian pada penyajian piksel, yang sangat membantu khususnya untuk algoritma deteksi tabrakan.
- Gambaran Umum
-
Interaksi dengan alur
- interaksi Aturan Rasterisasi
- interaksi multisampling
- interaksi SampleMask
- interaksi Depth/Stencil Test
- interaksi Helper Pixel
- interaksi Cakupan Output
- interaksi InputCoverage
- interaksi InnerCoverage
- interaksi Interpolasi Atribut
- interaksi Kliping
- interaksi Jarak Klip
- interaksi Rasterisasi Independen Target
- interaksi Topologi Primitif IA
- interaksi Kueri
- interaksi Status Cull
- interaksi IsFrontFace
- interaksi Mode Isian
- Detail implementasi
- ringkasan API
- Topik terkait
Ikhtisar
Rasterisasi Konservatif berarti bahwa semua piksel yang setidaknya dicakup sebagian oleh primitif yang dirender dirasterisasi, yang berarti bahwa pemecah piksel dipanggil. Perilaku normal adalah pengambilan sampel, yang tidak digunakan jika Rasterisasi Konservatif diaktifkan.
Rasterisasi Konservatif berguna dalam sejumlah situasi, termasuk untuk kepastian deteksi tabrakan, pemusnahan oklusi, dan penyajian ubin.
Misalnya, gambar berikut menunjukkan segitiga hijau yang dirender menggunakan Rasterisasi Konservatif, seperti yang akan muncul di rasterizer (yaitu, menggunakan 16,8 koordinat puncak titik tetap). Area coklat dikenal sebagai "wilayah ketidakpastian" - wilayah konseptual yang mewakili batas segitiga yang diperluas, diperlukan untuk memastikan primitif dalam rasterizer konservatif sehubungan dengan koordinat puncak titik apung asli. Kotak merah di setiap puncak menunjukkan bagaimana wilayah ketidakpastian dihitung: sebagai kuadrat sapuan.
Kotak abu-abu besar menunjukkan piksel yang akan dirender. Kotak merah muda menunjukkan piksel yang dirender menggunakan " aturanTop-Left", yang mulai diputar saat tepi segitiga melintasi tepi piksel. Mungkin ada positif palsu (set piksel yang seharusnya tidak) yang biasanya akan dibuang oleh sistem tetapi tidak selalu dimusnahkan.
Interaksi dengan alur
Interaksi Aturan Rasterisasi
Dalam mode Rasterisasi Konservatif, Aturan Rasterisasi menerapkan cara yang sama seperti ketika mode Rasterisasi Konservatif tidak diaktifkan dengan pengecualian untuk Aturan Top-Left, yang dijelaskan di atas, dan Cakupan Piksel. 16,8 Fixed-Point presisi Rasterizer harus digunakan.
Piksel yang tidak akan tercakup jika perangkat keras menggunakan koordinat puncak titik mengambang penuh hanya dapat disertakan jika berada dalam wilayah yang tidak pasti tidak lebih besar setengah piksel di domain titik tetap. Perangkat keras di masa mendatang diharapkan dapat mencapai wilayah ketidakpastian yang diperketat yang ditentukan di Tingkat 2. Perhatikan bahwa persyaratan ini mencegah segitiga geser meluas lebih jauh dari yang diperlukan.
Wilayah ketidakpastian valid serupa juga berlaku untuk InnerCoverage
, tetapi lebih ketat karena tidak ada implementasi yang memerlukan wilayah ketidakpastian yang lebih besar untuk kasus ini. Lihat interaksi InnerCoverage untuk detail selengkapnya.
Wilayah ketidakpastian dalam dan luar harus lebih besar dari atau sama dengan ukuran setengah kisi sub-piksel, atau 1/512 piksel, di domain titik tetap. Ini adalah wilayah ketidakpastian minimum yang valid. 1/512 berasal dari representasi koordinat Rasterizer titik tetap 16,8 dan aturan round-to-nearest yang berlaku saat mengonversi koordinat puncak titik mengambang menjadi 16,8 koordinat titik tetap. 1/512 dapat berubah jika presisi Rasterizer berubah. Jika implementasi menerapkan wilayah ketidakpastian minimum ini, maka mereka harus mengikuti Aturan Top-Left ketika tepi atau sudut wilayah ketidakpastian berada di sepanjang tepi atau sudut piksel. Tepi yang diklip dari wilayah ketidakpastian harus diperlakukan sebagai puncak terdekat, yang berarti bahwa itu dihitung sebagai dua tepi: dua yang bergabung di puncak terkait. aturan Top-Left diperlukan ketika wilayah ketidakpastian minimum digunakan karena jika tidak, maka implementasi Rasterisasi Konservatif akan gagal mem-rasterisasi piksel yang dapat dicakup saat mode Rasterisasi Konservatif dinonaktifkan.
Diagram berikut mengilustrasikan wilayah ketidakpastian luar yang valid yang dihasilkan dengan menyapu persegi di sekitar tepi primitif di domain titik tetap (yaitu simpul telah diukur oleh representasi titik tetap 16,8). Dimensi persegi ini didasarkan pada ukuran wilayah ketidakpastian luar yang valid: untuk 1/2 piksel, persegi memiliki lebar dan tinggi 1 piksel, untuk 1/512 piksel, persegi adalah 1/256 piksel dalam lebar dan tinggi. Segitiga hijau mewakili primitif tertentu, garis putus-putus merah mewakili batas pada Rasterisasi Konservatif yang Terlalu Diestimasi, kotak hitam solid mewakili persegi yang disapu di sepanjang tepi primitif, dan area kotak-kotak biru adalah wilayah ketidakpastian luar:
Interaksi multisampling
Terlepas dari jumlah sampel di RenderTarget/DepthStencil permukaan (atau apakah ForcedSampleCount digunakan atau tidak), semua sampel dicakup untuk piksel yang dirasterisasi oleh Conservative Rasterization. Lokasi sampel individual tidak diuji apakah lokasi tersebut jatuh di primitif atau tidak.
Interaksi SampleMask
SampleMask Rasterizer State menerapkan cara yang sama seperti ketika Conservative Rasterization tidak diaktifkan untuk InputCoverage
, tetapi tidak memengaruhi InnerCoverage
(yaitu tidak AND dimasukkan ke dalam input yang dideklarasikan dengan InnerCoverage
). Ini karena InnerCoverage
tidak terkait dengan apakah sampel MSAA ditutupi: 0 InnerCoverage
hanya berarti bahwa piksel tidak dijamin sepenuhnya tercakup, bukan berarti tidak ada sampel yang akan diperbarui.
Interaksi Pengujian Kedalaman/Stensil
Pengujian Kedalaman/Stensil melanjutkan piksel yang dirasterisasi secara konservatif dengan cara yang sama seolah-olah semua sampel tercakup saat Rasterisasi Konservatif tidak diaktifkan.
Melanjutkan dengan semua sampel yang tercakup dapat menyebabkan Ekstrapolasi Kedalaman, yang valid dan harus dijepit ke viewport seperti yang ditentukan ketika Rasterisasi Konservatif tidak diaktifkan. Ini mirip dengan ketika mode interpolasi frekuensi piksel digunakan pada RenderTarget dengan jumlah sampel lebih besar dari 1, meskipun dalam kasus Rasterisasi Konservatif, itu adalah nilai kedalaman masuk ke pengujian kedalaman fungsi tetap yang dapat diekstrapolasi.
Perilaku pemusnahan Kedalaman Awal dengan Ekstrapolasi Kedalaman tidak terdefinisi. Ini karena beberapa perangkat keras culling Kedalaman Awal tidak dapat mendukung nilai kedalaman yang diekstrapolasi dengan benar. Namun, perilaku pemusnahan Kedalaman Awal di hadapan Ekstrapolasi Kedalaman bermasalah bahkan dengan perangkat keras yang dapat mendukung nilai kedalaman yang diekstrapolasi. Masalah ini dapat ditangani dengan menjepit kedalaman input Pixel Shader ke nilai kedalaman min dan maks dari primitif yang dirasterisasi dan menulis nilai tersebut ke oDepth
(register kedalaman output shader piksel). Implementasi diperlukan untuk menonaktifkan culling Kedalaman Awal dalam hal ini, karena penulisan oDepth
.
Interaksi Helper Pixel
Aturan Helper Pixel menerapkan cara yang sama seperti ketika Rasterisasi Konservatif tidak diaktifkan. Sebagai bagian dari ini, semua piksel termasuk Piksel Pembantu harus melaporkan InputCoverage
secara akurat seperti yang ditentukan di bagian interaksi InputCoverage
. Jadi piksel yang sepenuhnya tidak tercakup melaporkan cakupan 0.
Interaksi Cakupan Output
Cakupan Output (oMask
) berperilaku untuk piksel yang dirasterisasi secara konservatif seperti saat Rasterisasi Konservatif tidak diaktifkan dengan semua sampel tercakup.
Interaksi InputCoverage
Dalam mode Rasterisasi Konservatif, register input ini diisi seolah-olah semua sampel tercakup ketika Rasterisasi Konservatif tidak diaktifkan untuk piksel tertentu yang dirasterisasi secara konservatif. Artinya, semua interaksi yang ada berlaku (misalnya SampleMask diterapkan), dan bit n pertama dalam InputCoverage
dari LSB diatur ke 1 untuk piksel yang dirasterisasi secara konservatif, diberikan sampel n per piksel RenderTarget dan/atau buffer DepthStencil yang terikat di Output Merger , atau sampel n ForcedSampleCount. Sisa bit adalah 0.
Input ini tersedia dalam shader terlepas dari penggunaan Rasterisasi Konservatif, meskipun Conservative Rasterization mengubah perilakunya untuk hanya menampilkan semua sampel yang tercakup (atau tidak ada untuk Piksel Pembantu).
Interaksi InnerCoverage
Fitur ini diperlukan oleh, dan hanya tersedia di, Tingkat 3. Runtime akan gagal pembuatan shader untuk shader yang menggunakan mode ini ketika implementasi mendukung Tingkat kurang dari Tingkat 3.
Pixel Shader memiliki Sistem Hasilkan Nilai Hasilkan Nilai bilangan bulat skalar 32-bit: InnerCoverage
. Ini adalah bit-field yang memiliki bit 0 dari LSB diatur ke 1 untuk piksel tertentu yang dirasterisasi secara konservatif, hanya ketika piksel tersebut dijamin sepenuhnya berada di dalam primitif saat ini. Semua bit register input lainnya harus diatur ke 0 ketika bit 0 tidak diatur, tetapi tidak terdefinisi ketika bit 0 diatur ke 1 (pada dasarnya, bit-field ini mewakili nilai Boolean di mana false harus tepat 0, tetapi benar bisa ganjil (yaitu bit 0 set) nilai bukan nol). Input ini digunakan untuk informasi Rasterisasi Konservatif yang diremehkan. Ini menginformasikan Pixel Shader apakah piksel saat ini terletak sepenuhnya di dalam geometri.
Ini harus memperhitungkan kesalahan snapping pada resolusi yang lebih besar dari atau sama dengan resolusi di mana Draw saat ini beroperasi. Tidak boleh ada positif palsu (pengaturan InnerCoverage
bit ketika piksel tidak sepenuhnya tercakup untuk kesalahan snapping pada resolusi yang lebih besar dari atau sama dengan resolusi di mana Gambar saat ini beroperasi), tetapi negatif palsu diizinkan. Singkatnya, implementasi tidak boleh salah mengidentifikasi piksel sebagai sepenuhnya tercakup yang tidak akan dengan koordinat vertex titik mengambang penuh di Rasterizer.
Piksel yang akan sepenuhnya tercakup jika perangkat keras menggunakan koordinat puncak floating point penuh hanya dapat dihilangkan jika mereka memotong wilayah ketidakpastian dalam, yang tidak boleh lebih besar dari ukuran kisi sub-piksel, atau 1/256 piksel, di domain titik tetap. Dengan kata lain, piksel sepenuhnya dalam batas dalam wilayah ketidakpastian dalam harus ditandai sebagai sepenuhnya tercakup. Batas dalam wilayah ketidakpastian diilustrasikan dalam diagram di bawah ini oleh garis putus-putus hitam tebal. 1/256 berasal dari representasi koordinat Rasterizer titik tetap 16,8, yang dapat berubah jika presisi Rasterizer berubah. Wilayah ketidakpastian ini cukup untuk memperhitungkan kesalahan snapping yang disebabkan oleh konversi koordinat puncak titik mengambang ke koordinat vertex titik tetap di Rasterizer.
Persyaratan wilayah ketidakpastian minimum 1/512 yang sama yang ditentukan dalam interaksi Aturan Rasterisasi juga berlaku di sini.
Diagram berikut mengilustrasikan wilayah ketidakpastian dalam yang valid yang dihasilkan dengan menyapu persegi di sekitar tepi primitif di domain titik tetap (yaitu simpul telah diukur oleh representasi titik tetap 16,8). Dimensi persegi ini didasarkan pada ukuran wilayah ketidakpastian dalam yang valid: untuk 1/256 piksel, persegi adalah 1/128 piksel dalam lebar dan tinggi. Segitiga hijau mewakili primitif tertentu, garis putus-putus hitam tebal mewakili batas wilayah ketidakpastian dalam, kotak hitam solid mewakili persegi yang disapu di sepanjang tepi primitif, dan area kotak-kotak oranye adalah wilayah ketidakpastian bagian dalam:
Penggunaan InnerCoverage
tidak memengaruhi apakah piksel dirasterisasi secara konservatif, yaitu menggunakan salah satu mode InputCoverage
ini tidak memengaruhi piksel mana yang dirasterisasi saat mode Rasterisasi Konservatif diaktifkan. Oleh karena itu, ketika InnerCoverage
digunakan dan Pixel Shader memproses piksel yang tidak sepenuhnya tercakup oleh geometri nilainya akan menjadi 0, tetapi pemanggilan Pixel Shader akan memiliki sampel yang diperbarui. Ini berbeda dari ketika InputCoverage
adalah 0, yang berarti bahwa tidak ada sampel yang akan diperbarui.
Input ini saling eksklusif dengan InputCoverage
: keduanya tidak dapat digunakan.
Untuk mengakses InnerCoverage
, itu harus dinyatakan sebagai komponen tunggal dari salah satu register input Pixel Shader. Mode interpolasi pada deklarasi harus konstan (interpolasi tidak berlaku).
Bidang bit InnerCoverage
tidak dipengaruhi oleh pengujian kedalaman/stensil, juga tidak diANDed dengan SampleMask status Rasterizer.
Input ini hanya valid dalam mode Rasterisasi Konservatif. Ketika Rasterisasi Konservatif tidak diaktifkan, InnerCoverage
menghasilkan nilai yang tidak terdefinisi.
Pemanggilan Pixel Shader yang disebabkan oleh kebutuhan Akan Piksel Pembantu, tetapi sebaliknya tidak tercakup dalam primitif, harus memiliki daftar InnerCoverage
yang diatur ke 0.
Interaksi Interpolasi Atribut
Mode interpolasi atribut tidak berubah dan melanjutkan dengan cara yang sama seperti ketika Rasterisasi Konservatif tidak diaktifkan, di mana simpul viewport-scaled dan fixed-point-converted digunakan. Karena semua sampel dalam piksel yang dirasterisasi secara konservatif dianggap tercakup, itu valid untuk nilai yang akan diekstrapolasi, mirip dengan ketika mode interpolasi frekuensi piksel digunakan pada RenderTarget dengan jumlah sampel lebih besar dari 1. Mode interpolasi sentroid menghasilkan hasil yang identik dengan mode interpolasi non-sentroid yang sesuai; gagasan sentroid tidak berarti dalam skenario ini - di mana cakupan sampel hanya penuh atau 0.
Rasterisasi Konservatif memungkinkan segitiga degenerasi untuk menghasilkan pemanggilan Pixel Shader, oleh karena itu, segitiga degenerasi harus menggunakan nilai yang ditetapkan ke Vertex 0 untuk semua nilai terinterpolasi.
Interaksi kliping
Ketika mode Rasterisasi Konservatif diaktifkan dan klip kedalaman dinonaktifkan (ketika DepthClipEnable Rasterizer State diatur ke FALSE), mungkin ada variansi dalam interpolasi atribut untuk segmen primitif yang berada di luar 0 <= z <= w rentang, tergantung pada implementasi: nilai konstanta digunakan dari titik di mana primitif berpotongan dengan bidang yang relevan (dekat atau jauh), atau interpolasi atribut berperilaku seperti ketika mode Rasterisasi Konservatif dinonaktifkan. Namun, perilaku nilai kedalaman sama terlepas dari mode Rasterisasi Konservatif, yaitu primitif yang berada di luar rentang kedalaman masih harus diberikan nilai batas terdekat dari rentang kedalaman viewport. Perilaku interpolasi atribut di dalam 0 <= z <= w rentang harus tetap tidak berubah.
Interaksi Jarak Klip
Jarak Klip valid ketika mode Rasterisasi Konservatif diaktifkan, dan berperilaku untuk piksel yang dirasterisasi secara konservatif seperti saat Rasterisasi Konservatif tidak diaktifkan dengan semua sampel tercakup.
Perhatikan bahwa Rasterisasi Konservatif dapat menyebabkan ekstrapolasi koordinat W vertex, yang dapat menyebabkan W <= 0. Ini dapat menyebabkan implementasi Jarak Klip per piksel beroperasi pada Jarak Klip yang telah Dibagi Perspektif dengan nilai W yang tidak valid. Implementasi Jarak Klip harus menjaga dari pemanggilan rasterisasi untuk piksel di mana puncak koordinat W <= 0 (misalnya karena ekstrapolasi ketika dalam mode Rasterisasi Konservatif).
Interaksi Rasterisasi Independen Target
Mode Rasterisasi Konservatif kompatibel dengan Target Independent Rasterization (TIR). Aturan dan pembatasan TIR berlaku, berperilaku untuk piksel yang diraster secara konservatif seolah-olah semua sampel tercakup.
Interaksi Topologi Primitif IA
Rasterisasi Konservatif tidak didefinisikan untuk garis atau titik primitif. Oleh karena itu, Topologi Primitif yang menentukan titik atau garis menghasilkan perilaku yang tidak ditentukan jika diumpankan ke unit rasterizer ketika Rasterisasi Konservatif diaktifkan.
Validasi lapisan debug memverifikasi aplikasi tidak menggunakan Topologi Primitif ini.
Interaksi kueri
Untuk piksel yang dirasterisasi secara konservatif, kueri berperilaku seperti saat Rasterisasi Konservatif tidak diaktifkan saat semua sampel tercakup. Misalnya, untuk piksel yang dirasterisasi secara konservatif, D3D12_QUERY_TYPE_OCCLUSION dan D3D12_QUERY_TYPE_PIPELINE_STATISTICS (dari D3D12_QUERY_TYPE) harus berperilaku seperti saat Rasterisasi Konservatif tidak diaktifkan ketika semua sampel tercakup.
Pemanggilan Pixel Shader harus bertahap untuk setiap piksel yang dirasterisasi secara konservatif dalam mode Rasterisasi Konservatif.
Interaksi Status Cull
Semua Status Cull valid dalam mode Rasterisasi Konservatif dan mengikuti aturan yang sama seperti ketika Rasterisasi Konservatif tidak diaktifkan.
Ketika membandingkan Rasterisasi Konservatif di seluruh resolusi dengan dirinya sendiri atau tanpa Rasterisasi Konservatif diaktifkan, ada kemungkinan bahwa beberapa primitif mungkin memiliki wajah yang tidak cocok (yaitu satu menghadap ke belakang, yang menghadap ke depan lainnya). Aplikasi dapat menghindari ketidakpastian ini dengan menggunakan D3D12_CULL_MODE_NONE (dari D3D12_CULL_MODE) dan tidak menggunakan Nilai yang Dihasilkan Sistem IsFrontFace
.
Interaksi IsFrontFace
Nilai yang Dihasilkan Sistem IsFrontFace
valid untuk digunakan dalam mode Rasterisasi Konservatif, dan mengikuti perilaku yang ditentukan ketika Rasterisasi Konservatif tidak diaktifkan.
Interaksi Mode Isian
Satu-satunya D3D12_FILL_MODE yang valid untuk Rasterisasi Konservatif adalah D3D12_FILL_SOLID, mode pengisian lainnya adalah parameter yang tidak valid untuk Status Rasterizer.
Ini karena spesifikasi fungsional D3D12 menentukan bahwa mode isi wireframe harus mengonversi tepi segitiga menjadi garis dan mengikuti aturan rasterisasi garis dan perilaku rasterisasi garis konservatif belum ditentukan.
Detail implementasi
Jenis rasterisasi yang didukung di Direct3D 12 terkadang disebut sebagai "Rasterisasi Konservatif yang Berlebihan". Ada juga konsep "Rasterisasi Konservatif yang Diremehkan", yang berarti bahwa hanya piksel yang sepenuhnya dicakup oleh primitif yang dirender yang dirasterisasi. Informasi Rasterisasi Konservatif yang diremehkan tersedia melalui shader piksel melalui penggunaan data cakupan input, dan hanya Rasterisasi Konservatif yang berlebihan yang tersedia sebagai mode rasterisasi.
Jika ada bagian primitif yang tumpang tindih dengan piksel, piksel tersebut dianggap tertutup dan kemudian dirasterisasi. Saat tepi atau sudut primitif berada di sepanjang tepi atau sudut piksel, penerapan "aturan kiri atas" bersifat spesifik implementasi. Namun, untuk implementasi yang mendukung segitiga degenerasi, segitiga degenerasi di sepanjang tepi atau sudut harus mencakup setidaknya satu piksel.
Implementasi Rasterisasi Konservatif dapat bervariasi pada perangkat keras yang berbeda, dan menghasilkan positif palsu, yang berarti bahwa mereka salah dapat memutuskan bahwa piksel tercakup. Ini dapat terjadi karena detail khusus implementasi seperti kesalahan pertumbuhan primitif atau snapping yang melekat pada koordinat vertex titik tetap yang digunakan dalam rasterisasi. Alasan positif palsu (sehubungan dengan koordinat puncak titik tetap) valid adalah karena beberapa jumlah positif palsu diperlukan untuk memungkinkan implementasi untuk melakukan evaluasi cakupan terhadap simpul pasca-di-snap (yaitu koordinat verteks yang telah dikonversi dari titik mengambang ke 16,8 titik tetap yang digunakan dalam rasterizer), tetapi menghormati cakupan yang dihasilkan oleh koordinat vertex titik mengambang asli.
Implementasi Rasterisasi Konservatif tidak menghasilkan negatif palsu sehubungan dengan koordinat puncak floating-point untuk primitif pasca-degenerasi non-degenerasi: jika ada bagian dari primitif yang tumpang tindih dengan bagian mana pun dari piksel, piksel tersebut dirasterisasi.
Segitiga yang merosot (indeks duplikat dalam buffer indeks atau collinear dalam 3D), atau menjadi merosot setelah konversi titik tetap (simpul collinear di rasterizer), mungkin atau mungkin tidak dimusnahkan; keduanya adalah perilaku yang valid. Segitiga degenerasi harus dianggap menghadap ke belakang, jadi jika perilaku tertentu diperlukan oleh aplikasi, itu dapat menggunakan culling wajah belakang atau pengujian untuk menghadap ke depan. Degenerasi segitiga menggunakan nilai yang ditetapkan ke Vertex 0 untuk semua nilai terinterpolasi.
Ada tiga tingkat dukungan perangkat keras, selain kemungkinan perangkat keras tidak mendukung fitur ini.
- Tingkat 1 memberlakukan wilayah ketidakpastian maksimum 1/2 piksel dan tidak mendukung degenerasi pasca-snap. Ini bagus untuk penyajian ubin, atlas tekstur, pembuatan peta cahaya, dan peta bayangan sub-piksel.
- Tingkat 2 mengurangi wilayah ketidakpastian maksimum menjadi 1/256 dan memerlukan degenerasi pasca-snap tidak dimusnahkan. Tingkat ini berguna untuk akselerasi algoritma berbasis CPU (seperti voxelization).
- Tingkat 3 mempertahankan wilayah ketidakpastian maksimum 1/256 dan menambahkan dukungan untuk cakupan input dalam. Cakupan input dalam menambahkan nilai baru
SV_InnerCoverage
ke High Level Shading Language (HLSL). Ini adalah bilangan bulat skalar 32-bit yang dapat ditentukan pada input ke shader piksel, dan mewakili informasi Rasterisasi Konservatif yang diremehkan (yaitu, apakah piksel dijamin-to-be-sepenuhnya tercakup). Tingkat ini sangat membantu untuk oklusi culling.
Ringkasan API
Metode, struktur, enum, dan kelas pembantu berikut mereferensikan Rasterisasi Konservatif:
- D3D12_RASTERIZER_DESC : struktur yang memegang deskripsi rasterizer.
- D3D12_CONSERVATIVE_RASTERIZATION_MODE : nilai enum untuk mode (aktif atau nonaktif).
- D3D12_FEATURE_DATA_D3D12_OPTIONS : struktur yang memegang tingkat dukungan.
- D3D12_CONSERVATIVE_RASTERIZATION_TIER : nilai enum untuk setiap tingkat dukungan oleh perangkat keras.
- CheckFeatureSupport : metode untuk mengakses fitur yang didukung.
- CD3DX12_RASTERIZER_DESC : kelas pembantu untuk membuat deskripsi rasterizer.
Topik terkait
-
tutorial video pembelajaran lanjutan DirectX : Rasterisasi Konservatif