- Minecraft Java Edition, grafik işleme motorunu OpenGL'den Vulkan'a geçiriyor
- Geçişin arkasında, 1990'lardan beri kullanılan OpenGL'in artık güncellenmemesi ve macOS desteğinin sona ermesi var
- Vulkan, Windows ve Linux'ta yerel olarak destekleniyor; macOS'ta ise bir çeviri katmanıyla performans kaybı olmadan çalışabiliyor
- Bu geçişle birlikte görsel kalite artışı ve kare hızında iyileşme bekleniyor
- Snapshot sürümlerinde OpenGL ve Vulkan birlikte test edilecek; kararlılık sağlanınca OpenGL'in kaldırılması planlanıyor
Bringing modern rendering to Java
- Minecraft: Java Edition'da Vibrant Visuals için hazırlık çalışmaları sürüyor; işleme kodu yeniden düzenleniyor ve modernleştiriliyor
- Önceki güncellemelerle işleme kodunun yapısını iyileştirme çalışmaları yürütüldü
- Şimdi ise işleme altyapısının temel teknolojisini değiştirme aşamasına geçiliyor
- Oyunun işleme teknolojisinin OpenGL'den Vulkan'a geçirilmesi planlanıyor
- Amaç, grafik ve performans tarafında yeni olanaklar açmak
- Bunun modlama topluluğu ve bazı oyuncular üzerinde etkileri olması bekleniyor
What are we changing?
- Java Edition şu anda 1990'larda oluşturulmuş bir OpenGL grafik API'sini kullanıyor
- İlk çıkışından bu yana OpenGL tabanlı kaldı
- OpenGL'in tercih edilme nedeni, Linux, Windows ve macOS'ta destek sunabilmesiydi
- Hedef, oyunun neredeyse tüm PC ve Mac'lerde çalışabilmesiydi
- OpenGL 9 yıl önce güncellenmeyi bıraktı, macOS'ta ise deprecated durumda ve ileride tamamen çalışmaz hale gelecek
- macOS uyumluluğu için eski bir OpenGL sürümünde kalmak gerekti ve bu da kod tabanını modernleştirmeyi zorlaştırdı
- Java Edition'ın macOS ve Linux dahil çoğu PC'de çalışmaya devam edebilmesi için OpenGL'den çıkılması gerekiyor
Introducing: Vulkan
- Vulkan, 10 yılı aşkın süredir piyasada olan bir grafik API'si ve başlıca donanım üreticileri tarafından benimsenmiş durumda
- Windows ve modern Linux sürümlerinde yerel destek sunuyor; macOS'ta ise bir çeviri katmanıyla desteklenebiliyor ve performans kaybı yaşanmıyor
- Uzun vadede daha yüksek performans ve daha geniş özellik desteği için zemin hazırlıyor
- Ayrıca Vibrant Visuals'ın uygulanması için gerekli altyapıyı da sağlıyor
- Ancak GPU'nuz 10 yıldan daha eskiyse Vulkan desteği olmayabilir
What does this mean for modders?
- OpenGL tabanlı işleme modları, OpenGL'den Vulkan'a geçişten etkilenecek
- Vulkan'a geçişe uyum sağlamak, sıradan bir sürüm güncellemesine göre daha fazla emek gerektirebilir
- Modlama topluluğuna, OpenGL bağımlılığını azaltmaları öneriliyor
- Mümkün olduğunca oyunun dahili işleme API'lerinin yeniden kullanılması tavsiye ediliyor
- Gerekirse geliştirme ekibiyle doğrudan teknik görüşmeler yapılabilecek
- Teknik tartışmalar Vibrant Visuals Discord kanalında yürütülüyor
- Burası duyuru kanalı değil, geliştiriciler arasında derin teknik tartışmalar için ayrılmış bir alan
What does this mean for players?
- Geçiş sürecinde bazı modların etkilenmesi mümkün
- Mod geliştiricilerinin güncelleme yapması zaman alabilir
- İlerideki snapshot sürümlerinde OpenGL ve Vulkan birlikte sunulacak
- Hem snapshot hem de kararlı sürümlerde işleyici seçimi yapılabilecek
- Kararlılığı artırma ve hataları azaltma çalışmaları da sürecek
- Hataların bugs.mojang.com üzerinden bildirilmesi isteniyor
When is this happening?
- Hedef, yaz aylarında Vulkan'ı snapshot testlerine dahil etmek
- Test süreci boyunca OpenGL ile Vulkan arasında geçiş yapılabilecek
- Kararlılık ve performans doğrulandıktan sonra OpenGL uygulaması kaldırılacak
- Kaldırılmadan önce önceden duyuru yapılacak
- Minimum sistem gereksinimleri de güncellenecek
Vulkan and Vibrant Visuals
- İşleyicinin modernleştirilmesi, Vibrant Visuals yol haritasının temel adımlarından biri
- Vulkan'a geçiş, grafik iyileştirmeleri için daha fazla alan ve daha güçlü performans kapasitesi sağlayabilir
- Sürücü kaynaklı hataların azalması bekleniyor
- En kritik amaçlardan biri, macOS'ta oyunun çalışmaya devam etmesini sağlamak
- Böylece desteklenen tüm işletim sistemlerindeki oyuncuların eşit şekilde oyuna katılması güvence altına alınacak
Güncellemenin anlamı
- Bu geçiş, Minecraft Java'nın modern grafik teknolojisi yığınına geçişinde önemli bir adım
- Oyun motorunun teknik temelini güçlendirerek gelecekteki genişleme ve özellik eklemeleri için daha elverişli bir yapı oluşturuyor
- OpenGL'den Vulkan'a geçiş, oyun endüstrisindeki grafik API nesil değişimi eğilimiyle de örtüşüyor
3 yorum
Hacker News yorumları
Zamanla ana iş parçacığındaki CPU ek yükünün azalmasını umuyorum.
DX11'den 12'ye, OpenGL'den Vulkan'a taşınan oyunlar performans artışını yalnızca API değişiminden değil, paralel draw call işleme yeteneğinden aldı.
Minecraft'ta darboğaz, GPU'nun çizebileceği hızdan CPU'nun daha yavaş kalması; bu değişiklikle modlu ortamda da CPU tarafında biraz nefes payı oluşmasını umuyorum.
Eğlencesine Windows sürümünü Proton üzerinde çalıştırdım ve performans %30 arttı.
Muhtemelen Proton'un kullandığı dxvk kütüphanesinin çoklu iş parçacığı desteği sayesindedir.
Minecraft Java Edition'ın yalnızca masaüstünde olması, mobildeki Vulkan sürücüsü sorunlarından kaçınabilmesi açısından bence iyi bir tercih.
Yine de Microsoft ölçeğinde bir şirketin, platforma göre daha kararlı API'leri kullanan (DX12, Metal) bir çapraz platform RHI geliştirebileceğini düşünürdüm.
Java renderer'ını üç farklı sürüm halinde bakımda tutmak büyük yük olur; özellikle mod ekosistemi bu kadar önemliyken, bu değişiklik bile ciddi karışıklık yaratacaktır.
Shader modlarının bakımını daha da zorlaştırmaya gerek olmadığını düşünüyorum.
macOS'ta da Vulkan çalıştırılabiliyor; bu yüzden yeni bir projede özellikle DX12 seçmek için güçlü bir neden göremiyorum.
Eski Acer C720 Chromebook'umda (Intel HD4400 iGPU) Vulkan desteklenmiyor, bu yüzden Minecraft bozulacak gibi görünüyor.
Eskiden her türlü donanımda çalışabilmesi büyük avantajdı, o açıdan üzücü.
Yorumları neden kaynak tarafa taşımadıklarını merak ediyorum (ilgili başlık).
Microsoft'un Apple'a kıyasla Khronos standartlarına daha da yaklaşmış olması ilginç.
SPIR-V'yi DirectX shader derleyicisinin çıktı ve girdi biçimi olarak benimseyerek Vulkan ile birlikte çalışabilirliği artırdı.
Apple, OpenCL'i ele alış biçiminden oldukça memnun değildi; Sony ile Nintendo'nun da Khronos'a neredeyse hiç ilgisi yok.
Pratikte Khronos API'leri eklenti spagettisi sorunu yüzünden tam taşınabilirlik sunmuyor.
VulkanMod performansı ciddi biçimde artırıyor ama çoğu modla uyumlu değil.
İleride tüm mod paketlerinde de Vulkan kullanılabilirse gerçekten heyecan verici olur.
Vibrant Visuals'ın Java Edition'a da bir an önce gelmesini isterim.
Shader kullanmak için sürekli mod gerektirmesi can sıkıcı.
Karmaşık loader'lar veya güvenlik riskleri olmadan, .zip dosyasını sürükleyip bırakarak kurmak mümkün.
Aperture, Iris, Optifine kadar esnek değil ama özellikleri oldukça benzer.
Vulkan shader'larının da kaynak paketine eklenip eklenemeyeceğini merak ediyorum. Yine de oyun işlevlerini bozma riski yüksek olduğu için kısıtlanabilir.
Java'da Vulkan binding'leri olduğunu bilmiyordum. Muhtemelen JNI kullanıyordur.
Hâlâ OpenGL kullanıyor olması şaşırtıcı. Minecraft'ın güncel durumunu çok bilmiyorum ama masaüstü için Java olmayan bir sürümü olduğunu da ilk kez öğrendim.
Bellek yönetimi çok daha temiz ve harici işlevlerle (Vulkan gibi) binding kurmak çok daha kolay hale geliyor.
Bence son dönem Java'nın en değeri bilinmeyen özelliklerinden biri.
Aynı oyunun neden iki sürüm halinde sürdürüldüğünü merak ediyorum.
Bedrock özellik olarak neredeyse yetişti ama tam bir ikame olmayı başaramadı.
Bedrock performans ve taşınabilirlikte iyi ama konsollarda zaten mod kullanılamıyor.
YouTube içeriklerinin %90'ı Java tabanlı; bu yüzden Microsoft özellik eşdeğerliğini sağlamaya odaklanıyor.
Microsoft açısından iki sürümü birden sürdürerek geliri maksimize etmek mantıklı.
Vulkan shader derleme gecikmesi sorununu iyi çözmüş olmalarını umuyorum.
Çünkü karmaşık bir materyal sistemi değil, basit bir voxel renderer.
Sorun genelde motor çok fazla shader kombinasyonu ürettiğinde ya da belirli GPU durumları (örneğin blending) shader'ın yeniden derlenmesine yol açtığında ortaya çıkıyor.
Modern Vulkan'da durumların çoğu dynamic state olarak ele alınabildiği için bu sorun hafifletilebiliyor.
Ancak blending gibi bazı durumlar hâlâ yeniden derlemeye yol açabiliyor.
Yani geliştirici bu tür dinamik durumları doğru şekilde ele alırsa gecikmeyi önlemek kolay.
Günümüzde büyük oyun şirketleri teknik optimizasyonu sık sık ihmal ediyor.
Minecraft başlangıçta Java ile geliştirilmiş bir oyundu, ama anlaşılan MS'e satıldıktan sonra C++ ile bir kez daha yapılmış. Tek bir oyunu baştan sona geliştirme dilini değiştirerek yeniden uygulamak kolay bir iş değildir herhalde; bunu neden yaptıkları gerçekten merak uyandırıcı.
Görünüşe göre Bedrock Edition’ı mobil optimizasyon amacıyla yapmışlar ama..
Java’dan vazgeçerler diye düşünmüştüm, ama sonunda ikisini de güncelliyorlar gibi görünüyor.