Perincian tentang apa yang sebenarnya dilakukan GPU ketika memotong dalam ruang homogen 4D?

10

Saya belajar render pipa yang dapat diprogram dengan menerapkan renderer perangkat lunak kecil. Saya mencoba menerapkannya dalam gaya 'perangkat keras'. Namun, saya tidak terbiasa dengan pipa GPU dan mendapat beberapa masalah kliping yang homogen.

Ruang kliping homogen berisi variabel w yang bervariasi di setiap titik. Apakah setiap koordinat objek homogen (antara matriks proyeksi dan pembagian homogen oleh w) pada ruang klipingnya sendiri? Jika demikian, bagaimana cara memotong garis dan segitiga lebih dekat daripada Frustum atau bahkan meregangkan di belakang kamera (yaitu w <= frustum_znear)?

Pembaruan : utas ini mengatakan bahwa kliping di ruang homogen secara langsung merupakan masalah persimpangan di ruang homogen 4D. Yang berarti titik persimpangan adalah p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4. Katakanlah saya memiliki P0(-70, -70, 118, 120)dan P1(-32, -99, -13, -11)dalam ruang homogen 4D, dan titik persimpangan dengan plane w = -z(yang dalam NDC adalah z = -1) adalah (-35, -96, -1, 0.9) t = 0.99, bagaimana cara mendapatkan objek vertex yang sesuai dalam ruang NDC?

Dan begitu saya mendapatkan titik persimpangan yang benar, haruskah saya melakukan interpolasi antara objek vertex yang dihasilkan oleh vertex shader untuk mendapatkan objek vertex baru?

stanleyerror
sumber
Ini mengejutkan saya karena terlalu banyak pertanyaan untuk satu posting & mungkin harus dibagi. Aturan umum adalah satu pertanyaan (atau setidaknya pertanyaan kunci) per posting.
Pikalek
@ Pikalek Saya menghapus dua pertanyaan lainnya dan mencoba membuat utas ini masuk akal. Terima kasih atas saranmu.
stanleyerror

Jawaban:

1

Kliping dilakukan dalam ruang 3D sebelum pembagian 'w', bukan dalam ruang 4D.

GPU menemukan hanya pesawat dekat dan jauh, atau semua 6 pesawat 3D dari tampilan frustum dan klip Geo untuk ini.

Jika pembagian dilakukan sebelum tanda koordinat akan membalik untuk simpul di belakang mata / kamera.

Jika hanya pesawat jarak dekat yang digunakan untuk klip 3D sebelum pembagian, maka mungkin hanya mengandalkan kliping 2D pada tahap rasterisasi untuk pesawat x & y.


W hanyalah pembagi proyeksi yang terkait langsung dengan Z, bukan sebenarnya dimensi ke-4. Matriks 4x4 adalah "retas" untuk memasukkan divisi terjemahan dan proyeksi dalam format yang sesuai. Ini berfungsi hanya karena posisi tersirat menjadi (x, y, z, 1) dan normals dinyatakan menjadi (x, y, z, 0).

Tapi sebenarnya bukan 4 dimensi independen.

Nilai lain untuk "W" yang bukan 1 atau 0 tidak masuk akal untuk geometri, itu adalah saklar on / off yang nyaman untuk mematikan terjemahan.

Stephane Hockenhull
sumber
0

Jika Anda bertanya tentang mengonversi koordinat ruang klip homogen ke koordinat koordinat perangkat dinormalisasi (NDC), prosesnya adalah: <x y z w> → <x/w y/w z/w>

Tanya Jawab GDSE ini tentang Mengapa ruang klip selalu disebut sebagai "ruang klip homogen"? mungkin juga bermanfaat bagi Anda.

Pikalek
sumber
1
Terima kasih atas jawaban anda. Namun, masalah saya adalah tentang interpolasi. Katakanlah dua titik e1, e2 di bawah koordinat mata 3D diproyeksikan ke ruang kliping homogen 4D h1, h2. Kemudian kita melakukan interpolasi dalam ruang homogen 4D, segmen h1-h2 dipotong pada titik 4D h (t) = t * h1 + (1-t) * h2. Tanpa kehilangan sifat umum, misalkan kita memiliki bagian h1-h (t) (yang dapat dilihat) dimasukkan ke tahap rasterisasi. Jadi kita perlu membuat properti vertex yang sesuai (sama dengan format output dari vertex shader). Pertanyaan saya adalah bagaimana cara membuat properti simpul baru ini?
stanleyerror
Pemahaman saya adalah bahwa interpolasi tidak dilakukan di HCS, tetapi saya mungkin salah. Jika Anda tidak mendapatkan lebih banyak / jawaban yang lebih baik di sini, Anda dapat mencoba meminta kembali / bermigrasi ke SO.
Pikalek
Baik. Bisakah saya langsung memigrasi utas ini ke SO, atau saya perlu membuka kembali pertanyaan baru di sana.
stanleyerror
Kesalahan saya karena menyarankan Anda bertanya kembali; lintas posting umumnya tidak disarankan .
Pikalek
Saya pikir admin dapat bermigrasi ke sana.
Sidar