Örnek sorular
Gfx Gpu Pipeline StagesZorluk 1
Grafik pipeline'ında input assembly aşamasının temel görevi nedir?
- aHer fragment için tekstür örnekler ve renk değerlerini filtreler
- bFragment shader çıktısını mevcut renk tamponuyla blend eder
- cVertex ve index buffer verisini okuyup üçgen gibi primitive'lere dönüştürür✓
- dNormalize edilmiş cihaz koordinatlarını ekrandaki piksel koordinatlarına çevirir
Açıklama:Input assembly, vertex/index buffer verisini okuyup draw call'ın topolojisine göre vertex'leri primitive'lere (nokta, çizgi, üçgen) gruplayan aşamadır ve bu, herhangi bir vertex shader çalışmasından önce gerçekleşir. Tekstür filtreleme, blend ve NDC-piksel dönüşümü sonraki aşamalara aittir.
Gfx Gpu Pipeline StagesZorluk 1
Bir vertex shader, çizilen mesh'e göre nasıl çalışır?
- aHer vertex için bir kez çalışır, her vertex'in attribute'larını birbirinden bağımsız dönüştürür✓
- bHer piksel için bir kez çalışır, kapsanan her fragment için nihai rengi hesaplar
- cHer draw call için bir kez çalışır, tüm mesh'i tek bir çağrıda dönüştürür
- dHer üçgen için bir kez çalışır, üçgenin üç vertex'i zaten birleştirildikten sonra
Açıklama:Vertex shader, pipeline'a giren her vertex için bir kez çağrılır ve genellikle pozisyonu (çoğunlukla clip space'e) ve diğer vertex-başı attribute'ları komşularından bağımsız şekilde dönüştürür. Piksel-başı renk hesabı vertex shader'ın değil, fragment shader'ın işidir.
Gfx Gpu Pipeline StagesZorluk 2
Var olduklarında, opsiyonel tessellation ve geometry shader aşamaları pipeline sırasında nereye oturur?
- aİkisi de rasterizasyondan sonra çalışır ve zaten üretilmiş fragment'lar üzerinde işlem yapar
- bİkisi de vertex shader'dan sonra, rasterizasyondan önce çalışır, vertex/primitive verisiyle✓
- cTessellation input assembly'den önce, geometry ise output merger'dan sonra çalışır
- dİkisi de fragment shader içinde piksel başına çağrılan alt-program olarak çalışır
Açıklama:Etkinleştirildiklerinde tessellation ve geometry aşamaları vertex shader'dan sonra, rasterizasyondan önce konumlanır: hâlâ vertex/primitive düzeyinde veriyle çalışırlar (patch'leri bölme veya yeni primitive üretme), piksel-başı fragment'larla değil. Fragment aşaması işi ancak rasterizasyon fragment üretince başlar.
Gfx Gpu Pipeline StagesZorluk 1
Perspektif bölme (perspective divide) nasıl bir işlemdir ve pipeline'da ne zaman gerçekleşir?
- aEkran uzayı x ve y'yi derinlik değeriyle çarpmaktır, fragment shader içinde yapılır
- bKameranın near ve far düzlem mesafelerini toplamaktır, input assembly sırasında yapılır
- cViewport orijinini pencere koordinatlarından çıkarmaktır, output merger sırasında yapılır
- dClip-space x, y, z'yi clip-space w'ye bölüp normalize cihaz koordinatlarını üretmektir✓
Açıklama:Perspektif bölme, clip-space koordinatlarını alıp x, y ve z'yi w bileşenine bölerek normalize cihaz koordinatlarını (NDC) üretir. Bu, clipping'den sonra ve NDC'yi pencere/piksel koordinatlarına çeviren viewport dönüşümünden önce gerçekleşir.
Gfx Gpu Pipeline StagesZorluk 2
Viewport dönüşümü neyi ve hangi uzaya çevirir?
- aWorld-space pozisyonlarını doğrudan clip-space pozisyonlarına çevirir
- bNormalize cihaz koordinatlarını pencere/piksel koordinatlarına çevirir✓
- cFragment shader'ın renk çıktısını framebuffer'ın depolama formatına çevirir
- dVertex attribute'larını fragment shader'a geçilen varying'lere çevirir
Açıklama:Viewport dönüşümü, perspektif bölmeden sonraki −1..1 aralığındaki normalize cihaz koordinatlarını, ayarlanmış viewport dikdörtgeninin gerçek pencere/piksel koordinatlarına eşler; rasterizasyon da bunu belirli piksel konumlarında fragment üretmek için kullanır.
Gfx Gpu Pipeline StagesZorluk 2
Perspektif bölmeye göre, primitive'in view volume'a göre clip edilmesi hangi uzayda gerçekleşir?
- aClip space'te, perspektif bölmeden önce, w cinsinden ifade edilen sınırlarla✓
- bWindow space'te, viewport dönüşümü piksel koordinatlarını ürettikten sonra
- cNormalize cihaz koordinatı uzayında, kesinlikle perspektif bölmeden sonra
- dTangent space'te, fragment shader içinde normal mapping ile birlikte hesaplanır
Açıklama:Clipping, sınırların w cinsinden ifade edildiği (örneğin −w ≤ x ≤ w) clip-space view volume'una göre tanımlanır ve bu, koordinatları NDC'ye çeviren perspektif bölmeden önce gerçekleşir. Window space'te veya bölmeden sonra clip etmek farklı, clip-space-dışı bir formülasyon gerektirirdi.