Blog
Khronos Group, AMD Mantle, OpenGL, Vulkan
- Ayrıntılar
- Kategori: Bilgisayar Grafiği
- 27 Temmuz 2017 tarihinde yayınlandı.
- THEMT tarafından yazıldı.
Merak edenlerine; Khronos Group, AMD Mantle, OpenGL ve Vulkan hakkında doyurucu bilgi...
Khronos Group Nedir ya da Kimdir?
Khronos Group, Oregon merkezli, açık kaynak standartları ile uğraşan, Adobe, AMD, Apple, Google, Epic Games, IBM, MIT, Motorola, id Software ve nVidia gibi endüstriden üyeleri bulunan, konsorsiyum yapıda ve kar amacı gütmeyen Amerikalı bir şirkettir.
Khronos Group Ne Yapar?
Farklı uygulamalar arasında 3B kaynakların kolayca paylaşılabilmesi için COLLADA adında ara format üzerinde çalışmaktadır. Ayrıca mobil platformlarda gelişmiş 3 boyutlu uygulamalar yazılabilmesi için OpenGL ES ve bilgisayarlarda gelişmiş 3 boyutlu uygulamalar yazılabilmesi için OpenGL üzerinde çalışmaktadır.
Web sitelerine 3 boyut kazandırmak adına WebGL üzerinde çalışmaları devam etmektedir. Bunların dışında OpenVG, OpenXR, Vulkan ve SPIR gibi daha birçok çalışmaları devam etmektedir. Bu çalışmaların hepsi açık kaynak ve ücretsizdir. Yani ticari değildir ama ticari işlerde bedel ödemeden kullanılır. Diğer amaçları da standart oluşturmaktır.
Yani bir çalışma yapmak istediğinizde bunu belli bir kalıpta yaparsınız. Böylece her kafadan bir ses çıkmaz. Mobil platformda uygulama yapmak istediğinizde farklı, masaüstünde uygulama yazdığınızda farklı olmayıp, iki platformda birbirine yakın yapıdadır. Özetle neyin nasıl yapılacağını belirlerler ve bunu standart haline getirirler.
Khronos Group Üyeleri
Kurucu Üyeler
AMD, Apple Inc., ARM Holdings, Epic Games, Google, Huawei, Imagination Technologies, Intel Corporation, Nokia, Nvidia, Qualcomm, Samsung Electronics, Sony Interactive Entertainment, VeriSilicon
Katkıda Bulunan Üyeler
Adobe, Amazon.com, Blizzard Entertainment Inc., Codeplay, Huawei Technologies, IBM, LG Electronics, Matrox Graphics, Microsoft Corporation, Mozilla, Nintendo[8], Oculus VR, Panasonic, Pixar, Red Hat, Renesas Electronics, Synopsys, Texas Instruments, The Qt Company, Unity Technologies, Valve Corporation, VIA Alliance Semiconductor, VMware
Akademik Üyeler
China Academy of Telecommunication Research of MIIT, Columbia University, ETRI, Imperial College London, Institute for Information Industry, MIT Lincoln Laboratory, Oregon State University, Seoul National University, Università di Bologna, University of Bristol, University of Toronto
AMD Mantle Nedir?
AMD Mantle 3B video oyunları hedef alan render yazılım arabirimidir. Aslında 2013 yılında DICE ortaklığıyla AMD geliştirilmeye başlanmıştır. Direct3D ve OpenGL’ye alternatif olarak doğmuştur.
AMD Mantle Amacı Nedir?
Bilgisayarların yapısı gereği, kodlar; CPU yani merkez işlemci üzerinde çalışır. 3B uygulamalar ve oyunlar ise ek olarak GPU yani grafik kartı üzerinde de çalışır. Bu arada grafik kartı üstündeki işlemciye GPU, belleğe ise VRAM denir. Bir oyunu çalıştırdığınızda macera önce CPU üzerinde başlar sonra bu maceranın bir kısmı GPU yani grafik kartına aktarılır. İşte tam burada bir darboğaz oluşur.
CPU ile bellek arasındaki iletişim çok hızlıdır. Zaten yan-yanadırlar. Çalıştırılan uygulama belleğe aktarılır ve işlemci tarafından icra edilir. Aynı şekilde grafik kartında bulunan işlemci ve bellek de kendi aralarında hızlı iletişime sahiptir. Onlar da yan-yanadırlar.
Bellekler ve işlemciler arasındaki iletişim çok hızlıyken, CPU ile GPU arasındaki iletişim bu kadar hızlı değildir. Yani iki işlemci arasındaki iletişim çok hızlı değildir. Veriler aktarıldığında darboğaz oluşur. Yani oyunu başlatınız ve bir kere belleğe geçtikten sonra çok hızlı çalışır. Daha sonra oyunun 3B kısımları grafik kartına aktarılır. İşte burası yavaştır. Hızlandırmaya uğraşıyorlar ama şuan için yavaş. Grafik kartına geçiş tamamlandıktan sonra yine hızlı çalışacaktır. Ama geçene kadar bekletir :)
AMD Mantle bu darboğazı biraz da olsa rahatlatmak adına geliştirilmek istenmiştir. Tabi tek yaptığı bu değil. Daha fazlası da var ama başlangıç noktası budur.
OpenGL Nedir?
1991 yılında Silicon Graphics şirketi tarafından geliştirilmeye başlandı. Daha sonra Khronos Group tarafından geliştirilen ve güncelleştirilen bir yazılım arabirimidir. Temel amacı grafik üretmektir. 2B grafikler üretiminde yardımcı olduğu gibi asıl olarak 3B grafikler üretmekte yardımcı olur. Ekranda dönen, 3B bir küp çizmek istediğinizde çok derin kodlamaya girmeden sadece küpün teknik bilgilerini ve dönme değerini yazmanız yeterlidir.
Böyle bir yapı olmasaydı eğer, aynı 3B küpü çizmek istediğinizde; derin bir bit-haritası bilgisi, matematik ve geometri bilgisi, donanım bilgisi ve daha bir sürü şeyi bilmeniz ve yapıyor olmanız gerekirdi. Ama artık OpenGL var ve bunlarla o uğraşıyor.
OpenGL Ne Yapar?
Etrafınıza bir bakın… Bir masa bulun, yanına gidin, gözlemleyin… Masada bir şeyler olacaktır. Pencereden gelen güneş ışığı ya da tavandaki lamba ışıkları burayı aydınlatacaktır. Renkli kalemler… Belki bir ayna, parlak ve canlı nesneler…
İşte bu masayı, üstündekileri ve etraftakileri sanal olarak çizmek istediğimizde. OpenGL sayesinde sadece nesnelerin ebat bilgilerini ve renk bilgilerini kodluyoruz. Ayrıca ışıkların nerede olacağı, ne renkte ve ne şiddette olacağını kodluyoruz. Bu masaya bakan bizi temsil eden kameranın değerlerini kodluyoruz.
OpenGL ise işin matematiğini ve fiziğini hallediyor. Işık atomu olan fotonun fiziğini o hesaplıyor, sanal ışığımızı OpenGL yayıyor, nesnelerin üzerine o düşürüyor, gölgeyi yine o oluşturuyor. Bunları yapmak için ciddi matematiksel işlemler gerekiyor. Bu sadece ışık ve nesne kısmıydı. Kamera ve perspektif oluşturma kısmı da var tabi…
OpenGL ve Çoklu Platform
OpenGL farklı cihazlarda ve farklı işletim sistemlerinde kullanılabilir. Bilgisayar için yazdığınız kodu çok az değiştirerek mobil platformda kullanabilirsiniz. Aynı şekilde Windows işletim sistemi için yazdığınız OpenGL kodunu, Android’de kullanabilirsiniz. Sil baştan yapmanıza gerek kalmaz.
Vulkan Nedir?
Vulkan, grafik ve hesaplama için yazılım arabirimidir. Temel amacı grafik üretmektir. 2B grafikler üretiminde yardımcı olduğu gibi asıl olarak 3B grafikler üretmekte yardımcı olur. Ekranda dönen, 3B bir küp çizmek istediğinizde çok derin kodlamaya girmeden sadece küpün teknik bilgilerini ve dönme değerini yazmanız yeterlidir. Evet, bu tanım OpenGL Nedir başlığı altındaki tamının bir kısmı :) Peki Neden Vulkan var? OpenGL değil de neden Vulkan?
Khronos Group, OpenGL’yi duyuracağında, her zaman olduğu gibi iyileştirmeler yapacağı, yeni özellikler ekleneceği ve “Yeni Nesil OpenGL” başlığıyla devam edeceği düşünülüyordu fakat öyle olmadı. Aslında yeni nesil bir OpenGL ama olayı biraz farklı. İçinde bir tutam AMD Mentle barındırdığı için yeni bir olay oldu ve yeni bir isim altından devam ettiler. Gerçekten de yeni bir olay oldu…
Vulkan Ne Yapar?
Bu sayfada AMD Mentle başlığı altında Mentle’dan bahsettim… Ama özetle CPU ile GPU arasındaki darboğazı yani yavaşlığı azaltmak adına geliştirilmeye başlanan bir arabirim.
OpenGL ve Mentle işbirliği ve ilerlemesi Vulkan’ı oluşturdu. Gerçekten de değdiğini düşünüyorum. İlk tanıtım videosunu izlediğimde şaşırmıştım. Video içeriği şöyleydi; Amerikan sinemasından bilirsiniz… Bahçeye konan kırmızı şapkalı cüceler vardır… Bu cücelerden bir kaçı zeminde duruyordu ve kamera hızlıca yukarı doğru yükseliyordu. Yükseldikçe sahnedeki cüce sayısı sürekli artıyordu. Milyonları bulmuştu cüce sayısı…
Bu olaylara biraz aşinaysanız eğer böyle bir cümbüşlükteki sahnede FPS değerinin çakılması ve yerlerde sürünmesi gerekiyordu ama çakılmıyordu. FPS ideal bir aralıktaydı… Gerçekten Vulkan iyi bir performans sergiliyordu… CPU ve GPU arasındaki darboğazı azaltmıştı ve iyi bir dengeyi sağlamıştı…