1. Anasayfa
  2. Bilgisayar

DirectX 11 İle DirextX 12 Arasındaki Fark Nedir?

DirectX 11 İle DirextX 12 Arasındaki Fark Nedir?
0

DirectX 12 iki yıl önce piyasaya sunuldu. Bu dönemde kullanıcılara sunduğu en önemli özellikler arasında performansında ve verimliliğinde daha yüksek kalite yer alıyordu. Özellikler arasında daha kaliteli CPU kullanımı ve daha yakın metal erişimi bulunuyordu. Ek olarak, ışın izleme ve DXR ( DirectX ışın izleme) teknolojileri de özellikle arasındaydı. Peki DirectX 12 nedir? Ve DirectX 11 ve DirectX12 arasında ne tür farklılıklar bulunur? Bu sayfada konuyla ilgili detaylı bilgilere göz atabilirsiniz.

DirectX Nedir? : En Basit Tanımıyla DirectX Bir Uygulama Programlama Arayüzüdür (API)

DirectX bilgisayarlarda video oyunlarının çalıştırılmasını sağlayan bir API yani uygulama programlama arayüzüdür. Bu noktada DirectX’in Vulkan ve OpenGL arayüzlerine benzediğini söyleyebiliriz. Diğer örneklerinin aksine DX Microsoft’ta çalıştırılmak üzere oluşturulmuş bir bir platformdur. Bu platform yalnızca Microsoft’ta yerel olarak faaliyet gösterebilir. OpenGL ve Vulkan ise Mac’in yanı sıra Linux işletim sistemlerinde de çalışabilir.

Peki, bir grafik uygulama programlama arayüzü olan DirectX ne işe yarar? DirectX grafik sürücüsü ve oyun motoru arasında bir aracı olarak çalışır. Aynı zamanda da çekirdek ile etkileşime girer. Grafik uygulama arayüzleri oyun tasarımı ve mekanikleri gerçekleşir. Bu durum Microsoft Paint uygulaması gibi düşünülebilir. Oyun paint’de boya yapmak ve boyanın kullanılması da programlama arayüzü şeklinde kabul edilebilir. Fakat paint’in aksine grafik API çıktı programı sadece tasarımda kullanılan API tarafından okunabilir. Genellikle API’lar belirli bir işletim sistemi için tasarlanırlar. Örneğin, PS4 oyunlarının Xbox One’da çalışamamasının sebebi de bundan kaynaklanır.

DirectX 12 Ultimate ise bu genellemenin dışına çıkan ilk API’dir. DirectX 12 hem Windows’ta hem de Xbox Series X’te kullanılabilecek. Yani DirectX Ultimate’ın iki platformu birleştiriyor.

DirectX 11 vs DirectX 12: PC Oyuncularının Bilmesi Gerekenler

DirectX 11 vs DirectX

DirectX 12’nin PC oyuncuları için birtakım avantajları bulunuyor.

Çok Çekirdekli Merkezi İşlem Birimleriyle (CPU) Daha İyi Ölçeklendirme

Düşük seviyeli DirectX 12 ve Vulkan gibi API’larla ilgili bahsedilmesi gereken önemli avantajlardan biri iyileştirilmiş merkezi işlem birimi kullanımıdır. DirectX 9 ve DirectX 11 baz alınarak yapılmış oyunlarda, birçok oyun farklı mekanikler için 2 ila 4 çekirdek kullanır: Fizik, yapay zeka (AI), draw-callar gibi. Bazı oyunlarınki ise bir tane ile sınırlandırılmıştır. DirectX 12 sayesinde bunu değiştiriyor. DirectX 12’de oyunun yükü tüm çekirdekler arasında aynı seviyede paylaştırılıyor. Böylece birden fazla çekirdeği olan işlem birimleri oyuncular için daha uygun hale geliyor.

Maksimum Donanım Kullanımı

AMD şirketinin grafik işlem birimlerinin DirectX 12 oyunlarının diğer NDVIDIA parçalarından daha fazla sevildiği fark edilmiş olabilir. Peki bunun sebebi nedir?

Bu durumun sebebi daha iyi kullanım olanağıdır. Genel olarak AMD donanımının sürücü desteği yönünden NDVIDIA’dan daha geride olduğu söylenebilir. DirectX 12 ise bazı kullanımları geliştirmek için birçok teknoloji sağlıyor. Örneğin, birçok boru hattının ayrı aşamalarının birlikte çalışmasına imkan sunan asenkron hesaplama da bu teknolojilere dahil. Böylece kalitesiz sürücü desteği oyuncular için bir sorun olmaktan çıkıyor.

Metal Desteğe Yakınlık

DirectX 12’nin en büyük avantajlarından bir diğeri ise geliştiricilere oyunlarının donanımı kullanması üzerinde daha çok yetki vermesidir. Daha öncelerde bu durum daha soyuttu ve genelde sürücüler ve API tarafından hallediliyordu. Frostbyte ve Unreal gibi motoların daha düşük seviyede araçlar sağladığını daha unutmamak gerek.

Bu noktada geliştiricilere görev düşüyor. Geliştiriciler daha yakın metal desteğe sahip oluyor. Bu da render sorumluluklarının ve kaynak paylaşımının oyun motorları tarafından grafik sürücüleri yardımı ile halledildiği anlamına geliyor.

Bağımsız geliştiriciler için birçok GPU mimarisi bulunması ve hepsinin optimizasyonun yapılması imkansız olduğu için bunu iki ucu keskin bir kılıca benzetebiliriz. Unreal, CryEngine ve Unity bunu onlar yerine gerçekleştiriyor ve odağını sadece tasarımda topluyor.

DirectX 12 Donanım Kullanımını Optimize Ederek Performansı Nasıl Geliştiriyor?

DirectX 12

Bazı API geliştirmeleri bu kazanımları daha basit bir hale getiriyor:

Çağrı Başına Programlama Arayüzü İçeriği

Her uygulamada olduğu üzere, DirectX’ benzer grafik API’leri, dahili API durumunu takip eden kaynaklar, tahsis ve uygunluk gibi temel iş parçacığı özelliği barındırır. DirectX 9 veya 11 ile bu durum küresel bir boyuta ulaşır. PC’de çalıştırılan oyunlar, bu durumu API’a gönderilen draw call’lar sayesinde değiştirir ve sonrasında uygulama için GPU’ya gönderir. Çalışmasında tek bir küresel içerik ve iş parçacığı olduğu için, draw call’lar sürekli hatalar verebileceğinden çoklu iş parçacığı oluşumunu engelleyebilir. Küresel durumu, durum çağrıları ile değiştirmek daha yavaş bir süreçtir ve sürecin bütününü daha karmaşık bir hale getirebilir.

DirectX 12 ile draw call’lar esnekleşir. Tek bir küresel durum yerine, uygulamanın her bir draw call’u kendi daha küçük duruma sahiptir. Bu draw call’lar gerekli verilere ve ilgili işaretçilere ev sahipliği yapar ve diğer çağrılardan ve çağrıların durumlarından bağımsız işler. Bu da farklı draw call’ların birçok iş parçacığı kullanmasına ortam yaratır.

Boru Hattı Durum Nesneleri

DirectX 11’de GPU boru hattındaki nesneler Vertex, Shader, Hull Shader, Geometry Shader gibi geniş bir durum yelpazesinde yer alır. Bu durumlar genellikle birbirlerine bağımlıdır önceki aşama sonlandırılmadan bir sonraki aşama başlayamaz. Bir sahnedeki geometri işlenmek üzere grafik işleme birimine gönderildiğinde, gerekli kaynaklar ve donanım harmanlama, derinlik kalıbı ve ayırma durumları ile ilgili olarak değişiklik gösterebilir.

DirectX’teki tüm nesnelerin çalışma sürelerinde tek başlarına tanımlanmaları gerekir. Ayrıca önceki durum sonlanmadan diğer durum başlayamaz çünkü gölgelendirici, TMU ve ROPs gibi farklı donanım bölümlerine ihtiyaç duyarlar. Bu durumda donanım yetersiz bir konuma gelir ve yükün artmasıyla birlikte draw call’lar azalır.

Üstte bulunan karşılaştırmada HW 1 durumu gölgelendirici kodunu temsil eder, 2 ise rasterleştirici ve kontrol akışının bir birleşimidir ve rasterleştirici ile gölgelendiricileri birbirine bağlar. Durum 3 de karışım ve piksel gölgelendirici arasında bulunan bağlantıyı temsil eder. Vertex gölgelendirici, HW 1 ve 2 durumları, rasterleştirici 2 durumunu ve piksel gölgelendirici 1 ve 3 durumlarını etkiler. Daha önce bahsedildiği gibi, sürücü genellikle bağlantıların çözümlenmesini beklediği için ek CPU yükleri devreye girer.

DirectX 12 oluşturulduktan sonra kesinleştirilen Boru Hattı Durum Nesnelerini (PSO), çeşitli durumlar ile değiştirir. Basitçe tanımlamak gerekirse Boru Hattı Durum Nesneleri temsil ettiği draw call’un durumunu belirten bir nesnedir. Bir uygulama gerekli görülen miktarda PSO oluşturabilir ve ihtiyaçlar doğrultusunda bunlar arasında değişim yapabilir. Söz konusu PSO’lar vertex, pixel, domain, hull ve geometrik gölgelendirici de dahil olmak üzere gölgelendiricilerin hepsi için bayt kodu içerir ve ihtiyaç başına başka bir durum veya nesneden bağımsız herhangi bir duruma dönüştürülebilirler.

AMD ve NVIDIA’nın en son GPU’ları, DirectX 12’nin de yardımı ile Görev ve Ağ Gölgelendiricleri sunuyor. Son sunulan gölgelendiriciler, daha esnek bir yaklaşım için DX 11 Boru Hattı’ndaki farklı ağır işleyen gölgelendirici aşamalarının yerini alıyor.

Ağ gölgelendiricisi alan adı ve geometrik gölgelendiriciler ile aynı görevi üstleniyor fakat dahili olarak tek iş parçacıklı model yerine çoklu iş parçacıklı model kullanıyor. Görev gölgelendiricisi de buna benzer bir şekilde çalışıyor. Bu noktada en büyük fark ise gövde gölgelendiricisinin girdisi yamalar ve mozaikli nesnenin çıktısı iken, görev gölgelendiricisinin girdi ve çıktısı kullanıcılar tarafından tanımlanıyor.

Aşağıda yer alan kısımda, işlenmesi gereken ve sayısı binleri bulan nesneler bulunuyor. Geleneksel modelde, her biri CPU’dan ayrı bir draw call’a ihtiyaç duyar. Fakat görev gölgelendiricisi sayesinde, farklı nesneler gönderilen tek bir çağrıyı kullanıyor. Ardından görev gölgelendiricisi bu nesneleri paraleller halinde işliyor ve işi eş zamanlı olarak çalışan ağ gölgelendiricisine yönlendiriyor. Sonrasında ise sahne 3D veya 2D dönüşüm için rasterleştiriciye gönderiliyor.

Bu yaklaşım sahne başına düşen draw çağrılarının miktarını önemli derecede düşürmeye yardım ederek detay seviyesini arttırıyor.

Ağ gölgelendiricileri bir diğer özelliği ise amplifikasyon gölgelendirici aracılığıyla kullanılmayan üçgenlerin seçilmesini kolaylaştırır. Bu aşama gölge gölgelendiricisinden önce gerçekleşir ve gerekli ağ gölgelendiricisi iş parçacığı grup sayısını belirler. Bunlar çeşitli ağ örgülerini olası etkileşimler ve ekran görünürlüğü için test eder ve istenilen ayıklanmaları gerçekleştirir. İşlemenin bu erken aşamasında geometri ayıklanması büyük ölçüde performans kalitesini kanıtlar niteliktedir.

Komut Dizisi

DirectX 11’de GPU’ya gönderilen sadece bir dizi bulunur. Bu durum CPU çekirdeklerinde eşit olmayan bir dağılıma sebebiyet verebilir ve çoklu iş parçacıklı CPU’ları bozabilir.

Bu vadeli bağlam aracılığıyla belirli bir ölçüde azaltılabilir fakat bu durumda dahi son aşamada CPU’ya gönderilen bir komut akışı olur. DirectX 12, ayrı ayrı uygulanabilen komut listeleri kullanarak çoklu kullanımı arttıran yeni bir model sunuyor. Bu model iş yükünü farklı kaynaklara ihtiyaç duyan daha küçük komutlara bölerek eşzamanlı yürütmeye izin veriyor. Asenkron hesaplama da grafik ve hesaplama komutlarını farklı dizilere böler ve onları aynı zamanda uygulayarak benzer bir şekilde çalışır.

Kaynak Bağlama

DirectX 11’de kaynak bağlama donanım kullanımı açısından olmasa da oldukça soyut ve kullanışlı. Öyle ki diğer birtakım donanım bileşenleri kullanılmadı veya boşta kaldı. Çoğu oyun motoru kaynakların tahsis etmek ve onları GPU boru hattı’ndaki çeşitli gölgelendirici aşamalarına bağlamak için görüş nesnelerini kullanır.

Nesneler çizim esnasına boru hattı boyunca yuvalara bağlanır. Gölgelendiriciler de bu yuvalardan ihtiyaç duyulan verileri oluşturur. Bu modelin bir dezavantajı da vardır. Şöyle ki oyun motorunun farklı bir kaynağa gereksinimi olduğunda bağlamalar işlevsiz duruma düşer ve yeniden tahsis edilmeleri gerekir.

DirectX 12, kaynak görüşlerinin yerine tanımlayıcı yığın ve tablolar koyar. Tanımlayıcı ise bir kaynak ile ilgili bilgi barındıran küçük bir nesnedir. Bunlar, sırayla yığın halinde depolanan tanımlayıcı tablolar meydana getirmek için birlikte gruplandırılır.

En iyi senaryoda, tanımlayıcı tablo bir tür kaynak ile ilgili bilgi depolar. Ayrıca yığın bir ila daha fazla çerçevenin oluşturulması için ihtiyaç duyulan tüm tabloları barındırır. GPU boru hattı, bu veriye tanımlayıcı tablo dizini yardımı ile erişim sağlar.

Tanımlayıcı yığını gerekli tanımlayıcı verilerini halihazırda bünyesinde barındırır. Farklı bir kaynak topluluğuna gerek olduğunda tanımlayıcı tablolar değiştirilir ki bu kaynakların en baştan bağlanmasından çok daha etkilidir.

DirectX 12’nin diğer özellikleri yeni grafik efektleri olan duman, ateş ve ışıklandırma ile düşük level API olan düşük CPU yüküdür.

DirectX Işın İzleme (DXR): NVIDIA ışın izlemeyi RTX şeklinde isimlendirir ve gerçek zamanlı ışın izleme için bir API desteğidir.

Değişken Hız Gölgelendirme: Değişken hız gölgelendirmesi GPU’nun ekranda daha görülür olan ve kare başına etkilenen kısımlarına odaklanmasına yardımcı olur. Örneğin bir nişancıda bu alan artı sembolünün etrafındaki alandır. Bunun aksine, ekran sınırına yakın alan genellikle odak alanının dışarısında kalır ve belirli bir noktaya kadar önemsenmeyebilir.

Bu geliştiricilerin belirgin görsel kaliteyi etkileyen bölümlere odaklanabilmesini sağlar ve çevredeki gölgelendirmeyi azaltır.

DHG ikiye ayrılır: İçeriğe Uyarlanabilen Gölgelendirme ve Harekete Uyarlanabilen Gölgelendirme

İUG 16×16 ekran döşemelerinin hepsinin tek tek gölgelenmesini sağlar ve GPU’nun dikkat çeken kısımlarda gölgelendirme oranının artmasına ve diğer kısımlarda azalmasına izin verir.

Harekete uyarlanabilen gölgelendirme isminden de anlaşılacağı üzere hareket halindeki nesnelerin gölgelendirme oranını arttırır. Ek olarak, sabit duran nesnelerin de gölgelendirme oranını azaltır. Örneğin, yarış oyunlarında arabaların gölgelendirmesi artacaktır ve gökyüzü ile yolun dışında kalan alanların önceliği ise ilk sıralarda olmayacaktır.

Çoklu GPU Desteği: DirectX 12 açık ve kapalı olmak üzere iki tür çoklu GPU desteğine sahiptir. Kapalı olan özünde SLI/XFX’dir ve işi tedarikçi sürücüye bırakır. Açık olan ise daha ilginçtir ve oyun motorunun iki GPU’nun paralel bir şekilde nasıl çalıştığını kontrol etmesine olanak sağlar. Bu farklı tedarikçilerden (dGPU ve iGPU da dahil) olanlar da dahil olmak üzere farklı GPU’ların ölçeklendirilmesi, karıştırılması ve eşleştirilmesine zemin hazırlar.

Diğer bir önemli avantaj ise iki GPU’nun VRAM resimleri yansıtılmaz ve video hafızasını iki katına çıkarmak üzere depolanabilir. Bu ve diğer birçok özellik DirectX 12’yi PC oyunculuğunun yazılım sahasında önemli bir gelişme konumuna getiriyor.

DirectX 12 Ultimate ile DirectX 12 Arasındaki Farklılıklar Nelerdir?

DirectX 12 Ultimate ile DirectX 12

DirectX 12 Ultimate, var olan DirectX 12’nin kademeli olarak yükseltilmiş versiyonudur. Ana avantajı ise çapraz platform destekli olmasıdır. Yeni Xbox Series X oyunları ve PC oyunları birlikte bunu kullanabilir. Ayrıca DirectX 12 Ultimate platformlar arasında taşımayı basitleştirirken, geliştiricilerin oyunlarının optimizasyonunu en son donanımlar için yapmalarını kolaylaştırır. Geçen sene Xbox Series X çıktığında, geliştiriciler uzun süredir aynı grafik API’lar ile çalışan donanımları (NVIDIA Turing) kullanıyordu. Bu da taşıma ve optimize etme sürecini daha kolay bir hale getirdi. Ek olarak, performansı artırarak en son çıkan PC donanımı kullanımına izin veriyor. Sonuç olarak, DirectX’i 12 Microsoft’un Xbox ve PC oyun platformlarını bir araya getirmeyi hedeflediği bir adım olarak nitelendirebiliriz.

Ayrıca DirectX ışın izleme 1.1, sampler feedback, ağ gölgelendiricileri ve değişken hız gölgelendirme konseptleri de bu adımla birlikte kullanıcılara tanıtılıyor.  Ağ gölgelendirici ve değişken hız gölgelendirici önceden NVIDIA’nın RTX Turing GPU’larında destekleniyordu ama şimdi yeni çıkacak oyunların yanı sıra geliştiriciler tarafından da benimsenecekler.

Doku Örnekleyici Geri Bildirimi: DÖGB Microsoft’un oldukça önem verdiği bir bir konu. DÖGB’nin oyunda gösterilen ve gösterilmeyen dokuların kaydını tuttuğunu söyleyebiliriz. Ardından kullanılmayan dokular hafızadan atılır ve net VRAM kullanımına maksimum 2.5 kat olacak şekilde katkı sağlar. DÖGB olmadan küresel için tüm doku kaynakları hafızaya yüklenir. DÖGB olduğuna ise sadece ekranda görülen kısımlar tutulurken kullanılmayan bitler atılır ve değerli hafıza korunmuş olur.

Bu geçici olarak kareler arasında da yapılabilir. Çoğunlukla statik bir görüntüde uzakta olan nesneler birçok kare üzerinde (mesela 2 ile 4 veya daha fazla kare üzerinde) yeniden gölgelendirme kullanabilir. Kaydedilmiş grafik performansı yakındaki nesnelerin ya da kalitede gözle görülür bir etkisi olan yerlerin kalitesini yükseltmek için kulanılabilir.

DXR 1.1 var olan 1.0 versiyonuna göre daha küçük bir geliştirmedir:

  • Bunda ışın izleme tamamen GPU tarafından kontrol edilir ve CPU’dan gelen draw çağrılarına ihtiyaç duyulmaz. Böylece CPU yükü azaltılarak performans artırılır.
  • Yeni ışın izleme gölgelendiricileri oyuncunun oyun dünyasındaki konumuna bağlı olarak ihtiyaç halinde yüklenebilir.
  • DirectX 12’nin en ana eklentilerinden biri hizada ışın izlemedir. Geliştiriciler ışın izleme süreci üzerinde daha yetkili olurlar. İşleme boru hattının herhangi bir aşamasında kullanılabilir olan bu özellik gölgelendirme karmaşıklığı en az olduğunda tercih edilebilir.
Bu İçeriğe Tepkini Göster!
  • 0
    be_endim
    Beğendim
  • 1
    bay_ld_m
    Bayıldım
  • 0
    sevindim
    Sevindim
  • 0
    _pheli
    Şüpheli
  • 0
    sinirli
    Sinirli
  • 0
    _rendim
    İğrendim

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir