Bu yılki Gamescom’da Microsoft tarafından Windows için taşınabilir konsol odaklı yeni özelikler duyuruldu.
Bu özelliklerden birisi olan Advanced Shader Delivery (Gelişmiş shader aktarımı), günümüz PC oyuncularının büyük sorunlarından biri olan uzun yükleme ekranlarını ve oyuna ilk girişte yaşanan takılmaları ortadan kaldırmayı amaçlayan bir teknoloji olarak öne çıkıyor.

Bu gecikmeler, grafik shader’larının derlenmesi ve gelecekteki kullanımları için önbelleğe alınması nedeniyle ortaya çıkar.
Shader Nedir?
Shader’lar için GPU üzerinde çalışan ve 3D görsellerin oluşturulması sırasında gerekli hesaplamaları gerçekleştiren küçük programlar diyebiliriz. Bu işlemler; transformation (dönüşüm), tessellation (kaplama), shadowing (gölgelendirme), lighting (ışıklandırma), post-processing (ileri işleme) gibi çeşitli aşamaları kapsar.
Shader’ların yazımında genellikle HLSL (DirectX), GLSL (OpenGL/Vulkan) veya Metal Shading Language (Apple) gibi yüksek seviyeli programlama dilleri kullanılır. Yazılan kodlar derlenerek GPU’nun anlayacağı makine diline çevrilir ve GPU üzerinde çalıştırılabilir hale getirilir. Bu süreç, CPU programlarının C++ gibi dillerde yazıldıktan sonra derlenip binary’ye dönüştürülmesine benzer.
Shader Compilation Stuttering Neden Oluşur?
Shader derleme takılmaları, oyun ilk kez yeni bir shader’a ihtiyaç duyduğunda ortaya çıkar. Oyun motoru, shader kodunu sürücüye iletir ve sürücü, bu shader’ı GPU’nun mimarisine uygun makine diline derler. Bu işlem tamamlanana kadar GPU’ya yeni komut gönderilemez ve tüm işleme kuyruğu beklemek zorunda kalır. Sonuç olarak oyuncu, ekranda ani takılmalar (stutter) yaşar.
Advanced Shader Delivery Nasıl Çalışır?
Oyunlar, shader betiği sayesinde GPU ile etkileşime girer. Yukarıda da bahsettiğimiz gibi shader’lar; ışıklandırma, kaplama, gölgeleme ve benzeri işlemlerden sorumlu olur. Shader kodları, GPU sürücüsü tarafından derlenerek GPU’nun çalıştırabileceği makine diline çevrilir.
Derlenmiş shader’lar belirli bir cihazdaki oyuna, GPU’ya ve sürücüye özgü olduğundan eski yöntemlerle bunları önceden derlemek mümkün değildi. Bu nedenle shader’lar, ya oyun başlatılırken yükleme ekranı sırasında ya da oyun esnasında anlık olarak derlenirdi. Ancak anlık derleme, oyunda takılmalara yol açabiliyordu.
Shader’lar, bir kez derlendikten sonra sürücü tarafından önbelleğe kaydedilir ve yine sürücü tarafından geçersiz kılınana kadar önbellekte saklanırlar.
DirectX ekibi, bu engeli aşmak için yeni bir standart olan State Object Database (SODB) formatını geliştirdi. Bu format, herhangi bir oyundan shader verilerinin toplanıp saklanmasını sağlar.
Microsoft, donanım üreticileriyle iş birliği yaparak shader derleyicisini grafik sürücüsünden ayırdı. Ardından oyunlardan toplanan SODB verileri, bulutta çalışan derleyiciyle birleştirilerek Precompiled Shader Database (PSDB) adı verilen önceden derlenmiş shader veri tabanı oluşturuldu.
PSDB, Xbox mağazası üzerinden dağıtılan oyunlarla birlikte gönderilebiliyor. Böylece oyun ilk kez çalıştırıldığında, gerekli shader’ların zaten Windows önbelleğinde bulunması sayesinde derleme adımı pas geçiliyor ve yükleme süreleri ciddi şekilde kısalıyor. Eğer cihaz sürücü güncellemesi alırsa Microsoft, bunu tespit edip shader önbelleğini otomatik olarak güncelliyor.
Basitçe anlatmak gerekirse: DirectX ekibi, partnerleriyle iş birliği yaparak shader derleme sürecini cihazdan buluta taşıdı ve oyunun indirilme aşamasında önceden hazırlanmış shader’ların dağıtılabilir hale gelmesini sağladı.

Sonuç
DirectX takımı, eylül ayında AgilitySDK’yı çıkaracak. Bu SDK sayesinde geliştiriciler, yeni shader önbellekleme özelliğini ürünlerine entegre edebilecekler. Ayrıca bu teknolojiyi daha fazla cihaza ulaştırabilmek için çalışmalar sürüyor.
Bulut teknolojileri, günümüzün en vazgeçilmez araçlarından biri haline geldi. Özellikle de ölçeklenebilirlik açısından düşündüğümüzde bulut sistemleri, yalnızca genel kullanımda değil; bu tür spesifik problemlerin çözümünde de kritik rol oynamaya devam edecek.
Kaynaklar: Microsoft, tomshardware.com