Pengantar aturan rasterisasi

Seringkali, titik yang ditentukan untuk simpul tidak sama persis dengan piksel di layar. Ketika ini terjadi, Direct3D menerapkan aturan rasterisasi segitiga untuk memutuskan piksel mana yang berlaku untuk segitiga tertentu.

Ini adalah pengantar yang disederhanakan untuk aturan rasterisasi. Untuk detail selengkapnya, lihat Aturan rasterisasi. Lihat juga tahap Rasterizer (RS).

Aturan Rasterisasi Segitiga

Direct3D menggunakan konvensi pengisian kiri atas untuk mengisi geometri. Ini adalah konvensi yang sama yang digunakan untuk persegi panjang di GDI dan OpenGL. Di Direct3D, bagian tengah piksel adalah titik penentu. Jika tengah berada di dalam segitiga, piksel adalah bagian dari segitiga. Pusat piksel berada pada koordinat bilangan bulat.

Deskripsi aturan rasterisasi segitiga yang digunakan oleh Direct3D ini tidak selalu berlaku untuk semua perangkat keras yang tersedia. Pengujian Anda dapat mengungkap variasi kecil dalam implementasi aturan ini.

Ilustrasi berikut menunjukkan persegi panjang yang sudut kiri atasnya berada di (0, 0) dan sudut kanan bawahnya berada di (5, 5). Persegi panjang ini mengisi 25 piksel, seperti yang Anda harapkan. Lebar persegi didefinisikan sebagai kanan minus kiri. Tinggi didefinisikan sebagai bawah minus atas.

kuadrat bernomor dibagi menjadi enam baris dan kolom

Dalam konvensi pengisian kiri atas, atas mengacu pada lokasi vertikal rentang horizontal, dan kiri mengacu pada lokasi horizontal piksel dalam rentang. Tepi tidak dapat menjadi tepi atas kecuali tepi horizontal. Secara umum, sebagian besar segitiga hanya memiliki tepi kiri dan kanan. Ilustrasi berikut menunjukkan tepi atas dan tepi kanan.

kuadrat bernomor yang berisi dua segitiga

Konvensi pengisian kiri atas menentukan tindakan yang diambil oleh Direct3D saat segitiga melewati pusat piksel. Ilustrasi berikut menunjukkan dua segitiga, satu di (0, 0), (5, 0), dan (5, 5), dan yang lainnya di (0, 5), (0, 0), dan (5, 5). Segitiga pertama dalam hal ini mendapatkan 15 piksel (ditampilkan dalam warna hitam), sedangkan yang kedua hanya mendapatkan 10 piksel (ditampilkan berwarna abu-abu) karena tepi bersama adalah tepi kiri segitiga pertama.

persegi bernomor yang memperlihatkan dua segitiga

Jika Anda menentukan persegi panjang dengan sudut kiri atasnya di (0,5, 0,5) dan sudut kanan bawahnya di (2,5, 4,5), titik tengah persegi panjang ini berada di (1,5, 2,5). Ketika rasterizer Direct3D tessellates persegi panjang ini, pusat setiap piksel tidak ambigu di dalam masing-masing dari empat segitiga, dan konvensi pengisian kiri atas tidak diperlukan. Ilustrasi berikut menunjukkan ini. Piksel dalam persegi panjang diberi label sesuai dengan segitiga tempat Direct3D menyertakannya.

Cuplikan layar persegi bernomor yang berisi persegi panjang yang dibagi menjadi empat segitiga.

Jika Anda memindahkan persegi panjang dalam ilustrasi sebelumnya sehingga sudut kiri atasnya berada di (1,0, 1,0), sudut kanan bawahnya di (3,0, 5,0), dan titik tengahnya di (2,0, 3,0), Direct3D menerapkan konvensi pengisian kiri atas. Sebagian besar piksel dalam persegi panjang ini mengaitkan batas antara dua segitiga atau lebih, seperti yang ditunjukkan oleh ilustrasi berikut.

Cuplikan layar persegi bernomor dengan persegi panjang dipindahkan ke bawah dan ke kanan.

Untuk kedua persegi panjang, piksel yang sama terpengaruh, seperti yang ditunjukkan dalam ilustrasi berikut.

piksel yang dipengaruhi oleh dua kuadrat bernomor sebelumnya

Aturan Titik dan Garis

Titik dirender sama dengan sprite titik, yang keduanya dirender sebagai quadrilateral yang selaras dengan layar dan dengan demikian mematuhi aturan yang sama dengan penyajian poligon.

Aturan penyajian baris yang tidak diantisipasi sama persis dengan aturan untuk baris GDI.

Aturan Sprite Titik

Sprite titik dan primitif patch dirasterisasi seolah-olah primitif pertama kali dipesan menjadi segitiga dan segitiga yang dihasilkan dirasterisasi.

Perangkat

Tahap rasterizer (RS)

Aturan rasterisasi