12 คะแนน โดย GN⁺ 2026-02-20 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • Minecraft Java Edition กำลังเปลี่ยนเอนจินเรนเดอร์กราฟิกจาก OpenGL ไปเป็น Vulkan
  • สาเหตุของการเปลี่ยนผ่านคือ OpenGL หยุดอัปเดตและยุติการรองรับบน macOS หลังใช้งานมาตั้งแต่ทศวรรษ 1990
  • Vulkan รองรับ Windows และ Linux โดยตรง ส่วน macOS รองรับผ่าน translation layer โดยไม่มีประสิทธิภาพลดลง
  • การเปลี่ยนครั้งนี้คาดว่าจะช่วย ยกระดับคุณภาพภาพและเพิ่มเฟรมเรต
  • จะทดสอบ OpenGL และ Vulkan ควบคู่กันในสแนปช็อต และมีแผนถอด OpenGL ออกเมื่อมั่นใจในเสถียรภาพ

Bringing modern rendering to Java

  • Minecraft: Java Edition ยังคงเดินหน้าการเตรียมความพร้อมสำหรับ Vibrant Visuals พร้อมรีแฟกเตอร์และปรับปรุงโค้ดเรนเดอร์ให้ทันสมัย
    • มีการปรับโครงสร้างโค้ดเรนเดอร์ให้ดีขึ้นผ่านอัปเดตก่อนหน้านี้
    • ตอนนี้เข้าสู่ขั้นตอนของการเปลี่ยนเทคโนโลยีพื้นฐานด้านการเรนเดอร์โดยตรง
  • มีแผนเปลี่ยนเทคโนโลยีเรนเดอร์ของเกมจาก OpenGL ไปเป็น Vulkan
    • เพื่อเปิดความเป็นไปได้ใหม่ด้านกราฟิกและประสิทธิภาพ
    • คาดว่าจะส่งผลต่อชุมชนม็อดและผู้เล่นบางส่วน

What are we changing?

  • ปัจจุบัน Java Edition ใช้ OpenGL graphics API ที่สร้างขึ้นมาตั้งแต่ทศวรรษ 1990
    • ใช้ OpenGL มาตั้งแต่ช่วงเปิดตัวแรกเริ่ม
  • เหตุผลที่เลือก OpenGL เพราะสามารถรองรับ Linux, Windows และ macOS ครบทุกระบบปฏิบัติการ
    • ออกแบบมาให้รันได้บนพีซีและ Mac แทบทั้งหมด
  • OpenGL หยุดอัปเดตมาแล้ว 9 ปี และอยู่ในสถานะ Deprecated บน macOS ซึ่งในอนาคตจะไม่สามารถรันได้
  • เพื่อให้เข้ากับ macOS ได้ จึงต้องค้างอยู่กับ OpenGL เวอร์ชันเก่า และทำให้การปรับโค้ดเบสให้ทันสมัยทำได้ยาก
  • การเลิกใช้ OpenGL จึงจำเป็นเพื่อให้ Java Edition ยังรันต่อได้บนพีซีส่วนใหญ่ รวมถึง macOS และ Linux

Introducing: Vulkan

  • Vulkan เป็น graphics API ที่ใช้งานในตลาดมานานกว่า 10 ปี และได้รับการยอมรับจากผู้ผลิตฮาร์ดแวร์รายหลักอย่างกว้างขวาง
  • รองรับโดยตรงบน Windows และ Linux รุ่นใหม่ ส่วน macOS รองรับได้ผ่าน translation layer และทำงานได้โดยไม่เสียประสิทธิภาพ
  • ในระยะยาวจะเปิดทางให้เพิ่มประสิทธิภาพและขยายความสามารถได้มากขึ้น
    • เป็นรากฐานที่จำเป็นสำหรับการนำ Vibrant Visuals มาใช้
  • อย่างไรก็ตาม GPU ที่มีอายุมากกว่า 10 ปีอาจไม่รองรับ Vulkan

What does this mean for modders?

  • เมื่อเปลี่ยนจาก OpenGL ไปเป็น Vulkan โหมดเรนเดอร์ที่อิงกับ OpenGL จะได้รับผลกระทบ
  • การย้ายไป Vulkan คาดว่าจะต้องใช้ความพยายามมากกว่าการรองรับรีลีสปกติ
  • ทีมงานแนะนำให้ชุมชนม็อดลดการพึ่งพา OpenGL
    • ควรนำ internal rendering API กลับมาใช้ซ้ำให้มากที่สุด
    • หากจำเป็นสามารถพูดคุยเชิงเทคนิคกับทีมพัฒนาได้โดยตรง
  • มีการพูดคุยเชิงเทคนิคในช่อง Discord ของ Vibrant Visuals
    • ช่องนี้ไม่ใช่สำหรับประกาศข่าว แต่เป็นพื้นที่สนทนาเชิงเทคนิคเชิงลึกระหว่างนักพัฒนา

What does this mean for players?

  • ม็อดบางตัวอาจได้รับผลกระทบระหว่างกระบวนการเปลี่ยนผ่าน
    • ผู้พัฒนาม็อดอาจต้องใช้เวลาในการอัปเดต
  • ในสแนปช็อตถัดไปจะมีการเปิดให้ใช้ OpenGL และ Vulkan ควบคู่กัน
    • ผู้เล่นจะเลือก renderer ได้ทั้งในสแนปช็อตและเวอร์ชันจริง
    • พร้อมกันนั้นจะมีการปรับปรุงด้านเสถียรภาพและลดบั๊กให้น้อยที่สุด
  • ขอให้รายงานบั๊กผ่าน bugs.mojang.com

When is this happening?

  • เป้าหมายคือเริ่มนำ Vulkan เข้าสู่การทดสอบในสแนปช็อตภายในช่วงฤดูร้อน
  • ระหว่างช่วงทดสอบจะสามารถสลับระหว่าง OpenGL และ Vulkan ได้
  • เมื่อยืนยันเสถียรภาพและประสิทธิภาพเรียบร้อยแล้ว จะมีการถอด implementation ของ OpenGL ออก
    • จะมีการแจ้งล่วงหน้าก่อนถอดออก
    • และจะมีการอัปเดตสเปกขั้นต่ำที่ต้องการ

Vulkan and Vibrant Visuals

  • การปรับ renderer ให้ทันสมัยคือ ขั้นตอนสำคัญในโรดแมปของ Vibrant Visuals
  • การเปลี่ยนไปใช้ Vulkan จะเพิ่มพื้นที่สำหรับการปรับปรุงกราฟิกและเสริมศักยภาพด้านประสิทธิภาพ
  • คาดว่าจะช่วยลดบั๊กที่เกี่ยวข้องกับไดรเวอร์
  • เป้าหมายสำคัญคือการทำให้ยังสามารถรันต่อบน macOS ได้อย่างต่อเนื่อง
    • เพื่อให้ผู้เล่นบนทุกระบบปฏิบัติการที่รองรับเข้าร่วมได้อย่างเท่าเทียม

ความหมายของอัปเดตนี้

  • การเปลี่ยนครั้งนี้เป็นก้าวสำคัญที่ทำให้ Minecraft Java ย้ายไปสู่เทคโนโลยีกราฟิกสมัยใหม่
  • เป็นการ เสริมความแข็งแรงให้ฐานเทคนิคของเอนจินเกม เพื่อรองรับการขยายตัวและการเพิ่มฟีเจอร์ในอนาคตได้ดีขึ้น
  • การย้ายจาก OpenGL ไปสู่ Vulkan ยังสอดคล้องกับ แนวโน้มการเปลี่ยนผ่านยุคของ graphics API ทั่วทั้งอุตสาหกรรมเกม

3 ความคิดเห็น

 
GN⁺ 2026-02-20
ความคิดเห็นจาก Hacker News
  • หวังว่าเมื่อเวลาผ่านไป ภาระ CPU บนเธรดหลักจะลดลง
    เกมที่พอร์ตจาก DX11 ไป 12 และจาก OpenGL ไป Vulkan ไม่ได้แรงขึ้นเพียงเพราะเปลี่ยน API เท่านั้น แต่เพราะใช้ประโยชน์จาก ความสามารถในการประมวลผล draw call แบบขนาน
    Minecraft ติดคอขวดเพราะ CPU ช้ากว่าความเร็วที่ GPU เรนเดอร์ได้ ดังนั้นจึงหวังว่าการเปลี่ยนแปลงนี้จะทำให้มีทรัพยากร CPU เหลือมากขึ้นแม้ในสภาพแวดล้อมที่มีม็อด

    • ฉันใช้ Unigine Heaven เป็นเบนช์มาร์กบนระบบ Linux
      ลองรันเวอร์ชัน Windows ผ่าน Proton เล่น ๆ แล้วพบว่าประสิทธิภาพ ดีขึ้น 30%
      คิดว่าน่าจะเป็นเพราะการทำงานแบบมัลติเธรดของ ไลบรารี dxvk ที่ Proton ใช้อยู่
    • Vulkan มีความสามารถที่ให้ GPU ทำการคำนวณบางส่วนได้โดยตรง จึงน่าจะช่วย เร่งการเรนเดอร์ voxel ได้
  • คิดว่าเป็นตัวเลือกที่ดีตรงที่ Minecraft Java Edition เป็นเดสก์ท็อปเท่านั้น จึงเลี่ยง ปัญหาไดรเวอร์ Vulkan บนมือถือได้
    แต่ถ้าเป็นบริษัทขนาด Microsoft ก็นึกว่าน่าจะมีทรัพยากรพอจะทำ cross-platform RHI ที่ใช้ API ที่เสถียรในแต่ละแพลตฟอร์มอย่าง DX12 และ Metal ได้

    • Microsoft ใหญ่ก็จริง แต่ Mojang Studios ไม่ได้ใหญ่ขนาดนั้น
      การดูแลเรนเดอเรอร์ Java 3 เวอร์ชันเป็นภาระหนัก และโดยเฉพาะเมื่อ ระบบนิเวศของม็อด เป็นหัวใจสำคัญ ความเปลี่ยนแปลงครั้งนี้อย่างเดียวก็น่าจะสร้างความสับสนมากแล้ว
      ไม่น่าจำเป็นต้องทำให้การดูแล shader mod ยากขึ้นไปอีก
    • Bedrock Edition ใช้ bgfx (แหล่งข้อมูลทางการ)
    • บนมือถือ ลอนเชอร์จากบุคคลที่สามใช้ไดรเวอร์ EGL หรือ Metal ผ่าน ANGLE
    • การเลือกระหว่าง Vulkan กับ DX12 จริง ๆ แล้วเป็นแค่ ความแตกต่างผิวเผิน
      แม้แต่บน macOS ก็รัน Vulkan ได้ จึงไม่ค่อยเข้าใจว่าทำไมโปรเจกต์ใหม่ถึงต้องเลือก DX12
  • บน Acer C720 Chromebook เครื่องเก่าของฉัน (Intel HD4400 iGPU) ไม่มีการรองรับ Vulkan จึงดูเหมือนว่า Minecraft จะใช้งานไม่ได้
    น่าเสียดาย เพราะเมื่อก่อนจุดเด่นคือมันรันได้บนฮาร์ดแวร์แทบทุกแบบ

    • ถ้าสลับระหว่างการเรนเดอร์แบบ OpenGL กับ Vulkan ได้ ก็น่าจะยังเล่นด้วย OpenGL ต่อได้
    • เวอร์ชัน Java ยังรันเวอร์ชันเก่าได้อยู่ จึงอาจเล่น 1.7.10 ต่อไปได้
    • ในไดรเวอร์ Mesa ชิปเซ็ตนั้นรองรับฟีเจอร์ Vulkan บางส่วน
    • ฉันก็ยังใช้ C720 อยู่ เอาใส่เคสไว้สำหรับอุปกรณ์ SDR และเป็นคอมพิวเตอร์ที่รักมากเครื่องหนึ่งจริง ๆ
    • น่าสนใจที่ OpenGL สามารถทำ ความเข้ากันได้ สูงสุดบนอุปกรณ์หลากหลายประเภทได้
  • สงสัยว่าทำไมไม่ย้ายคอมเมนต์ไปไว้ฝั่งต้นทาง (เธรดที่เกี่ยวข้อง)

    • เหมือนเป็นตัวอย่างที่แสดงให้เห็นว่า จังหวะเวลา สำคัญกว่าตัวเนื้อหาเสียอีก
  • น่าสนใจที่ Microsoft เข้าใกล้ มาตรฐานของ Khronos มากกว่า Apple
    บริษัทได้นำ SPIR-V มาใช้เป็นฟอร์แมตอินพุตและเอาต์พุตของ DirectX shader compiler เพื่อเพิ่มการทำงานร่วมกับ Vulkan

    • Microsoft รับ SPIR-V มาตั้งแต่ก่อนแล้ว และมีเป้าหมายหลักเพื่อลดการแตกแขนงของฟอร์ก โดยอาศัยงานบางส่วนที่ Google ทำไว้
      Apple ไม่พอใจกับวิธีจัดการ OpenCL อย่างมาก ส่วน Sony กับ Nintendo ก็แทบไม่สนใจ Khronos เลย
      ในทางปฏิบัติ API ของ Khronos ก็ยังพก ปัญหา extension spaghetti จนทำให้การพกพาอย่างสมบูรณ์ทำได้ไม่ดีนัก
  • VulkanMod เพิ่มประสิทธิภาพได้มาก แต่ไม่เข้ากันกับม็อดส่วนใหญ่
    ถ้าในอนาคตใช้ Vulkan ได้ทั้งม็อดแพ็กเต็มรูปแบบก็น่าตื่นเต้นมาก

  • อยากให้ Vibrant Visuals มาที่ Java Edition เร็ว ๆ
    น่าเสียดายที่ถ้าจะใช้ shader ก็ต้องพึ่งม็อดตลอด

    • จริง ๆ แล้วตั้งแต่ 1.17 เป็นต้นมา สามารถใส่ GL shader ใน resource pack ได้โดยตรง
      ติดตั้งได้ด้วยการลากแล้ววางไฟล์ .zip โดยไม่ต้องใช้ loader ซับซ้อนหรือเสี่ยงด้านความปลอดภัย
      มันยืดหยุ่นน้อยกว่า Aperture, Iris, Optifine แต่ความสามารถก็ใกล้เคียงกันมาก
      เลยสงสัยว่า shader ของ Vulkan จะใส่ใน resource pack ได้ไหม แต่ก็อาจถูกจำกัดเพราะมีความเสี่ยงที่จะทำให้ฟังก์ชันของเกมเสียหายมากกว่า
    • การเล่น Java Edition แบบไม่มีม็อดดูแปลก ๆ อยู่เหมือนกัน ถ้าอย่างนั้น Bedrock น่าจะง่ายกว่าหรือเปล่า
  • ไม่รู้มาก่อนว่า Java มี Vulkan binding ด้วย น่าจะใช้ JNI
    ยังแปลกใจที่ก่อนหน้านี้ยังใช้ OpenGL อยู่ ไม่ค่อยรู้สถานะปัจจุบันของ Minecraft เท่าไร แต่ก็เพิ่งรู้เหมือนกันว่ามีเวอร์ชันเดสก์ท็อปที่ไม่ใช่ Java ด้วย

    • ตอนนี้ JNI แทบจะถูกแทนที่ด้วย Foreign Function & Memory API แล้ว
      การจัดการหน่วยความจำสะอาดขึ้นมาก และการทำ binding กับฟังก์ชันภายนอกอย่าง Vulkan ก็ง่ายขึ้นมาก
      คิดว่านี่เป็นหนึ่งในฟีเจอร์ของ Java ยุคหลังที่ ถูกประเมินค่าต่ำเกินไป มากที่สุด
    • หวังว่าจะใช้ FFM API แทน JNI
  • สงสัยว่าทำไมถึงต้องดูแลเกมเดียวกัน สองเวอร์ชัน

    • เดิมทีตั้งใจจะย้ายไป Bedrock ทั้งหมด แต่เพราะ modding API ยังไม่ดีพอและมีบั๊กเยอะ ทำให้ Java ยังเป็นตัวเลือกที่คนนิยมอยู่
      Bedrock ไล่ตามด้านฟีเจอร์มาเกือบหมดแล้ว แต่ก็ถือว่ายังแทนที่ได้ไม่สมบูรณ์
    • Java ขับเคลื่อนด้วย ชุมชนม็อด ดังนั้นถ้าตัดมันออกก็เสี่ยงทำให้ระบบนิเวศของ YouTube และ Twitch พังไปด้วย
      Bedrock แม้จะเด่นเรื่องประสิทธิภาพและการพกพา แต่บนคอนโซลก็ยังม็อดไม่ได้อยู่ดี
    • ถ้าสูญเสียระบบนิเวศของ Java ไป ตัวเกมเองก็อาจตายได้
      คอนเทนต์บน YouTube 90% อิงจาก Java ดังนั้น Microsoft จึงมุ่งเน้นการทำให้ฟีเจอร์เท่าเทียมกัน
    • Bedrock รองรับม็อดอย่างจำกัด และชุมชน Java ก็ไม่สนใจ
      ในมุมของ Microsoft การคงสองเวอร์ชันไว้เพื่อ เพิ่มรายได้สูงสุด จึงสมเหตุสมผล
    • ถ้ายุติ Java ผู้เล่นจำนวนมาก (รวมฉันด้วย) ก็คงเลิกเล่นเกมนี้
  • หวังว่าจะแก้ปัญหา อาการหน่วงจากการคอมไพล์ shader ของ Vulkan ได้ดี

    • เรนเดอเรอร์ของ Minecraft พึ่งพา PSO ไม่มาก จึงไม่น่ามีปัญหา กระตุกจากสถานะ
      เพราะมันไม่ใช่ระบบ material ที่ซับซ้อน แต่เป็นเพียง voxel renderer ที่ค่อนข้างเรียบง่าย
    • Vulkan มีเครื่องมือครบสำหรับหลีกเลี่ยงอาการหน่วงจากการคอมไพล์ shader
      ปัญหามักเกิดเมื่อเอนจินสร้าง ชุด shader combination มากเกินไป หรือเมื่อสถานะ GPU บางอย่าง (เช่น blending) ไปกระตุ้นให้มีการคอมไพล์ shader ใหม่
      ใน Vulkan รุ่นใหม่ สถานะส่วนใหญ่จัดการเป็น dynamic state ได้ จึงช่วยลดปัญหานี้
      แต่บางสถานะอย่าง blending ก็ยังอาจทำให้ต้องคอมไพล์ใหม่ได้
      กล่าวคือ ถ้านักพัฒนาหลีกเลี่ยง dynamic state เหล่านั้นได้ ก็ป้องกันอาการหน่วงได้ไม่ยาก
    • มองว่านี่ไม่ใช่ข้อบกพร่องของ Vulkan แต่เป็นปัญหา การปรับแต่งไม่ดีพอของนักพัฒนา
      ทุกวันนี้สตูดิโอเกมใหญ่หลายแห่งมักละเลยการปรับแต่งทางเทคนิค
    • ในมุมของมือใหม่ ก็อดสงสัยไม่ได้ว่า shader ที่คอมไพล์ล่วงหน้า จะแก้ปัญหานี้ไม่ได้หรือ
 
aer0700 2026-02-21

เดิมที Minecraft เป็นเกมที่พัฒนาด้วย Java แต่พอถูกขายให้ MS ก็ถูกสร้างขึ้นมาใหม่อีกครั้งด้วย C++ สินะ การเปลี่ยนภาษาโปรแกรมของทั้งเกมแล้วนำมาสร้างใหม่ทั้งหมดคงไม่ใช่เรื่องง่ายแน่ ๆ เลย น่าแปลกดีว่าเกิดอะไรขึ้นถึงเป็นแบบนั้น

 
karikera 2026-02-24

ดูเหมือนว่าพวกเขาจะสร้าง Bedrock Edition ขึ้นมาเพื่อจุดประสงค์ด้านการปรับให้เหมาะกับมือถือ..
ผมนึกว่าอาจจะทิ้ง Java ไปเสียแล้ว แต่สุดท้ายก็ดูเหมือนว่าจะอัปเดตทั้งสองฝั่งนะครับ