Piksel gölgelendirici

Karesel gölgelendirme anlamına gelen Pixel Shader DirectX 9 ve üzeri oyun grafik kütüphanesinde bulunan grafik işleme komut fonksiyonudur. Yeni nesil olarak tanımlanan birçok oyunda bu özellik şartı aranıldığı için bir önceki nesil ekran görüntü kartları bu özelliği desteklemediği için birçok oyun yazılımı çalışmama durumu yaşanmaktadır.

Bilgisayar grafiklerinde tarayıcı (shader), görüntü yaratımlarını gerçekleştirmek için grafik kaynakları tarafından kullanılan yazılım komutlarıdır. Tarayıcılar 3D uygulamaların, GPU'nun eski sabit iş hattı yerine programlanabilir iş hattını programlayabilmesine olanak tanır. Böylece GPU'nun gelişmiş özelliklerinden daha rahat faydalanılır.

Giriş

Teknik olarak tarayıcı, herhangi bir nesnenin rengini hesaplayan parçadır. GPU'lar geliştikçe OpenGL ve Direct3D gibi büyük grafik kütüphaneleri, kendi API'larında özel tarama fonksiyonları sunmaya başladılar.

Tarayıcı tipleri

  • Tepe tarayıcıları grafik işlemcisine verilen her tepe noktası için bir defa çalıştırılır. Bu işlem, tepe noktasının 3 boyutlu pozisyonun ekranda gözükecek 2 boyutlu koordinatına çevrilmesi için yapılır. Tepe tarayıcısı pozisyon, renk, doku koordinatları gibi özellikler üzerinde işlem yapabilirken yeni bir tepe noktası yaratamaz. Bu tarayıcının çıktısı bir diğer tarayıcıya aktarılır.
  • Geometrik Tarayıcı, herhangi bir ağ üzerindeki tepe noktalarını silebilir veya yenilerini ekler. Geometrik tarayıcılar, var olan ağa hacimsel detay kazandırmak içinde kullanılabilir ki bunu CPU ya yaptırmak ekstra yük getirecektir.
  • Nokta Tarayıcılar her bir noktanın (pixelin) renk değerini hesaplarlar. Grafik iş hattına giden poligonları dolduran ızgara ünitesinden gelir. Nokta tarayıcılar genellikle ışıklandırma efektleri, pütür kaplama (bump mapping) veya ton ayarı için kullanılır.

Basitleştirilmiş grafik işleme birimi işhattı

  • CPU tarayıcı dili ile derlenmiş komutları ve geometri bilgilerini GPU ya yollar.
  • Tepe tarayıcısında geometri hesaplanır ve ışıklandırma hesapları yapılır.
  • Geometrik tarayıcı varsa bazı geometrik değişimler yapılır.
  • Hesaplanan geometrik yapı üçgenlere bölünür.
  • Üçgenler 2×2 pixelden oluşan karelere dönüştürülür.

Paralel işleme

Tarayıcılar, aynı anda, ekrandaki her pixel veya tepe noktası gibi birçok elementi dönüştümek için yazılmıştır. Bu, paralel işleme günümüz GPU'ları çok işlemcili tasarımlarıyla buna olanak tanıyarak bu işlemlerin daha hızlı yapılmasını sağlar.

Tarayıcı programlama

OpenGL 1.5 versiyondan beri C benzeri tarayıcı dilini, başka dıya GLSL'yi içerir. Ayrıca Nvidia tarafından geliştirilen Cg dili (GLSL ile benzer bir sintak kullanır) için de arayüz sunar. Direct3D'de ise tarayıcılar HLSL dili ile programlanır. Ancak tarayıcının karmaşıklığı ve tipi hangi tip Direct3D kullandığınıza bağlı olarak değişir.

Aşağıdaki tablo Direct3D versiyonları arasındaki ilişkiyi gösterir.

Direct3D versiyonu Nokta Tarayıcı Tepe Tarayıcı
8.0 1.0, 1.1 1.0, 1.1
8.1 1.2, 1.3, 1.4 1.0, 1.1
9.0 2.0 2.0
9.0a 2_A, 2_B 2.x
9.0c 3.0 3.0
10.0 4.0 4.0
10.1 4.1 4.1
11 (beta) 5.0 5.0

İşlevi

Bir piksel tarayıcı (shader), her pikselin renk ve diğer özelliklerini hesaplayan bir işlemsel çekirdek fonksiyonudur . Her zaman aynı rengi vermek, bir ışık değeri uygulamak, kabartma eşleme , gölgelendirme, yansıma vurguları, yarı saydamlık ve diğer olguları yapmak gibi görevleri paylaşımlarına göre sınıflandırılır. Pikselin derinliğini değiştirebilir (Z-tamponlama için) ya da birden fazla oluşturma hedefi faalse birden fazla renk çıkarabilir. Tek başına bir piksel tarayıcı çok karmaşık efektler üretemez, çünkü sadece bir piksel üzerinde sahne geometrisi veya komşu piksellerin bilgisine sahip olmadan çalışır.

Ayrıca bakınız

  • Direct3D
  • DirectX
  • Geometry shader
  • Graphics pipeline
  • List of XInput games
  • OpenGL
  • Shader
  • Vertex shader

Başvuru kaynakları

  • GLSL Shader Programlama - Türkçe Dersler 30 Eylül 2020 tarihinde Wayback Machine sitesinde arşivlendi.
  • Shader Programlama - Neslihan Aydınoğlu 5 Ağustos 2009 tarihinde Wayback Machine sitesinde arşivlendi.
  • Shader Programlama Dilleri - Neslihan Aydınoğlu 16 Aralık 2009 tarihinde Wayback Machine sitesinde arşivlendi.
  • OpenGL Shading Language 22 Ekim 2016 tarihinde Wayback Machine sitesinde arşivlendi. – Documentation of Shader in OpenGL
  • GLSL Tutorial (İng.) 5 Mayıs 2020 tarihinde Wayback Machine sitesinde arşivlendi.
  • OpenGL Shading Language examples 22 Ocak 2016 tarihinde Wayback Machine sitesinde arşivlendi.
  • Fundamentals of Pixel Shaders at Gamedev.net
  • OpenGL Shading Language 22 Ekim 2016 tarihinde Wayback Machine sitesinde arşivlendi. – Documentation of Shader in OpenGL
  • GLSL Tutorial (İng.) 5 Mayıs 2020 tarihinde Wayback Machine sitesinde arşivlendi.
  • OpenGL Shading Language examples 22 Ocak 2016 tarihinde Wayback Machine sitesinde arşivlendi.
  • Fundamentals of Pixel Shaders at Gamedev.net