- Minecraft Java Edition beralih dalam mesin rendering grafis dari OpenGL ke Vulkan
- Latar belakang perubahan ini adalah berhentinya pembaruan OpenGL dan berakhirnya dukungan di macOS setelah digunakan sejak 1990-an
- Vulkan mendapat dukungan bawaan di Windows dan Linux, sementara di macOS didukung melalui translation layer tanpa penurunan performa
- Melalui transisi ini, diharapkan ada peningkatan kualitas visual dan frame rate
- Setelah pengujian paralel OpenGL dan Vulkan di snapshot, OpenGL akan dihapus jika stabilitas sudah terjamin
Bringing modern rendering to Java
- Di Minecraft: Java Edition, pekerjaan persiapan untuk Vibrant Visuals terus berlanjut, termasuk refactoring dan modernisasi kode rendering
- Pekerjaan perbaikan struktur kode rendering telah dilakukan lewat pembaruan sebelumnya
- Kini telah memasuki tahap penggantian teknologi fondasi rendering itu sendiri
- Teknologi rendering game akan dialihkan dari OpenGL ke Vulkan
- Tujuannya untuk membuka kemungkinan baru dari sisi grafis dan performa
- Diperkirakan akan berdampak pada komunitas modding dan sebagian pemain
What are we changing?
- Saat ini Java Edition menggunakan OpenGL graphics API yang dibuat pada 1990-an
- Sejak awal peluncuran, game ini mempertahankan basis OpenGL
- Alasan adopsi OpenGL adalah karena memungkinkan dukungan lintas Linux, Windows, dan macOS
- Dirancang agar dapat berjalan di hampir semua PC dan Mac
- OpenGL berhenti diperbarui 9 tahun lalu, berstatus deprecated di macOS, dan nantinya tidak akan bisa dijalankan
- Demi kompatibilitas macOS, mereka harus bertahan di OpenGL versi lama, yang membuat modernisasi codebase menjadi sulit
- Agar Java Edition tetap bisa berjalan di sebagian besar PC, termasuk macOS dan Linux, transisi dari OpenGL diperlukan
Introducing: Vulkan
- Vulkan adalah graphics API yang telah digunakan di pasar selama lebih dari 10 tahun dan diadopsi luas oleh vendor hardware utama
- Didukung secara bawaan di Windows dan Linux modern, sementara macOS dapat didukung melalui translation layer tanpa penurunan performa
- Dalam jangka panjang, ini membuka peluang peningkatan performa dan perluasan fitur
- Menyediakan fondasi yang dibutuhkan untuk implementasi Vibrant Visuals
- Jika GPU berusia lebih dari 10 tahun, ada kemungkinan Vulkan tidak didukung
What does this mean for modders?
- Peralihan dari OpenGL ke Vulkan akan memengaruhi mode rendering berbasis OpenGL
- Pekerjaan migrasi ke Vulkan diperkirakan membutuhkan usaha lebih besar daripada sekadar menyesuaikan rilis biasa
- Komunitas modding dianjurkan untuk mengurangi ketergantungan pada OpenGL
- Disarankan untuk memaksimalkan penggunaan internal rendering API
- Jika perlu, diskusi teknis langsung dengan tim pengembang dimungkinkan
- Diskusi teknis dilakukan di channel Discord Vibrant Visuals
- Bukan channel pengumuman, melainkan ruang diskusi teknis mendalam antar developer
What does this mean for players?
- Ada kemungkinan beberapa mod akan terdampak selama proses transisi
- Para pembuat mod mungkin memerlukan waktu untuk memperbaruinya
- Di snapshot mendatang, OpenGL dan Vulkan akan disediakan secara paralel
- Di snapshot maupun versi final, pemain dapat memilih renderer
- Pekerjaan untuk meminimalkan bug dan memastikan stabilitas akan berjalan bersamaan
- Bug diminta untuk dilaporkan melalui bugs.mojang.com
When is this happening?
- Targetnya adalah menghadirkan Vulkan ke pengujian snapshot pada musim panas
- Selama masa pengujian, pemain dapat berpindah antara OpenGL dan Vulkan
- Jika verifikasi stabilitas dan performa selesai, implementasi OpenGL akan dihapus
- Akan ada pemberitahuan sebelumnya sebelum penghapusan
- Persyaratan spesifikasi minimum juga akan diperbarui
Vulkan and Vibrant Visuals
- Modernisasi renderer adalah tahap inti dalam roadmap Vibrant Visuals
- Dengan transisi ke Vulkan, ruang untuk peningkatan grafis dan kemampuan performa akan semakin besar
- Diharapkan bug yang berasal dari driver juga akan berkurang
- Tujuan utamanya adalah memastikan game tetap dapat berjalan di macOS secara berkelanjutan
- Agar semua pemain di sistem operasi yang didukung bisa ikut serta secara setara
Makna pembaruan ini
- Transisi kali ini adalah langkah penting bagi Minecraft Java untuk berpindah ke modern graphics technology stack
- Ini memperkuat fondasi teknis game engine sehingga lebih menguntungkan untuk skalabilitas dan penambahan fitur di masa depan
- Perpindahan dari OpenGL ke Vulkan juga sejalan dengan pergantian generasi graphics API di industri game secara luas
3 komentar
Komentar Hacker News
Seiring waktu, semoga overhead CPU di main thread berkurang
Game-game yang di-port dari DX11 ke 12, atau dari OpenGL ke Vulkan, bukan hanya mendapat peningkatan performa karena sekadar mengganti API, tetapi karena bisa memanfaatkan pemrosesan draw call paralel
Di Minecraft, bottleneck terjadi karena CPU lebih lambat daripada kecepatan GPU merender, jadi dengan perubahan ini diharapkan ada ruang CPU tambahan bahkan di lingkungan modding
Iseng saya coba menjalankan versi Windows lewat Proton, dan performanya justru naik 30%
Mungkin karena multithreading dari library dxvk yang dipakai Proton
Menurut saya ini pilihan yang masuk akal karena Minecraft Java Edition hanya untuk desktop, jadi bisa menghindari masalah driver Vulkan di mobile
Tapi untuk perusahaan sekelas Microsoft, saya sempat berpikir mereka punya kapasitas untuk membuat RHI cross-platform yang memakai API stabil per platform (DX12, Metal)
Menjaga tiga versi renderer Java tetap terawat adalah beban besar, apalagi ekosistem modding adalah inti pentingnya, jadi perubahan kali ini saja kemungkinan sudah cukup membingungkan
Rasanya tidak perlu membuat perawatan shader mod jadi lebih sulit lagi
Vulkan juga bisa dijalankan di macOS, jadi saya kurang paham kenapa proyek baru masih perlu memilih DX12
Di Acer C720 Chromebook lama saya (Intel HD4400 iGPU), Vulkan tidak didukung jadi sepertinya Minecraft akan rusak
Dulu kelebihannya adalah bisa berjalan di hampir semua hardware, jadi ini agak disayangkan
Saya penasaran kenapa komentarnya tidak dipindahkan ke sumbernya (thread terkait)
Menarik bahwa Microsoft sekarang lebih dekat ke standar Khronos daripada Apple
Mereka mengadopsi SPIR-V sebagai format output dan input untuk compiler shader DirectX, sehingga interoperabilitas dengan Vulkan meningkat
Apple sangat tidak puas dengan cara OpenCL ditangani, dan Sony serta Nintendo hampir tidak tertarik pada Khronos
Pada praktiknya, API Khronos juga kurang portabel sepenuhnya karena masalah extension spaghetti
VulkanMod memberi peningkatan performa besar, tetapi tidak kompatibel dengan sebagian besar mod
Jika nanti Vulkan bisa dipakai di modpack penuh, itu akan sangat menarik
Saya harap Vibrant Visuals segera hadir juga di Java Edition
Agak disayangkan karena untuk memakai shader selalu perlu mod
Instalasinya cukup drag-and-drop file .zip tanpa loader rumit atau risiko keamanan
Memang tidak sefleksibel Aperture, Iris, atau Optifine, tetapi fiturnya cukup mirip
Saya penasaran apakah shader Vulkan juga nanti bisa dimasukkan ke resource pack. Namun mungkin itu akan dibatasi karena risikonya lebih besar untuk merusak fungsi game
Saya tidak tahu bahwa ada binding Vulkan untuk Java. Mungkin memakai JNI
Agak mengejutkan juga bahwa mereka masih memakai OpenGL. Saya tidak terlalu mengikuti kondisi Minecraft saat ini, dan ini juga pertama kalinya saya tahu ada versi desktop non-Java
Pengelolaan memorinya jauh lebih rapi, dan binding ke fungsi eksternal (seperti Vulkan) jadi jauh lebih mudah
Menurut saya ini salah satu fitur Java modern yang paling kurang diapresiasi
Saya penasaran kenapa game yang sama dipertahankan dalam dua versi
Bedrock memang hampir mengejar dari sisi fitur, tetapi sebagai pengganti penuh tetap gagal
Bedrock lebih unggul dalam performa dan portabilitas, tetapi di konsol modding memang tetap tidak memungkinkan
90% konten YouTube berbasis Java, jadi Microsoft sedang fokus mengejar kesetaraan fitur
Dari sudut pandang Microsoft, mempertahankan dua versi untuk memaksimalkan pendapatan adalah hal yang masuk akal
Semoga mereka benar-benar mengatasi masalah stutter akibat kompilasi shader Vulkan
Ini karena sistemnya bukan material system yang rumit, melainkan renderer voxel yang sederhana
Masalah biasanya muncul saat engine menghasilkan terlalu banyak kombinasi shader, atau ketika state GPU tertentu (misalnya blending) memicu kompilasi ulang shader
Di Vulkan modern, sebagian besar state bisa ditangani sebagai dynamic state, sehingga masalah ini bisa dikurangi
Namun beberapa state seperti blending masih bisa memicu kompilasi ulang
Jadi, jika pengembang menghindari dynamic state tersebut, jeda ini cukup mudah dicegah
Belakangan ini banyak studio game besar yang terlihat kurang serius dalam optimisasi teknis
Minecraft awalnya adalah game yang dikembangkan dengan Java, tetapi setelah dijual ke MS ternyata dibuat sekali lagi dengan C++. Mereimplementasikan satu game utuh dengan mengganti bahasa pengembangannya pasti bukan pekerjaan mudah, jadi menarik juga bagaimana itu bisa terjadi.
Sepertinya mereka memang membuat edisi Bedrock untuk tujuan optimasi mobile..
Saya sempat berpikir mereka akan meninggalkan Java, tapi pada akhirnya sepertinya keduanya sama-sama terus diperbarui.