Com2uS ใช้ Vulkan เพื่อกราฟิกที่ดีขึ้น

ภาพหน้าจอโลโก้ชื่อเกมจาก Com2uS Chronicles

Summoners War: Chronicles US(WW) และ KR ของ Com2uS ใช้ Vulkan ในการเรนเดอร์บน Android เท่านั้น ซึ่งช่วยเพิ่มประสิทธิภาพได้สูงสุด 30%

Vulkan เป็น API กราฟิก 3 มิติแบบข้ามแพลตฟอร์มที่ทันสมัย ซึ่งออกแบบมาเพื่อลดการแยกแยะระหว่างฮาร์ดแวร์กราฟิกของอุปกรณ์กับเกม Vulkan มีค่าใช้จ่ายเพิ่มเติมของ CPU ต่ำกว่าเมื่อเทียบกับ OpenGL ES และ Vulkan มีฟีเจอร์ที่หลากหลายกว่า

รูปที่ 1 ภาพหน้าจอในเกม
รูปที่ 2 วิดีโอในเกม

ฟีเจอร์การแสดงผล

Com2uS ได้พัฒนาฟีเจอร์การเรนเดอร์ขั้นสูงสำหรับ Summoners War: Chronicles ซึ่งรวมถึงฟีเจอร์ต่อไปนี้

  • ระบบการแสดงผลแบบเลื่อนเวลาที่กำหนดเองที่มีการคัดแสงก่อนการแสดงผลและแสงที่ทำงานอยู่สูงสุด 16 ดวงในมุมมอง frustum พร้อมกัน
  • วิธีการสร้างอินสแตนซ์ของการแสดงผลโดยอ้อม (เรียกว่า Clay) เพื่อวาดเมช วัสดุ และพื้นผิวหลายรายการพร้อมกัน
  • การใช้คอมพิวตเชดเดอร์อย่างแพร่หลายสำหรับงานแสดงผลก่อนการเรนเดอร์
  • ความสามารถในการปรับการแสดงผลเงาที่ใช้งานอยู่และเอฟเฟกต์หลังการประมวลผลแบบไดนามิกตามการเคลื่อนไหวของกล้อง ตัวเลือกกราฟิก และประสิทธิภาพรันไทม์

การปรับฮาร์ดแวร์ของอุปกรณ์เคลื่อนที่

Summoners War: Chronicles ใช้โปรแกรมแสดงผลเดียวกันสำหรับอุปกรณ์ Android, คอมพิวเตอร์ส่วนบุคคล และคอนโซลเกมโดยเฉพาะ Com2uS ได้ปรับการตั้งค่าการแสดงผล รวมถึงความลึกในการวาดและความละเอียดเพื่อให้ได้ประสิทธิภาพที่ดีที่สุดบนฮาร์ดแวร์อุปกรณ์เคลื่อนที่ Com2uS ได้สร้างเชดเดอร์บางเวอร์ชันสํารองและใช้จํานวนอินสแตนซ์ที่ลดลงเพื่อให้รองรับอุปกรณ์บางรุ่นที่ใช้ Android 11 (API ระดับ 30) และต่ำกว่า นอกจากนี้ Summoners War: Chronicles ยังใช้ฟีเจอร์ประสิทธิภาพแบบปรับได้ใน Android เพื่อปรับตัวเลือกกราฟิกแบบไดนามิกตามสภาพความร้อนของอุปกรณ์

เหตุผลที่รองรับเฉพาะ Vulkan

Com2uS ใช้ Vulkan กับ Summoners War: Chronicles เท่านั้นด้วยเหตุผลหลายประการ ดังนี้

  • ข้อกำหนดขั้นต่ำของอุปกรณ์ไม่รวมอุปกรณ์รุ่นเก่าที่มีประสิทธิภาพต่ำซึ่งไม่มีการรองรับ Vulkan
  • การปรับแต่งเอ็นจิ้น Unity ไปป์ไลน์การเรนเดอร์ในตัว (BiRP) ฟีเจอร์ที่จำเป็นใช้ได้เฉพาะในแบ็กเอนด์ Vulkan ของเกม
  • การใช้ฟีเจอร์การแสดงผลโดยใช้เอาต์พุตของคอมพิวตเชดเดอร์และออบเจ็กต์บัฟเฟอร์พื้นที่เก็บข้อมูลเชดเดอร์ (SSBOs) ทำได้ใน Vulkan แต่ทําใน OpenGL ES ไม่ได้

ภาระงานใน Compute

Summoners War: Chronicles ทำงานกับคอมพิวตเชดเดอร์อย่างหนักเพื่อสร้างข้อมูลสำหรับการเรนเดอร์ การใช้เชดเดอร์การประมวลผลมีไว้เพื่อดำเนินการต่อไปนี้

  • การตัดออบเจ็กต์
  • การตรวจสอบร่องรอยการชน
  • งานภาพเคลื่อนไหว
  • การสร้างข้อมูลการแสดงผลโดยอ้อม

ระบบจะเขียนข้อมูลการประมวลผลที่ได้ลงในออบเจ็กต์ RWBuffer ของเอ็นจิ้น Unity Summoners War: Chronicles ทำงานประมวลผลทั้งหมดด้วยการเรียกใช้ครั้งเดียวเพื่อให้ได้ประสิทธิภาพที่ดีที่สุด ซึ่งต้องใช้ RWBuffers หลายรายการพร้อมกัน แนวทางนี้ใช้ได้เฉพาะกับ Vulkan เนื่องจากแบ็กเอนด์ BiRP ของ Unity ที่ใช้ OpenGL ES รองรับการใช้ RWBuffer เพียงรายการเดียวในแต่ละครั้ง

ชุดข้อมูลที่สร้างขึ้นสำหรับการเรนเดอร์มักจะมีขนาดใหญ่กว่าขีดจำกัดขนาดของอุปกรณ์สำหรับออบเจ็กต์บัฟเฟอร์แบบสอดคล้องกัน (UBOs) Summoners War: Chronicles จะใช้ออบเจ็กต์บัฟเฟอร์พื้นที่เก็บข้อมูลของ Shader (SSBOs) แทน ซึ่งมีขีดจำกัดความจุมากกว่า อย่างไรก็ตาม การเชื่อมโยง SSBO กับการดำเนินการระยะเวิร์กเท็กซ์ต้องรองรับ SSBO แบบอ่านอย่างเดียว OpenGL ES รองรับเฉพาะ SSBO แบบอ่าน/เขียน ขณะที่ Vulkan สามารถทําเครื่องหมาย SSBO เป็นแบบอ่านอย่างเดียวได้

การแสดงผลแบบอินสแตนซ์โดยอ้อมด้วย Clay

สำหรับ Summoners War: Chronicles ทาง Com2uS ได้พัฒนาวิธีการจัดกลุ่มวัสดุ เมช และพื้นผิวหลายรายการไว้ในการเรียกใช้การวาดครั้งเดียว Com2uS เรียกระบบนี้ว่า Clay Clay ช่วยปรับปรุงประสิทธิภาพของเกมได้ 30% เนื่องจากลดจำนวนการเรียกการวาดได้อย่างมาก

Clay จะเริ่มทำงานในช่วงการคัดออกและการชนกันโดยสร้างรายการออบเจ็กต์ที่แสดงผลได้ซึ่งเข้ากันได้ จากนั้น Clay จะสร้างข้อมูลการแสดงผลสำหรับวัตถุแต่ละรายการที่ระบุไว้ใน SSBO กระบวนการนี้ทำงานด้วยเชดเดอร์การประมวลผล ซึ่งช่วยให้ใช้การแสดงผลแบบอินสแตนซ์โดยอ้อมได้โดยใช้ฟังก์ชัน DrawMeshInstancedIndirect ของโปรแกรมแสดงผล Unity เมื่อใช้การแสดงผลโดยอ้อม ระบบจะสร้างข้อมูลอินสแตนซ์และพารามิเตอร์จํานวนอินสแตนซ์ใน GPU โดยตรง เมื่อวาดวัตถุ Clay จะเชื่อมโยงเมชกรวยแทนการเชื่อมโยงเมชวัตถุแบบดั้งเดิม ดังภาพต่อไปนี้

รูปที่ 3 เมชกรวย

จากนั้น Clay จะเปลี่ยนรูปแบบเมชกรวยในเวิร์กเทกซ์เชดเดอร์โดยใช้ SSBO ที่เชื่อมโยงของข้อมูลการเปลี่ยนรูปแบบเวิร์กเทกซ์ที่คอมพิวตเชดเดอร์สร้างขึ้น การเชื่อมโยง SSBO กับระยะเวิร์กเท็กซ์ต้องใช้ Vulkan Clay สามารถใช้กรวยที่เปลี่ยนรูปแบบหลายกรวยเพื่อแสดงผลออบเจ็กต์เดียว ความซับซ้อนของวัตถุจะเป็นตัวกำหนดจำนวนกรวย

รูปที่ 4 วิธีที่เปลี่ยนรูปทรงกรวยเป็นต้นไม้

ระบบจะจัดกลุ่มข้อมูลวัสดุของวัตถุไว้ในบัฟเฟอร์อื่นที่สร้างขึ้นโดยคอมพิวต shader บัฟเฟอร์จะเชื่อมโยงกับ Shader ระดับเศษ พื้นผิวของวัตถุที่กำลังวาดจะได้รับการกําหนดค่าในอาร์เรย์พื้นผิว ดัชนีอาร์เรย์สำหรับพื้นผิวของออบเจ็กต์จะรวมอยู่ในข้อมูลวัสดุของออบเจ็กต์ ภายใต้สถานการณ์ที่เหมาะสม เคลย์จะแสดงผลได้ด้วยการเรียกใช้การวาดสูงสุด 7 ครั้ง ดังนี้

  • วัตถุคงที่
  • วัตถุที่เคลื่อนไหว
  • แสงเงา (4 ระยะ)
  • การแสดงผล

Unity + Vulkan

Summoners War: Chronicles แสดงให้เห็นว่าการผสมผสานที่มีประสิทธิภาพระหว่างเครื่องมือสร้างเกม Unity กับ Vulkan Graphics API ช่วยให้นักพัฒนาแอปนำกราฟิกคุณภาพระดับคอนโซลขั้นสูงมาสู่อุปกรณ์ Android ได้