Rasterization (tarama/rasterleştirme), üç boyutlu ilkellerin (üçgenler, çizgiler, noktalar) vektör tanımını ekranda görüntülenmek üzere bir dizi piksele (parçacık) dönüştürme işlemidir. Khronos Group, 2025'e göre rasterizasyon, grafik boru hattının Vertex Shader ile Fragment Shader arasında yer alan otomatik (programlanamaz) bir aşamasıdır. Rasterization ekranın hangi piksellerinin hangi üçgene ait olduğunu belirler ve her parçacık için enterpole edilmiş nitelikleri hesaplar.
Önemli Noktalar
Rasterization, geometrik ilkelleri (üçgenler, çizgiler) Fragment Shader tarafından daha sonra işlenmek üzere bir dizi parçacığa dönüştüren grafik boru hattının bir aşamasıdır. Girdi verileri, ekran koordinatlarındaki üçgen köşeleri ve bunların nitelikleridir (renk, normaller, UV). Çıktı, enterpole edilmiş niteliklere sahip bir dizi parçacıktır.
Programlanabilir gölgelendiricilerin (Vertex Shader ve Fragment Shader) aksine rasterizasyon sabit (programlanamaz) bir aşamadır. Geliştirici rasterizasyon algoritmasını değiştiremez ancak parametrelerini kontrol edebilir: kırpma modu (culling), çizgi genişliği, derinlik kaydırması (polygon offset) ve çoklu örnekleme.
Neredeyse tüm modern gerçek zamanlı grafikler — oyunlar, UI, AR/VR — rasterizasyon kullanır. 60 FPS'de kare başına milyonlarca üçgeni işleyebilen en yüksek performanslı render yöntemidir. GPU rasterleştiricileri, özel ROP (Render Output Units) blokları aracılığıyla aynı anda binlerce üçgenin paralel işlenmesi için optimize edilmiştir.
Üçgen rasterizasyonu, Vertex Shader köşeleri ekran koordinatlarına dönüştürdükten sonra başlar. GPU bir üçgenin üç köşesini alır ve ekranın hangi piksellerinin bu üçgenin içinde olduğunu belirler.
Süreç üç ardışık adım içerir: üçgenin piksel cinsinden sınırlayıcı kutusunun (bounding box) belirlenmesi — sınırlayıcı kutu içindeki her pikselin üçgene aitliğinin kontrolü (kenar fonksiyonu) — kapsanan her piksel için enterpole edilmiş niteliklerin (barysentrik koordinatlar) hesaplanması. Kenar fonksiyonu, bir noktanın üçgen kenarının hangi tarafında olduğunu belirleyen doğrusal bir denklemdir.
| Aşama | Açıklama | Sonuç |
|---|---|---|
| Kırpma (Clipping) | Görüntü alanı sınırları dışındaki üçgenlerin kesilmesi | Görünür ilkeller |
| Görüntü alanı dönüşümü | Ekran koordinatlarına dönüştürme | Piksel koordinatları |
| Üçgen kurulumu | Kenar fonksiyonları ve sınırlayıcı kutu hesaplama | Rasterizasyon parametreleri |
| Parçacık oluşturma | Kapsama testi ve enterpolasyon | Parçacıklar + nitelikler |
Rasterization çeşitli algoritmalarla uygulanabilir ve her birinin performans ile kalite arasında kendi ödünleşimleri vardır. Modern GPU'lar birden fazla yaklaşımın bir kombinasyonunu kullanır.
İlk GPU'lar için geliştirilen klasik rasterizasyon algoritması. Üçgen satır satır (scanline) işlenir: ekranın her satırı için üçgenin giriş ve çıkış noktaları belirlenir ve aralarındaki tüm pikseller doldurulur. Scanline conversion büyük üçgenler için verimlidir ancak rastgele şekilli üçgenler için karmaşık mantık gerektirir.
Modern GPU'lar yarım uzay rasterizasyon yöntemini kullanır: üçgenin her kenarı için bir kenar fonksiyonu hesaplanır — bir tarafta pozitif, diğer tarafta negatif olan doğrusal bir denklem. Üç kenar fonksiyonunun tümü pozitifse piksel üçgene aittir. Half-space rasterization kolayca paralelleştirilebilir ve SIMD GPU mimarileri için çok uygundur.
Mobil GPU'lar (Qualcomm Adreno, ARM Mali) Döşeme Tabanlı İşleme (Tile-Based Rendering — TBR) kullanır. Ekran küçük döşemelere (16x16 veya 32x32 piksel) bölünür ve rasterizasyon her döşeme için ayrı ayrı gerçekleştirilir. Bu, çerçeve arabelleğini hızlı yerel bellekte (döşeme belleği) depolayarak bellek erişimlerini en aza indirir. TBR, mobil cihazlar için kritik olan güç tüketimini azaltır.
Rasterization ve ışın izleme (ray tracing), 3B grafik işleme için temelde farklı iki yaklaşımdır. Rasterizasyon gerçek zamanlı uygulamalarda baskınken, ışın izleme çevrimdışı işlemede kullanılır ve yavaş yavaş gerçek zamanlıya (RTX uyumlu GPU'larda) girmektedir.
| Parametre | Rasterization | Ray Tracing |
|---|---|---|
| Prensip | Üçgen → parçacıklar | Işın → sahne kesişimi |
| Hız | Çok hızlı (milyonlarca üçgen/kare) | Yavaş (binlerce ışın/kare) |
| Kalite | Ek teknikler gerektirir (gölge, yansıma) | Fiziksel olarak doğru gölge ve yansımalar |
| Mobil GPU'lar | Standart yöntem | Sınırlı destek (A17 Pro, Snapdragon Gen 3) |
| Güç tüketimi | Düşük | Yüksek |
Rasterizasyon aliasing sorununa yol açar — üçgen sınırlarında pürüzlü kenarlar (jaggies). Bunun nedeni pikselin ayrık olması ve bir üçgen tarafından kısmen kapsanamamasıdır. Aliasing ile mücadele için çoklu örnekleme (MSAA) kullanılır.
MSAA (Çoklu Örnek Kenar Yumuşatma), artırılmış örnekleme oranında (2x, 4x, 8x) rasterizasyon gerçekleştirir. Piksel başına bir örnek yerine, her biri üçgen kapsaması için test edilen birden fazla alt örnek kullanılır. MSAA 4x, piksel başına 4 alt örnek işleyerek işleme çözünürlüğünü tamamen artırmadan belirgin kenar yumuşatma sağlar.
MSAA'nın aksine, işlem sonrası kenar yumuşatma yöntemleri (FXAA, SMAA, TAA) rasterizasyondan sonra nihai görüntüyü analiz ederek çalışır. FXAA (Hızlı Yaklaşık Kenar Yumuşatma) görüntü kenarlarını algılar ve yumuşatma için bulanıklık uygular, MSAA'dan önemli ölçüde daha hızlı çalışır ancak daha düşük kalitededir.
Rasterization modern GPU'larda özel donanım blokları — ROP (Render Output Units) tarafından gerçekleştirilir. ROP sayısı, GPU'nun saniyede işleyebileceği piksel sayısı olan doldurma hızını (fill rate) doğrudan etkiler.
Mobil GPU'lar (Döşeme Tabanlı İşleme) için kritik faktörler şunları içerir: erken-Z reddi (early-Z rejection) ile overdraw'u en aza indirme, görünmeyen üçgenleri kaldırmak için arka yüz kırpma (back-face culling) kullanma ve diğer nesneler tarafından tamamen kaplanmış üçgenleri atmak için gizleme kırpması (occlusion culling) kullanma.
Sıkça Sorulan Sorular
Rasterizasyon, üçgenleri ekranda piksellere dönüştürme işlemidir. GPU üç boyutlu bir üçgen alır, ekranın hangi piksellerini kapladığını belirler ve renklendirme için Fragment Shader'a gönderir.
Rasterizasyon üçgenleri ekrana yansıtır ve piksel kapsamasını belirler (çok hızlı). Işın izleme kameradan ışınlar gönderir ve geometri ile kesişimi kontrol eder (fiziksel olarak daha doğru ancak önemli ölçüde daha yavaş).
Rasterizasyon sırasında bir piksel ya tamamen bir üçgene aittir ya da ait değildir — bu nedenle pürüzlü kenarlar (aliasing) oluşur. MSAA, piksel başına birden çok alt örnek kullanarak kenarları yumuşatırken, FXAA son görüntüye bir filtre uygular.
Hayır, rasterizasyon grafik boru hattının sabit bir aşamasıdır. Geliştirici algoritmayı değiştiremez ancak ayarları kontrol edebilir: kırpma (culling), çokgen kaydırma (polygon offset), rasterizasyon modu (noktalar, çizgiler, üçgenler) ve MSAA parametreleri.
Döşeme Tabanlı İşleme (TBR), ekranı döşemelere böler ve bunları küresel VRAM yerine hızlı yerel bellekte işler. Bu, pil ile çalışan mobil cihazlar için kritik olan güç tüketimini ve bant genişliğini büyük ölçüde azaltır.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun