12 điểm bởi GN⁺ 2026-02-20 | 3 bình luận | Chia sẻ qua WhatsApp
  • Minecraft Java Edition chuyển engine kết xuất đồ họa từ OpenGL sang Vulkan
  • Bối cảnh của sự chuyển đổi này là OpenGL đã ngừng được cập nhật và macOS chấm dứt hỗ trợ
  • Vulkan hỗ trợ gốc trên Windows và Linux, còn macOS được hỗ trợ qua lớp chuyển đổi mà không bị suy giảm hiệu năng
  • Việc chuyển đổi được kỳ vọng sẽ cải thiện chất lượng hình ảnh và tăng tốc độ khung hình
  • Sau khi thử nghiệm song song OpenGL và Vulkan trong snapshot, OpenGL sẽ được loại bỏ khi bảo đảm được độ ổn định

Bringing modern rendering to Java

  • Trong Minecraft: Java Edition, công việc chuẩn bị cho Vibrant Visuals vẫn đang tiếp tục, đồng thời mã kết xuất đang được tái cấu trúc và hiện đại hóa
    • Qua các bản cập nhật trước đó, cấu trúc mã kết xuất đã được cải thiện
    • Hiện đã bước vào giai đoạn thay thế chính nền tảng công nghệ kết xuất
  • Công nghệ kết xuất của trò chơi sẽ được chuyển từ OpenGL sang Vulkan
    • Mục tiêu là mở ra các khả năng mới về đồ họa và hiệu năng
    • Dự kiến sẽ có ảnh hưởng đến cộng đồng modding và một số người chơi

What are we changing?

  • Hiện tại Java Edition đang sử dụng API đồ họa OpenGL được tạo ra từ những năm 1990
    • Từ thời điểm phát hành ban đầu, trò chơi luôn dựa trên OpenGL
  • Lý do chọn OpenGL là vì nó có thể hỗ trợ toàn bộ các hệ điều hành Linux, Windows và macOS
    • Mục tiêu là để trò chơi chạy được trên gần như mọi PC và Mac
  • OpenGL đã ngừng được cập nhật từ 9 năm trước, đang ở trạng thái deprecated trên macOS và sau này sẽ không thể chạy được nữa
  • Để tương thích với macOS, dự án phải tiếp tục bám vào phiên bản OpenGL cũ, khiến việc hiện đại hóa codebase trở nên khó khăn
  • Để Java Edition tiếp tục chạy được trên phần lớn PC, bao gồm cả macOS và Linux, việc chuyển khỏi OpenGL là cần thiết

Introducing: Vulkan

  • Vulkan là API đồ họa đã được sử dụng trên thị trường hơn 10 năm và được áp dụng rộng rãi bởi các hãng phần cứng lớn
  • Nó được hỗ trợ gốc trên Windows và Linux hiện đại; với macOS, có thể hỗ trợ thông qua lớp chuyển đổi mà vẫn hoạt động không suy giảm hiệu năng
  • Về dài hạn, điều này mở ra khả năng nâng cao hiệu năng và mở rộng tính năng
    • Đồng thời cung cấp nền tảng cần thiết để triển khai Vibrant Visuals
  • Tuy vậy, các GPU đã hơn 10 năm tuổi có thể sẽ không hỗ trợ Vulkan

What does this mean for modders?

  • Khi chuyển từ OpenGL sang Vulkan, các mod kết xuất dựa trên OpenGL sẽ bị ảnh hưởng
  • Việc chuyển sang Vulkan được dự đoán sẽ cần nhiều công sức hơn so với việc chỉ thích ứng với các bản phát hành thông thường
  • Nhóm phát triển khuyến nghị cộng đồng modding giảm sự phụ thuộc vào OpenGL
    • Nên tái sử dụng tối đa API kết xuất nội bộ
    • Khi cần, có thể trao đổi kỹ thuật trực tiếp với đội phát triển
  • Các thảo luận kỹ thuật đang diễn ra trên kênh Discord của Vibrant Visuals
    • Đây không phải kênh chỉ để thông báo, mà là không gian trao đổi kỹ thuật chuyên sâu giữa các nhà phát triển

What does this mean for players?

  • Một số mod có thể bị ảnh hưởng trong quá trình chuyển đổi
    • Các tác giả mod sẽ cần thời gian để cập nhật
  • Trong các snapshot sắp tới, OpenGL và Vulkan sẽ được cung cấp song song
    • Có thể chọn renderer trong cả snapshot lẫn phiên bản chính thức
    • Đồng thời sẽ tiếp tục làm việc để bảo đảm độ ổn định và giảm thiểu lỗi
  • Người dùng được đề nghị báo lỗi qua bugs.mojang.com

When is this happening?

  • Mục tiêu là đưa Vulkan vào thử nghiệm snapshot trong mùa hè
  • Trong thời gian thử nghiệm, người dùng có thể chuyển đổi giữa OpenGL và Vulkan
  • Khi việc xác minh độ ổn định và hiệu năng hoàn tất, phần triển khai OpenGL sẽ bị loại bỏ
    • Sẽ có thông báo trước khi gỡ bỏ
    • Yêu cầu cấu hình tối thiểu cũng sẽ được cập nhật

Vulkan and Vibrant Visuals

  • Việc hiện đại hóa renderer là bước cốt lõi trong lộ trình Vibrant Visuals
  • Chuyển sang Vulkan sẽ mở rộng dư địa cải thiện đồ họa và tăng cường năng lực hiệu năng
  • Dự kiến cũng sẽ giảm các lỗi liên quan đến driver
  • Mục tiêu trọng yếu là bảo đảm trò chơi có thể tiếp tục chạy trên macOS
    • Để bảo đảm người chơi trên mọi hệ điều hành được hỗ trợ đều có thể tham gia như nhau

Ý nghĩa của bản cập nhật

  • Lần chuyển đổi này là một bước quan trọng đưa Minecraft Java tiến sang stack công nghệ đồ họa hiện đại
  • củng cố nền tảng kỹ thuật của game engine, tạo ra cấu trúc thuận lợi hơn cho việc mở rộng và bổ sung tính năng trong tương lai
  • Việc chuyển từ OpenGL sang Vulkan cũng phù hợp với xu hướng thay thế thế hệ API đồ họa trên toàn ngành game

3 bình luận

 
GN⁺ 2026-02-20
Ý kiến trên Hacker News
  • Hy vọng theo thời gian overhead CPU của luồng chính sẽ giảm
    Các game được port từ DX11 sang 12, hay từ OpenGL sang Vulkan, không chỉ cải thiện hiệu năng nhờ thay API, mà còn nhờ tận dụng khả năng xử lý draw call song song
    Minecraft bị nghẽn do CPU chậm hơn tốc độ GPU có thể render, nên hy vọng thay đổi này cũng sẽ tạo thêm dư địa CPU cho cả môi trường mod

    • Tôi dùng Unigine Heaven để benchmark hệ thống Linux
      Thử cho vui bản Windows chạy qua Proton thì hiệu năng tăng 30%
      Có lẽ là nhờ khả năng đa luồng của thư viện dxvk mà Proton sử dụng
    • Vulkan có những tính năng cho phép thực hiện một phần tính toán trực tiếp trên GPU, nên có vẻ sẽ giúp tăng tốc render voxel
  • Tôi nghĩ đây là lựa chọn ổn vì Minecraft Java Edition chỉ dành cho desktop, nên tránh được các vấn đề driver Vulkan trên di động
    Tuy vậy, với quy mô như Microsoft thì tôi cứ nghĩ họ đủ khả năng làm một RHI đa nền tảng dùng API ổn định theo từng nền tảng (DX12, Metal)

    • Microsoft thì lớn, nhưng studio Mojang thì không
      Việc bảo trì ba phiên bản renderer Java là gánh nặng lớn, nhất là khi hệ sinh thái mod là cốt lõi, nên chỉ riêng thay đổi lần này thôi cũng đã đủ gây xáo trộn
      Tôi không nghĩ cần làm cho việc bảo trì các shader mod trở nên khó hơn nữa
    • Bedrock Edition dùng bgfx (nguồn chính thức)
    • Trên di động, các launcher bên thứ ba dùng driver EGL hoặc Metal thông qua ANGLE
    • Việc chọn giữa Vulkan và DX12 thật ra chỉ là khác biệt bề mặt
      Trên macOS cũng có thể chạy Vulkan, nên tôi không thấy lý do rõ ràng nào để dùng DX12 cho một dự án mới
  • Trên chiếc Acer C720 Chromebook cũ của tôi (iGPU Intel HD4400), Vulkan không được hỗ trợ nên có vẻ Minecraft sẽ hỏng
    Trước đây điểm hay là nó chạy được trên gần như mọi phần cứng, nên khá tiếc

    • Nếu có thể chuyển đổi giữa render OpenGL và render Vulkan thì có lẽ vẫn có thể tiếp tục chơi bằng OpenGL
    • Bản Java vẫn có thể chạy các phiên bản cũ, nên vẫn có thể tiếp tục chơi 1.7.10
    • Trên driver Mesa, chipset đó có hỗ trợ một phần tính năng Vulkan
    • Tôi cũng vẫn đang dùng C720. Tôi để nó trong hộp cho thiết bị SDR, và đó thật sự là một trong những chiếc máy tôi yêu thích nhất
    • Thật thú vị khi OpenGL đã đạt được mức tương thích cao nhất trên rất nhiều thiết bị
  • Tôi thắc mắc vì sao họ không chuyển phần bình luận sang bài nguồn (chuỗi liên quan)

    • Có vẻ đây là ví dụ cho thấy cuối cùng thì thời điểm còn quan trọng hơn cả nội dung
  • Thật thú vị khi Microsoft lại gần với tiêu chuẩn Khronos hơn Apple
    Họ đã chấp nhận SPIR-V làm định dạng đầu ra và đầu vào cho DirectX Shader Compiler để tăng khả năng tương tác với Vulkan

    • Microsoft thực ra đã chấp nhận SPIR-V từ trước, và mục tiêu lớn là giảm số lượng fork nhờ Google đã làm sẵn một phần công việc
      Apple thì từ lâu đã rất không hài lòng với cách OpenCL được xử lý, còn Sony và Nintendo gần như không quan tâm tới Khronos
      Trên thực tế, API của Khronos bị giảm tính di động hoàn toàn vì vấn đề extension spaghetti
  • VulkanMod cải thiện hiệu năng rất nhiều nhưng lại không tương thích với phần lớn mod
    Nếu sau này có thể dùng Vulkan trong cả các modpack đầy đủ thì sẽ thực sự rất đáng mong đợi

  • Tôi hy vọng Vibrant Visuals sẽ sớm có trên Java Edition
    Việc muốn dùng shader mà lúc nào cũng phải cần mod thì khá đáng tiếc

    • Thật ra từ sau 1.17, bạn đã có thể nhúng trực tiếp GL shader vào resource pack
      Có thể cài chỉ bằng cách kéo-thả file .zip, không cần loader phức tạp hay rủi ro bảo mật
      Nó kém linh hoạt hơn Aperture, Iris, Optifine, nhưng tính năng thì khá tương tự
      Tôi cũng tò mò liệu shader Vulkan có thể được đưa vào resource pack hay không. Dù vậy, nó có thể bị hạn chế vì rủi ro làm hỏng tính năng của game cao hơn
    • Chơi Java Edition mà không mod gì thì hơi lạ. Nếu vậy thì có phải Bedrock đơn giản hơn không
  • Tôi không biết là Java có binding cho Vulkan. Có lẽ là dùng JNI
    Cũng khá bất ngờ khi họ vẫn còn dùng OpenGL. Tôi không rõ tình trạng hiện tại của Minecraft, và đây cũng là lần đầu tôi biết là có bản desktop không phải Java

    • Giờ thì JNI về cơ bản đã được thay thế bởi Foreign Function & Memory API
      Việc quản lý bộ nhớ sạch sẽ hơn nhiều, và việc binding với các hàm bên ngoài (như Vulkan) cũng dễ hơn rất nhiều
      Tôi nghĩ đây là một trong những tính năng bị đánh giá thấp nhất của Java gần đây
    • Mong là họ sẽ dùng FFM API thay vì JNI
  • Tôi thắc mắc vì sao họ lại duy trì hai phiên bản của cùng một game

    • Ban đầu họ định chuyển hoàn toàn sang Bedrock, nhưng vì API mod còn yếu và nhiều lỗi nên Java vẫn được ưa chuộng
      Bedrock gần như đã bắt kịp về tính năng, nhưng xét như một bản thay thế hoàn toàn thì coi như thất bại
    • Java xoay quanh cộng đồng mod, nên nếu xóa bỏ nó thì có nguy cơ làm sụp đổ cả hệ sinh thái YouTube·Twitch
      Bedrock có hiệu năng và tính di động tốt hơn, nhưng trên console thì dù sao cũng không thể mod
    • Nếu mất hệ sinh thái Java thì chính trò chơi có thể chết theo
      90% nội dung trên YouTube dựa trên Java, nên Microsoft đang tập trung vào việc đạt được sự tương đương về tính năng
    • Bedrock bị giới hạn mod và cộng đồng Java cũng không quan tâm
      Từ góc độ Microsoft, việc duy trì cả hai phiên bản để tối đa hóa doanh thu là hợp lý
    • Nếu ngừng Java, rất nhiều người chơi, trong đó có tôi, sẽ bỏ game
  • Hy vọng họ đã xử lý tốt vấn đề độ trễ khi biên dịch shader Vulkan

    • Renderer của Minecraft có vẻ không phụ thuộc nhiều vào PSO nên có lẽ sẽ không gặp vấn đề khựng hình do state
      Vì đây không phải hệ thống material phức tạp mà là một renderer voxel khá đơn giản
    • Vulkan cung cấp đầy đủ công cụ để tránh độ trễ do biên dịch shader
      Vấn đề xảy ra khi engine tạo ra quá nhiều tổ hợp shader, hoặc khi một số trạng thái GPU nhất định (ví dụ: blending) kích hoạt việc biên dịch lại shader
      Trong Vulkan hiện đại, phần lớn trạng thái có thể được xử lý bằng dynamic state, giúp giảm vấn đề này
      Tuy nhiên, một số trạng thái như blending vẫn có thể gây biên dịch lại
      Nói cách khác, nếu nhà phát triển tránh các dynamic state đó thì có thể ngăn độ trễ khá dễ dàng
    • Tôi nghĩ đây không phải khuyết điểm của Vulkan mà là vấn đề thiếu tối ưu hóa từ phía nhà phát triển
      Dạo này nhiều hãng game lớn khá lơ là với tối ưu kỹ thuật
    • Ở góc nhìn người mới, tôi vẫn tự hỏi liệu shader được biên dịch sẵn không giải quyết được chuyện này sao
 
aer0700 2026-02-21

Minecraft ban đầu là một trò chơi được phát triển bằng Java, nhưng sau khi được bán cho Microsoft thì lại được làm thêm một phiên bản bằng C++. Việc thay đổi hẳn ngôn ngữ phát triển và tái hiện lại toàn bộ một tựa game chắc hẳn không phải chuyện dễ, nên cũng khá thú vị khi tự hỏi vì sao họ lại làm vậy.

 
karikera 2026-02-24

Có vẻ họ đã tạo ra bản Bedrock nhằm mục đích tối ưu cho di động..
Tôi từng nghĩ họ sẽ bỏ Java, nhưng rốt cuộc có vẻ cả hai đều sẽ tiếp tục được cập nhật.