Plazma sayı 2, sayfa 108

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 108

Kısacası hardware rendered demolarda 2D efektler, aslında tüm piksel efektleri zordur. En uçuk örnekle, animasyon kullanmadan kaliteli Mandelbrot fraktalları çizebilmek oldukça takdir edilecek bir şeydir. (Bu yüzden zaten 3D fraktallar daha yaygındır.) Ayrıca piksellere erişiminiz olmadığı için, PC demolarında hem vektör grafikler kullanıp, hem de göze oldukça hitap edecek görüntüler almak zordur. 2004 yılında yayınlanan We Cell/Kewlers, ekran kartının sadece 2D resim çizmeye izin veren accumulation bufferını kullanarak 3D'den uzak durmuş ve ferah görüntüler sunmuştur. Bir başka deyişe %100 spritelardan oluşan bir demodur.

Piksel işlemleri hardware renderingte bu kadar zorsa coderlar neden hala bu yolda ısrar etmektedirler? Günümüzde yazılabilecek en optimize, en hızlı poligon basma rutininin bile, ekran kartında donanım olarak bulunan işlemleri geçmesi mümkün görünmemektedir. Ayrıca CPU'dan bağımsız çalıştığı için, ekran kartlarını kullanmamak platformdan yarım verim almak anlamına gelecektir. Ama maalesef ekran kartları da codera maksimum esnekliği sağlamamakta. Bu sorunu çözmeye yardımcı olmak için programlanabilir ekran kartları piyasaya çıkmıştır.

Back to Oldskool!

Programcının yazdığı kodlarla nasıl çalışacağını belirlediği ekran kartları ilk olarak 2001 yılında gözükmeye başladı. Fakat o yıllarda yapabildikleri şeyler çok fazla değildi. Şimdi neler yapabildiğini ve ilerde neler yapabileceğini anlamak için tekrar detayları konuşalım.

Ekran kartlarındaki vertex ve piksel işlemlerinden ve bu işlemlere coderın ne kadar hakim olduğundan bahsettik. Coderdan monitöre giden yolda ilk karşımıza çıkan vertex işlemleri idi. Bunlar, gayet basit geometrik işlemlerdi ve coderın istediği çıktıya uygun vertexleri hazırlaması kolaydı. Ama kısıtlayıcı unsur bu vertex ve poligonların basılma hızı idi.

Yeni nesil ekran kartları, normal vertex işlemlerinin yanına bir de coderdan aldığı özel bir kod parçasını yerleştirerek "çizim borusundan" ilerleyen vertexlere, müdahale etme şansı tanıdı. Örneğin bir köşenin aldığı ışık belirlendikten sonra vertexi bu ışığa göre değiştirip bir tür serap efekti elde edebilirsiniz. Ya da bir dinozorun üzerindeki ayrıntılı deri bilgisini (tırtıklar yarıklar vs.) ekran kartı belleğine attıktan sonra bunu, derisiz ve düşük poligona sahip bir dinozorun üzerine yapıştırabilirsiniz. Yüksek poligon ama statik bir deri ve düşük poligon ama hareketli bir dinozor meshi ile yüksek poligon ve hareketli bir dinozor çizmeniz mümkün hale gelebilir. Buradaki en önemli nokta bu gibi kodları coderın tamamen kendisinin yazıp, ekran kartına işlenmek üzere yollaması. Bu kodlara "vertex shader" adı veriliyor.

Klavyeyle gezinmek için ← ve → tuşları.