Örnek sorular
Gfx Forward Deferred ArchitecturesZorluk 1
Forward rendering'de hem nesne sayısı hem ışık sayısı arttıkça shading maliyeti kabaca nasıl ölçeklenir?
- aYalnızca ışık sayısıyla ölçeklenir, nesne sayısından bağımsızdır
- bNesne sayısı ile ışık sayısının çarpımıyla ölçeklenir✓
- cNesne sayısı ile ışık sayısının toplamıyla ölçeklenir
- dYalnızca nesne sayısıyla ölçeklenir, ışık sayısından bağımsızdır
Açıklama:Forward rendering her nesneyi, onu etkileyen her ışık için ayrı ayrı shade eder; bu yüzden toplam iş nesne sayısı ile ışık sayısının çarpımıyla büyür. İkisini toplamak ya da birini yok saymak, her ek ışığın etkilediği her nesneyi yeniden shade ettiği gerçeğini yansıtmaz.
Gfx Forward Deferred ArchitecturesZorluk 2
Deferred shading'de ışıklandırma geçişinin maliyeti temelde neyle orantılıdır?
- aNesne sayısı ile ışık sayısının çarpımıyla
- bVertex aşamasına gönderilen poligon sayısıyla
- cEkran piksel sayısı ile ışık sayısının çarpımıyla✓
- dYalnızca nesne sayısıyla, ışık sayısından bağımsız olarak
Açıklama:Deferred shading ışıklandırmayı ekran uzayına taşır: her ışık için shader, o ışığın etkilediği pikselleri işler; bu yüzden maliyet sahnedeki nesne sayısından çok ekran çözünürlüğü ile ışık sayısının çarpımını izler. Poligon sayısı ve nesne sayısı tek başına geometri gönderimini anlatır, ışıklandırma geçişini değil.
Gfx Forward Deferred ArchitecturesZorluk 2
Deferred shading'i forward rendering'den ayıran temel fikir nedir?
- aAntialiasing için her nesneyi iki kez daha yüksek çözünürlükte render eder
- bDerinlik tamponunu görünürlük için stencil tamponuyla değiştirir
- cGeometri geçişi başlamadan önce tüm dokuları sıkıştırır
- dShading'i geometriden ayırıp piksel başına saklanan veriden bir kez shade eder✓
Açıklama:Deferred shading önce yüzey özelliklerini (albedo, normal, roughness, depth) bir geometri geçişinde tamponlara yazar, sonra saklanan bu veriyi okuyarak ekrandaki her piksel için ışıklandırmayı bir kez hesaplar; o pikselde kaç nesnenin üst üste bindiği önemli değildir. Diğer seçenekler ilgisiz ya da uydurma mekanizmalar tanımlıyor.
Gfx Forward Deferred ArchitecturesZorluk 3
Bir sahnede görece az nesne ama çok sayıda küçük dinamik ışık var. Bu durumu hangi mimari genelde daha iyi kaldırır ve neden?
- aDeferred, çünkü ışıklandırma maliyeti artık nesne-ışık örtüşmesine bağlı değildir✓
- bForward, çünkü ışık sayısından bağımsız olarak her zaman deferred'dan daha az piksel shade eder
- cDeferred, çünkü her ışığı ayrı bir tam sahne geçişi olarak render eder
- dForward, çünkü ışık verisini shading'den önce bir G-buffer'da saklar
Açıklama:Çok sayıda ışıkta forward'ın nesne-başına-ışık maliyeti hızla büyür, çünkü her ışık dokunduğu her nesne için ayrıca değerlendirilmelidir. Deferred bunun yerine her ışığı ekran pikselleri üzerinde değerlendirir, böylece maliyet nesne-ışık örtüşme sayımına bağlı olmaktan çıkar; bu yüzden burada genelde daha iyi ölçeklenir. Diğer seçenekler mekanizmayı ters çeviriyor ya da uydurma davranış anlatıyor.
Gfx Forward Deferred ArchitecturesZorluk 1
Tipik bir G-buffer, piksel başına hangi veri kümesini saklar?
- aNihai lit renk, shadow map texel'leri ve aktif ışık listesi
- bYalnızca nihai birleştirilmiş renk ve karenin exposure değeri
- cAlbedo, yüzey normali, roughness/metallic ve derinlik✓
- dNesne uzayındaki vertex pozisyonları ve tam dönüşüm matrisi yığını
Açıklama:G-buffer, sonradan shade etmek için gereken piksel başına yüzey özelliklerini tutar: albedo (temel renk), normal, roughness/metallic ve derinlik. Bu aşamada nihai lit renk henüz yoktur; ham vertex pozisyonları ya da matris yığını da piksel başına saklanan veri değildir.
Gfx Forward Deferred ArchitecturesZorluk 2
G-buffer kanalında yüzey normalini paketlemek için oktahedral kodlama neden sıkça kullanılır?
- aNormali maksimum precision için üç ayrı 32-bit float olarak saklar
- bNormali bir yön yerine bir ışık indeksine çevirir
- cShading gürültüsünü azaltmak için normali iki tam kopya halinde çoğaltır
- dBirim normali iki bileşenle saklar, bant genişliği kazandırır✓
Açıklama:Oktahedral kodlama, birim uzunluktaki normali 2B bir kareye izdüşürür; böylece yalnızca iki bileşen saklanması yeterlidir, üçüncüsü shader içinde geri hesaplanır. Bu, üç tam bileşen saklamaya kıyasla normalin kapladığı alanı küçültüp G-buffer bant genişliğini doğrudan azaltır. Diğer seçenekler ilgisiz ya da çelişkili şemalar anlatıyor.