Bagikan melalui


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, pusat 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 bagian bawah dikurangi bagian atas.

kotak bernomor yang dibagi menjadi enam baris dan enam kolom

Dalam konvensi pengisian kiri-atas, atas mengacu pada lokasi vertikal dari rentang horizontal, dan kiri mengacu pada lokasi horizontal dari piksel dalam suatu rentang. Sebuah tepi tidak bisa disebut tepi atas kecuali jika tepi tersebut horizontal. Secara umum, sebagian besar segitiga hanya memiliki tepi kiri dan kanan. Ilustrasi berikut menunjukkan tepi atas dan tepi kanan.

kotak 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.

kotak bernomor yang memperlihatkan dua segitiga

Jika Anda menentukan persegi panjang dengan sudut kiri atas pada (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 melakukan tesselasi pada persegi panjang ini, pusat setiap piksel dengan jelas berada di dalam masing-masing dari empat segitiga, sehingga konvensi pengisian kiri atas tidak diperlukan. Ilustrasi berikut menunjukkan ini. Piksel dalam persegi panjang diberi label sesuai dengan segitiga tempat Direct3D menyertakannya.

Cuplikan layar dari persegi bernomor yang di dalamnya terdapat sebuah persegi panjang yang dibagi menjadi empat segitiga.

Jika Anda memindahkan persegi panjang dalam ilustrasi sebelumnya sehingga sudut kiri atas 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 atau beberapa segitiga, seperti yang ditunjukkan oleh ilustrasi berikut.

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

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

piksel yang dipengaruhi oleh dua kuadrat bernomor sebelumnya

Aturan Titik dan Garis

Titik dirender sama dengan sprite titik, yang keduanya dirender sebagai kuadrilateral yang selaras dengan layar dan oleh karena itu mengikuti aturan yang sama seperti rendering poligon.

Aturan perenderan garis yang non-antialias sama persis dengan aturan untuk garis GDI .

Aturan Sprite Titik

Sprite titik dan primitif patch dirasterisasi seolah-olah primitif dibagi menjadi segitiga dan segitiga yang dihasilkannya dirasterisasi.

Perangkat

tahap Rasterizer (RS)

Aturan Rasterisasi