4D homojen alanda kırpma yaparken GPU'nun gerçekte ne yaptığının ayrıntıları?


10

Küçük bir yazılım oluşturucu uygulayarak programlanabilir oluşturma boru hattı öğreniyorum. Bunu 'donanım' tarzında uygulamaya çalışıyorum. Ancak, GPU boru hattına aşina değilim ve bazı homojen kırpma problemleri var.

Homojen kırpma alanı , her tepe noktasında çeşitli olan bir w değişkeni içerir . Her köşe nesnesinin kendi kırpma alanında homojen koordinatı (projeksiyon matrisi ve w ile homojen bölünme arasında) mı? Eğer öyleyse, Frustum'dan daha yakın çizgileri ve üçgenleri nasıl klipsleyebilir veya kameranın arkasına bile gerebilirsiniz (yani w <= frustum_znear)?

Güncelleme : Bu iplik homojen alandaki kırpmanın 4D homojen alandaki doğrudan bir kesişim sorunu olduğunu söylüyor. Yani kavşak noktası p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4. Ben ki P0(-70, -70, 118, 120)ve P1(-32, -99, -13, -11)4D homojen alan ve kesişme noktası plane w = -z(olup NDC hangi z = 1) olduğu (-35, -96, -1, 0.9) t = 0.99, ne kadar NDC uzayda corrresponding tepe nesne almak için?

Doğru kesişim noktasını bulduğumda, köşe gölgelendiricisi tarafından üretilen köşe nesneleri arasında yeni köşe nesnesi elde etmek için enterpolasyon yapmalı mıyım?


Bu bana tek bir yazı için çok fazla soru gibi geliyor ve muhtemelen bölünmesi gerekiyor. Genel kural, gönderi başına tek bir sorudur (veya en azından kilit soru).
Pikalek

@Pikalek Diğer iki soruyu kaldırıyorum ve bu konuyu makul hale getirmeye çalışıyorum. Tavsiyeniz için teşekkürler.
stanleyerror

Yanıtlar:


1

Kırpma, 4B alanda değil, 'w' bölünmesinden önce 3D alanda yapılır.

GPU, sadece yakın ve uzak düzlemleri veya görünüm frustumunun 6 3D düzlemini bulur ve Geo'yu buna klipsler.

Eğer w bölünmesi koordinat işaretinden önce yapılsaydı, gözün / kameranın arkasındaki köşeleri çevirirdi.

W bölünmeden önce 3D klibe yalnızca yakın mesafedeki düzlemler kullanılırsa, yalnızca x & y düzlemleri için rasterleştirme aşamasında 2D kırpmaya dayanabilir.


W, aslında Z ile doğrudan ilişkili bir projeksiyon bölücüdür, aslında 4. boyut değildir. 4x4 matrisi, uygun bir formatta bir çeviri ve projeksiyon bölümü içeren bir "hack" tir. Sadece pozisyonların (x, y, z, 1) ve normallerin (x, y, z, 0) ima edildiği için çalışır.

Ama aslında 4 bağımsız boyut değil.

"W" için 1 veya 0 olmayan herhangi bir değer, geometri için çok az mantıklıdır, çeviriyi kapatmak için uygun bir açma / kapama anahtarıdır.


0

Homojen klip alanı kablolarını normalleştirilmiş cihaz koordinatları (NDC) kablolarına dönüştürmek istiyorsanız, işlem şu şekildedir: <x y z w> → <x/w y/w z/w>

Bu GDSE Q / A , klip alanı neden daima “homojen klip alanı” olarak adlandırılır? size yardımcı olabilir.


1
Cevabınız için teşekkürler. Ancak benim sorunum enterpolasyon ile ilgili. Diyelim ki 3D göz koordinatı altındaki iki nokta e1, e2, 4D homojen kırpma alanına h1, h2 yansıtılır. Daha sonra 4D homojen boşlukta enterpolasyon yapıyoruz, h1-h2 segmenti 4D nokta h (t) = t * h1 + (1-t) * h2'de kırpılıyor. Genelliği kaybetmeden, rasterleştirme aşamasına h1-h (t) kısmı (görüntülenebilir) beslediğimizi varsayalım. Bu nedenle, karşılık gelen tepe noktası özelliklerini (tepe noktası gölgelendiricisinin çıktı biçimiyle aynı) oluşturmamız gerekir. Benim sorum, bu yeni köşelerin özelliklerini nasıl oluşturacağım?
stanleyerror

Anladığım kadarıyla, enterpolasyon HCS'de yapılmamıştır, ancak yanılmış olabilirim. Burada daha fazla / daha iyi yanıt almazsanız, SO'ya geri dönmeyi / taşımayı deneyebilirsiniz.
Pikalek

Tamam. Bu konuyu doğrudan SO'ya taşıyabilir miyim, yoksa orada yeni bir soru yeniden açmam gerekir.
stanleyerror

Tekrar sormanızı önerdiğim hatam; çapraz gönderme genellikle önerilmez .
Pikalek

Sanırım yöneticiler tho göç edebilir.
Sidar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.