Google และ Binomial โอเพ่นซอร์ส Basis Universal ระบบการบีบอัดพื้นผิว

Google และทวินาม เปิด รหัสแหล่งที่มา พื้นฐานสากลซึ่งเป็นตัวแปลงสัญญาณสำหรับการบีบอัดพื้นผิวที่มีประสิทธิภาพและรูปแบบไฟล์ ".basis" สากลที่เกี่ยวข้องสำหรับการกระจายพื้นผิวที่ใช้รูปภาพและวิดีโอ รหัสการใช้งานอ้างอิงเขียนด้วยภาษา C ++ และ ให้มา ได้รับอนุญาตภายใต้ Apache 2.0

Basis Universal เสริมก่อนหน้านี้ ที่ตีพิมพ์ ระบบบีบอัดข้อมูล Draco 3D และพยายามแก้ไขปัญหาด้วยการจัดหาพื้นผิวสำหรับ GPU จนถึงขณะนี้ นักพัฒนาถูกจำกัดให้เลือกระหว่างรูปแบบระดับต่ำที่ให้ประสิทธิภาพสูงแต่เฉพาะกับ GPU และใช้พื้นที่ดิสก์มาก และรูปแบบอื่นๆ ที่สามารถลดขนาดลงได้แต่ไม่สามารถแข่งขันกับพื้นผิว GPU ในด้านประสิทธิภาพได้

รูปแบบ Basis Universal ช่วยให้คุณบรรลุประสิทธิภาพของพื้นผิว GPU ดั้งเดิม แต่ให้การบีบอัดในระดับที่สูงกว่า
Basis เป็นรูปแบบระดับกลางที่ให้การแปลงรหัสพื้นผิว GPU เป็นรูปแบบระดับต่ำต่างๆ ได้อย่างรวดเร็วสำหรับใช้ทั้งบนระบบเดสก์ท็อปและอุปกรณ์มือถือก่อนใช้งาน ปัจจุบันรองรับรูปแบบ PVRTC1 (4bpp RGB), BC7 (6 โหมด RGB), BC1-5, ETC1 และ ETC2 คาดว่าจะรองรับในอนาคตสำหรับรูปแบบ ASTC (RGB หรือ RGBA) และโหมด 4/5 RGBA สำหรับ BC7 และ 4bpp RGBA สำหรับ PVRTC1

Google และ Binomial โอเพ่นซอร์ส Basis Universal ระบบการบีบอัดพื้นผิว

พื้นผิวในรูปแบบพื้นฐานใช้หน่วยความจำวิดีโอน้อยกว่า 6-8 เท่า และต้องถ่ายโอนข้อมูลประมาณครึ่งหนึ่งของพื้นผิวทั่วไปตามรูปแบบ JPEG และน้อยกว่าพื้นผิวในโหมด RDO 10-25% ตัวอย่างเช่น ด้วยขนาดภาพ JPEG 891 KB และพื้นผิว ETC1 1 MB ขนาดข้อมูลในรูปแบบ Basis จะเป็น 469 KB ในโหมดคุณภาพสูงสุด เมื่อวางพื้นผิวในหน่วยความจำวิดีโอ พื้นผิว JPEG และ PNG ที่ใช้ในการทดสอบจะใช้หน่วยความจำ 16 MB ในขณะที่พื้นผิวใน
พื้นฐานต้องการหน่วยความจำ 2 MB สำหรับการแปลเป็น BC1, PVRTC1 และ ETC1 และ 4 MB สำหรับการแปลเป็น BC7

Google และ Binomial โอเพ่นซอร์ส Basis Universal ระบบการบีบอัดพื้นผิว

กระบวนการย้ายแอปพลิเคชันที่มีอยู่ไปยัง Basis Universal นั้นค่อนข้างง่าย ก็เพียงพอแล้วที่จะเข้ารหัสพื้นผิวหรือรูปภาพที่มีอยู่ให้เป็นรูปแบบใหม่โดยใช้ยูทิลิตี้ "basisu" ที่โครงการจัดทำโดยเลือกระดับคุณภาพที่ต้องการ ถัดไป ในแอปพลิเคชัน ก่อนโค้ดการเรนเดอร์ คุณจะต้องเริ่มต้นตัวแปลงรหัสพื้นฐาน ซึ่งมีหน้าที่ในการแปลรูปแบบกลางเป็นรูปแบบที่ GPU ปัจจุบันรองรับ ในเวลาเดียวกัน รูปภาพตลอดห่วงโซ่การประมวลผลทั้งหมดยังคงถูกบีบอัด รวมถึงการโหลดในรูปแบบบีบอัดลงใน GPU แทนที่จะแปลงรหัสทั้งภาพล่วงหน้า GPU จะเลือกถอดรหัสเฉพาะส่วนที่จำเป็นของภาพเท่านั้น

รองรับการบันทึกอาร์เรย์พื้นผิวที่ต่างกัน (cubemaps) พื้นผิวเชิงปริมาตร อาร์เรย์พื้นผิว ระดับ mipmap ลำดับวิดีโอ หรือส่วนย่อยของพื้นผิวที่กำหนดเองในไฟล์เดียว ตัวอย่างเช่น คุณสามารถรวมชุดรูปภาพไว้ในไฟล์เดียวเพื่อสร้างวิดีโอขนาดเล็ก หรือรวมพื้นผิวหลายๆ แบบเข้าด้วยกันโดยใช้ชุดสีทั่วไปสำหรับรูปภาพทั้งหมด และขจัดเทมเพลตรูปภาพทั่วไปที่ซ้ำกัน การใช้งานตัวเข้ารหัส Basis Universal รองรับการเข้ารหัสแบบมัลติเธรดโดยใช้ OpenMP ปัจจุบันตัวแปลงรหัสทำงานได้เฉพาะในโหมดเธรดเดียวเท่านั้น

นอกจากนี้ ใช้ได้ ตัวถอดรหัส Basis Universal สำหรับเบราว์เซอร์ จัดส่งในรูปแบบ WebAssembly ซึ่งสามารถใช้ในแอปพลิเคชันเว็บที่ใช้ WebGL ท้ายที่สุดแล้ว Google ตั้งใจที่จะสนับสนุน Basis Universal ในเบราว์เซอร์หลักๆ ทั้งหมด และส่งเสริมให้เป็นรูปแบบพื้นผิวแบบพกพาสำหรับ WebGL และข้อกำหนดในอนาคต เว็บGPUซึ่งมีแนวคิดคล้ายกับ Vulkan, Metal และ Direct3D 12 API

มีข้อสังเกตว่าความสามารถในการฝังวิดีโอด้วยการประมวลผลที่ตามมาเฉพาะในด้าน GPU ทำให้ Basis Universal เป็นโซลูชันที่น่าสนใจสำหรับการสร้างอินเทอร์เฟซผู้ใช้แบบไดนามิกบน WebAssembly และ WebGL ซึ่งสามารถแสดงวิดีโอขนาดเล็กหลายร้อยรายการพร้อม ๆ กันโดยมีภาระงาน CPU น้อยที่สุด จนกว่าคำสั่ง SIMD จะสามารถใช้ได้ใน WebAssembly ด้วยตัวแปลงสัญญาณแบบดั้งเดิม ประสิทธิภาพระดับนี้ยังไม่บรรลุผลสำเร็จ ดังนั้น วิดีโอแบบอิงพื้นผิวจึงสามารถนำไปใช้ในพื้นที่ที่วิดีโอทั่วไปไม่สามารถใช้งานได้ ขณะนี้กำลังเตรียมโค้ดที่มีการเพิ่มประสิทธิภาพเพิ่มเติมสำหรับวิดีโอสำหรับการเผยแพร่ รวมถึงความสามารถในการใช้งานด้วย ไอเฟรมและพีเฟรม พร้อมการรองรับแผ่นรองแบบปรับได้ (CR)

ที่มา: opennet.ru

เพิ่มความคิดเห็น