NVIDIA bir yıl kadar önce, vertex ve pixel shader ünitesine sahip ilk 3D işlemci olan GeForce3'ü piyasaya sürdüğünde, 3D geliştiriciler dünyası vertex shader teknolojisini memnuniyetle karşıladı, fakat pixel shader ünitesinin pek özenilmemiş spesifikasyonlarını eleştirdiler. DirectX 9'un bu durumu değiştirmesi bekleniyordu, yine de yeni Pixel Shader 2.0 spesifikasyonu herkesin beklediği kadar bir sıçrama yapmadı. Eklenen en önemli özellik 64-bit ve 128-bit'lik kayar nokta renk hassaslığı. Bunun yanında, yeni talimatlar eklendi ve maksimum pixel shader talimat sayısı (hala yetersiz gözüken) 160'a çıkarıldı. Ancak hala akış kontrolü yok. NVIDIA'nın çıkaracağı NV30 bunlardan çok ileri gidecektir; ama tabii bunu üç ya da dört ay sonra, NVIDIA'nın yeni işlemcisi gönderildiğinde görebileceğiz.
Kayar Nokta Renk Hassaslığı
Daha önce bahsettiğimiz gibi, PS 2.0'ın en önemli özelliği 64 hatta 128 bit'lik kayar nokta renk hassaslığı eklenmesi. Peki neden bu kadar önemli?
Bugüne kadar bir PC'de kullanabildiğimiz en yüksek renk hassaslığı 32 bit idi. 32 bit'lik bir tamsayı 0 ile 232-1 (4,294,967,295) arasında herhangi bir sayı olabilir. Eğer bu bakış açısından bakacak olursanız, 32 bit'in 4 milyardan fazla farklı rengi desteklediğini söyleyebilirsiniz. Peki bu yeterli değil mi?
Birincisi, 32 bit renk 4 milyar renge izin vermez. Aslında 'RGB' (Red/Green/Blue = Kırmızı/Yeşil/Mavi) renk bilgisi için sadece 24 bit kullanılır. Kalan 8 bit genellikle 'alpha' değerini taşır. 24 bit, 16,777,216 eder ve bu sayı 'gerçek renk' (true color) veya 16,7 milyon farklı renk olarak bildiğimiz değerdir. Hala rakam oldukça büyük gözüküyor. Yine de yakından incelersek, 32 bit renk çok az etkileyicidir. Renk bilgisini taşıyan 24 bit, kırmızı için 8 bit, yeşil için 8 bit ve mavi için 8 bit içerir. Bu demektir ki, her ana renk için, elinizde sadece, 0'dan 255'e kadar tamsayıları içeren, 8 bit var. Bu da çok fazla sayılmaz, değil mi? Bu 8-bit renk hassaslığının ciddi bir eksikliği var; o da dinamiğe izin vermemesi. Dinamik en düşük ve en yüksek değer arasındaki farkı ifade eder. Eğer bir dakikalığına '0' değerini unutursak, ve '1'den başlarsak bu değerden maksimuma ulaşana dek en büyük dinamiğin 255 olduğunu buluruz. İşte bu oyun geliştiricilerinin eleştirdiği noktadır. Yaratıkları 3D dünyalarında hem çok karanlık hem de çok aydınlık alanlar olsun isterler fakat her renk kanalı için 1'den 255'e kadar olan aralık bunun için yeterli gelmez.
Bilgisayar dünyasında sayılarla uğraşmanın iki yolu vardır. Anlaması en kolay olan yol şüphesiz, oldukları gibi depolanan tamsayılardır. Kayar nokta sayıları daha farklı çalışır. Burada sayı, bir imza biti, üs (exponent) için birkaç bit ve 'mantis' için oldukça fazla sayıda bitten oluşur. Formül x = m*2e şeklinde olur; burada 'x' rakam, 'm' mantis, 'e' de üstür. Görebileceğiniz gibi, en küçük ve en büyük kayar nokta sayısı üs tarafından belirlenirken, mantis hassaslığı belirler. 128 bit'lik bir kayar nokta değerinin kullanılması durumunda, her renk kanalı, 1 imza biti, 8 üs biti (7 artı imza) ve 23 mantis bitinden oluşan 32 bit'lik bir kayar nokta hassaslığına sahip olur. Bu da 0.00000000000000000000000000000000000000294 (=2-128)'dan 170,000,000,000,000,000,000,000,000,000,000,000,000 (=2127)'a kadar bir dinamik aralığı ve 23 bit daha fazla hasaslık ile, 32 bit'lik renk değerinin 8 bitlik hassaslığından çok daha yüksek bir hassaslık sağlar.
Dinamikteki ve hassaslıktaki artış, resim kalitesinde ciddi bir sıçrama yaptırabilir. Ayrıca daha önce yapılması mümkün olmayan birçok yeni efekte de kapıyı açabilir.
Solda aynı sahneyi 32 bit renk ile görüyorsunuz; sağda ise 128 bit kayar nokta renk hassaslığı kullanılarak renk ve parlaklık dinamiklerinde sağlanan hissedilir artışı görüyorsunuz.
ATi, 64 bit hassaslığında normal bir harita kullanılarak, dot3 bump mapping efekti ile görsel olarak geliştirilmiş düşük poligonlu bir araba demosu gösterdi. Aşağıdaki demo resimlerinde de görebileceğiniz gibi, bu tip efektlerin 32 bitlik tamsayılara sahip normal haritalarla yapılması imkansızdı.
Ancak ne yazık ki 128 bit renk, 32 bit rengin kullandığı bellek bant genişliğinin dört katına ihtiyaç duyuyor. Bellek teknolojisinin buna yetişebilmesi için bir süre daha gerekecek gibi.