SHADER PROGRAMLAMA NEDİR?
Tanımlanan ışık kaynakları, yüzey materyalleri ve geometri gibi
parametrelerin üretilen görüntüye etkilerinin hesaplanarak yansıtılması
işlemlerini shading olarak tanımlayabiliriz. Aşağıda gösterilen örnekte
GPU(Graphics Processing Unit)’nun oluşturduğu iki ayrı 3 boyutlu sahne
bulunmaktadır. Soldaki görüntü çevre koşullarından etkilenmeyecek
şekilde, sağdaki ise ışık ve materyal bilgileri kullanılarak
oluşturulmuştur.
Grafik kartlarının sahnenin oluşumu için uyguladıkları bir dizi
işleme fixed function pipeline denir. Shader programlama ile yapılan
ise; GPU’nun normal işleyişi sırasında izlediği fixed function
pipeline’a müdahele ederek geliştiricinin istediği eklentileri
yapabilmesidir. Bu durum programlama ile yapabilecekler konusunda
oldukça serbestlik sağlamak ile birlikte, belki daha önce GPU’nun
işleyiş şekli ile çok ilgilenmeyen geliştiricinin bu konuyu iyi
anlamasını gerekli kılmaktadır. Bundan dolayı konuya hemen başlamadan
önce alt yapının incelenmesi için bazı önemli konulara dizinin ilk
yazısında yer vermek daha uygun olacaktır.
GRAFİK PİPELİNE NEDİR?
Grafik Pipeline, GPU’nun 3 boyutlu sahneyi oluşturmak için gerekli
olan elemanları girdi olarak alıp, 2 boyutlu raster imajı üretmek için
uyguladığı bir dizi işleme denir.Bu işleme girdi olarak gelen öğeler:
* Nokta kordinatları,
* Noktaların birleştirilmesi için kullanılacak yöntem (nokta, çizgi, üçgen, polygon, ...) ,
* Renk bilgisi,
* Kaplama koordinatları (texture coordinates),
* Işık kaynakları,
* Materyal bilgisi.
şeklinde sıralanabilir.
Sahnenin hazırlanması için GPU’nun yukarıda sıralanan öğeleri kullanarak uyguladığı işlemleri adım adım incelemek gerekirse;
1.UYGULAMA (Application)
Ürettiğimiz yazılım içerisinden GPU’ya görüntü oluşturmak için
gerekli olan öğelerin (nokta koordinatları, ışık özellikleri, materyal
bilgisi, vb.) aktarılması işlemleri bu kısımda yapılır. Bu işlemler
CPU’nun GPU’ya veri hazırlaması ve aktarması olarak özetlenebilir.
2.GEOMETRİK İŞLEMLER ve RASTERİZASYON İŞLEMLERİ
Bu bölümde GPU’ya gelen vektör grafik formatında olan bir imaj
bilgisini raster imaj’a çevirip video görüntüsü olarak çıktı oluşturma
işlemi (rasterizasyon) yapılır.Vektör Grafik:Bilgisayar grafiğinde
resim bilgisinin geometrik şekiller (nokta, çizgi, üçgen, polygon, ...)
ile matematiksel olarak ifade edilmesidir.Raster Grafik:Resim
bilgisinin pikseller kümesi olarak ifade edilmesidir. Piksel ise bir
imajdaki en küçük renk bilgisine denir.Kırmızı,Yeşil,Mavi bilgisini
içeren 3 ayrı parçadan oluşur.Bu bölümde GPU tarafından uygulanan
adımlara gelince:
* Model ve View dönüşümleri (matris işlemleri),
* Işık etkisinin hesaplanması,
* Projeksiyon (ortografik veya perspektif),
* Kırpma (culling),
* Ekran koordinatlarına dönüştürme.
3.RASTER İŞLEMLERİ
Bu bölüm bir önceki bölümde rasterize edilmiş imaj bilgisindeki
piksel değerleri ile daha gerçekçi bir sahne elde edilmesi için,
piksellere uygulanan bir dizi testi içerir. Bu testleri sıralamak
gerekirse:
* Scissor test,
* Alpha test,
* Stencil test,
* Depth test
Grafik Pipeline ve Shader Programlama
GPU’nun genel iç yapısını yukarıdaki şekilde özetledikten
sonra artık shader programlama yaparak bu sabit yapıda müdahele
edebildiğimiz alanlara kısaca değinebiliriz. İki çeşit shader
programlama türü vardır.
1.Vertex Shader: Yazacağınız bir vertex shader programı ile GPU’ya gönderilen herbir vertex üzerinde işlem yapabilirsiniz.
2.Fragment(pixel) Shader: GPU’nun
oluşturduğu görüntü imajın raster işlemlerine girmeden önceki kısmında
fragment shader programlama işlem yapabilirsiniz.
Bir shader programı kullandığınızda GPU’nun -fixed pipeline- normal
gidişatına müdahele etmiş olursunuz. Bu durumda GPU normalde üstlendiği
tüm fonksiyonaliteleri sizin yazdığınız uygulamaya devreder. Bu
aşamadan sonra artık uygulamanızda grafik kartınızın bu kısmından
beklediğiniz fonksiyonları -eğer ihtiyaç duyuyorsanız - shader
programınız içinde kendiniz uyarlamanız gerekecektir.
Örneğin bir vertex shader yazmanız durumunda gerekli olan dönüşüm
işlemlerini kullandığınız aracı shader dilinin yardımı ile GPU’ya
yaptırtmak size kalan bir işlemdir.
Bahsettiğim konuda Sharder Programlama hakkında biraz bilgi vermeyi denedim konu overclock yönüne dönünce....
Ayrıca GPU üzerinden Overclock programlari ile Pipeline modlarini
açarsanız genelde 12-4 12-8 8-4 şeklindedir 12-8 tanımlayarak overclock
adımı atabilirsiniz bazı ekran kartlarını bu şekilde modlayıp 200$ lik
ekran kartlarının performansına biraz olsun yakınlaşabilirsiniz.
Copyright © Hardiz.Com || Windows XP - Vista İpuçları - Bilgisayar Dersleri Tüm hakları saklıdır.