Samsung Galaxy XR มาแล้ว พร้อมขับเคลื่อนด้วย Android XR! บล็อกโพสต์นี้เป็นส่วนหนึ่งของ สัปดาห์พิเศษของ Android XR ซึ่งเราได้รวบรวมแหล่งข้อมูลต่างๆ ไม่ว่าจะเป็นบล็อกโพสต์ วิดีโอ โค้ดตัวอย่าง และอื่นๆ อีกมากมายที่ออกแบบมาเพื่อช่วยให้คุณได้เรียนรู้ สร้าง และเตรียมแอปให้พร้อมสำหรับ Android XR
สัปดาห์นี้ Samsung ได้เปิดตัว Galaxy XR ซึ่งสร้างขึ้นโดยความร่วมมือกับ Google และ Qualcomm นี่เป็นช่วงเวลาที่น่าตื่นเต้นสำหรับนักพัฒนาแอป และเราต้องการช่วยให้คุณได้รับประสิทธิภาพที่ดีที่สุดจากแอป XR
แม้ว่าประสิทธิภาพที่ไม่ดีในเกมและแอปบนอุปกรณ์ที่ไม่ใช่ XR อาจทำให้ผู้ใช้รู้สึกหงุดหงิด แต่ในโลกของ XR ประสิทธิภาพไม่ใช่เพียงตัวเลือก แต่เป็นพื้นฐานสำคัญที่ทำให้แอปประสบความสำเร็จ หากคุณไม่สามารถทำตามเป้าหมายอัตราเฟรมใน XR ได้ ก็อาจทำให้เกิดปัญหาที่ร้ายแรงกว่ามาก เช่น อาการเมารถเมาเรือ
ในคู่มือนี้ เราจะอธิบายการเพิ่มประสิทธิภาพที่จำเป็นที่คุณต้องเข้าใจสำหรับการพัฒนา Android XR คุณจะได้เรียนรู้ว่าฟีเจอร์ใดให้ประสิทธิภาพที่ดีที่สุด ควรใช้ฟีเจอร์เหล่านั้นเมื่อใด และฟีเจอร์ต่างๆ ทำงานร่วมกันอย่างไรเพื่อช่วยให้คุณทำตามเป้าหมายอัตราเฟรมได้
เป้าหมายของเรามีดังนี้
- ขั้นต่ำ: 72 FPS (เป็นส่วนหนึ่งของหลักเกณฑ์ด้านคุณภาพของ Play)
- ไม่บังคับ: 90 FPS โดยมีงบประมาณ 11 มิลลิวินาทีต่อเฟรม
ดูข้อมูลเพิ่มเติมเกี่ยวกับเหตุผลที่การรักษาอัตราเฟรมที่สูงเช่นนี้จึงมีความสำคัญได้ที่หลักเกณฑ์ด้านประสิทธิภาพ
ฟีเจอร์ด้านประสิทธิภาพเฉพาะสำหรับ XR
เราจะเริ่มต้นด้วยการพูดถึงฟีเจอร์ด้านประสิทธิภาพ 2 รายการที่เฉพาะสำหรับ XR ได้แก่ การแสดงผลแบบ Foveated และการลดขนาดตัวอย่างของ Vulkan
การแสดงผลแบบ Foveated
การแสดงผลแบบ Foveated เป็นการเพิ่มประสิทธิภาพที่มี 2 โหมด โหมดแรกคือโหมดคงที่ ซึ่งจะแสดงผลตรงกลางหน้าจอด้วยความละเอียดที่สูงขึ้น และค่อยๆ ลดความละเอียดลงเมื่อมองออกไปด้านนอก
โหมดที่ 2 คือโหมดการติดตามดวงตา ซึ่งจะแสดงผลเฉพาะบริเวณที่คุณกำลังมองด้วยรายละเอียดครบถ้วน ขณะเดียวกันก็ลดคุณภาพที่แสดงในบริเวณรอบข้าง โดยพื้นฐานแล้วโหมดนี้จะเลียนแบบการทำงานของสายตามนุษย์ ซึ่งเราจะเห็นรายละเอียดที่ชัดเจนเฉพาะในบริเวณที่เรากำลังจดจ่ออยู่เท่านั้น
การแสดงผลแบบ Foveated ช่วยลดภาระงานของ GPU ได้อย่างมากโดยไม่ลดคุณภาพของภาพที่ผู้ใช้รับรู้ ข้อดีของการแสดงผลแบบ Foveated คือผู้ใช้จะไม่สังเกตเห็นคุณภาพที่ลดลงในบริเวณรอบข้าง แต่ GPU จะสังเกตเห็นประสิทธิภาพที่เพิ่มขึ้นอย่างแน่นอน
ลองนึกภาพว่าคุณกำลังสร้างประสบการณ์การใช้งานพิพิธภัณฑ์ที่มีวัตถุโบราณ 3 มิติที่ซับซ้อน หากไม่มีการแสดงผลแบบ Foveated คุณจะพยายามรักษา 90 FPS เพื่อแสดงผลทุกอย่างใน "ขอบเขตการมองเห็น" ได้อย่างยากลำบาก แต่การแสดงผลแบบ Foveated จะช่วยให้คุณเก็บรายละเอียดที่มีโพลีสูงไว้ในบริเวณที่ผู้ใช้กำลังมองอยู่ได้ แต่สภาพแวดล้อมเบื้องหลังจะแสดงผลด้วยคุณภาพที่ต่ำกว่า ผู้ใช้จะไม่สังเกตเห็นความแตกต่าง แต่คุณจะมีพื้นที่เหลือในการเพิ่มรายละเอียดลงในฉาก
การลดขนาดตัวอย่างของ Vulkan
การลดขนาดตัวอย่างของ Vulkan เป็นเพื่อนที่ดีที่สุดของการแสดงผลแบบ Foveated ในขณะที่การแสดงผลแบบ Foveated จะตัดสินใจว่าจะแสดงผลอะไรด้วยคุณภาพระดับต่างๆ การลดขนาดตัวอย่างของ Vulkan จะจัดการวิธีแสดงผลคุณภาพระดับต่างๆ อย่างมีประสิทธิภาพ โดยใช้แผนที่ความหนาแน่นของ Fragment
เมื่อใช้ร่วมกับการแสดงผลแบบ Foveated การลดขนาดตัวอย่างของ Vulkan จะช่วยเพิ่มประสิทธิภาพให้คุณได้อีก 0.5 มิลลิวินาที นอกจากนี้ยังช่วยลดขอบหยักในบริเวณรอบข้าง ทำให้ภาพโดยรวมดูสะอาดตาขึ้น
ตัวอย่างเช่น ในเกมจำลองการบินที่ผู้ใช้จดจ่ออยู่กับเครื่องมือและส่วนควบคุม การใช้การแสดงผลแบบ Foveated ร่วมกับการลดขนาดตัวอย่างของ Vulkan จะทำให้ส่วนควบคุมที่มีรายละเอียดแสดงผลอย่างคมชัด แต่โครงสร้างห้องนักบินในบริเวณรอบข้างจะใช้ทรัพยากรน้อยลง 0.5 มิลลิวินาทีที่เพิ่มขึ้นอาจดูไม่มากนัก แต่ก็เป็นความแตกต่างระหว่างการมีพื้นที่สำหรับองค์ประกอบแบบอินเทอร์แอกทีฟเพิ่มเติมกับการเกิดเฟรมหลุดในช่วงเวลาที่เข้มข้น
ฟีเจอร์ GPU สำหรับฉากที่ซับซ้อน
นอกจากการแสดงผลแบบ Foveated และการลดขนาดตัวอย่างของ Vulkan แล้ว ยังมีฟีเจอร์ GPU บางรายการที่ช่วยลดภาระที่ไม่จำเป็นผ่านการสร้างอินสแตนซ์และการคัดกรองอย่างชาญฉลาด ฟีเจอร์เหล่านี้มีประสิทธิภาพเป็นพิเศษสำหรับฉากที่ซับซ้อนซึ่งมีรูปทรงเรขาคณิตซ้ำๆ หรือมีการบดบังอย่างมาก
GPU Resident Drawer
GPU Resident Drawer จะใช้การสร้างอินสแตนซ์ GPU โดยอัตโนมัติเพื่อลดการเรียกการแสดงผลและเพิ่มเวลาประมวลผลของ CPU ดังนั้น GPU จะจัดกลุ่มออบเจ็กต์ที่คล้ายกันไว้ด้วยกันแทนที่ CPU จะบอก GPU เกี่ยวกับออบเจ็กต์แต่ละรายการ
ฟีเจอร์นี้มีประสิทธิภาพมากที่สุดสำหรับฉากขนาดใหญ่ที่มีตาข่ายซ้ำๆ เช่น ต้นไม้ในป่า เฟอร์นิเจอร์ในอาคารสำนักงาน หรืออุปกรณ์ประกอบฉากที่กระจัดกระจายอยู่ทั่วสภาพแวดล้อม
ลองนึกภาพฉากป่าที่มีต้นไม้ 200 ต้นซึ่งใช้ตาข่ายฐานเดียวกัน หากไม่มี GPU Resident Drawer คุณจะมีคำสั่งการแสดงผล 200 รายการที่ใช้ GPU และทำให้ CPU มีพื้นที่ว่าง เมื่อเปิดใช้ฟีเจอร์นี้ GPU จะสร้างอินสแตนซ์ต้นไม้เหล่านั้นอย่างชาญฉลาด ซึ่งจะช่วยลดคำสั่งการแสดงผลเหลือเพียง 5-10 รายการ ซึ่งเป็นการประหยัด GPU ได้อย่างมาก และคุณสามารถนำทรัพยากรที่ประหยัดได้ไปใช้กับตรรกะของเกมเพลย์หรือการคำนวณทางฟิสิกส์ได้
การคัดกรองการบดบังของ GPU
การคัดกรองการบดบังของ GPU จะใช้ GPU แทน CPU เพื่อระบุและข้ามการแสดงผลออบเจ็กต์ที่ซ่อนอยู่ ฟีเจอร์นี้จะตรวจหาโดยอัตโนมัติว่ามีอะไรถูกบดบัง (ซ่อนอยู่) อยู่เบื้องหลังออบเจ็กต์อื่นๆ เพื่อไม่ให้ GPU เสียทรัพยากรไปกับสิ่งต่างๆ ที่ผู้ใช้มองไม่เห็น
ฟีเจอร์นี้มีประสิทธิภาพเป็นพิเศษในพื้นที่ภายในอาคารที่มีหลายห้อง สภาพแวดล้อมที่หนาแน่น หรือฉากสถาปัตยกรรมที่ผนัง พื้น และออบเจ็กต์ต่างๆ บดบังมุมมองโดยธรรมชาติ
ตัวอย่างเช่น สมมติว่าคุณกำลังสร้างประสบการณ์การใช้งานบ้านที่มีหลายห้อง เมื่อผู้ใช้อยู่ในห้องนั่งเล่น ทำไมต้องเสียรอบ GPU ไปกับการแสดงผลห้องครัวที่มีรายละเอียดครบถ้วนซึ่งซ่อนอยู่หลังผนัง การคัดกรองการบดบังของ GPU จะข้ามการแสดงผลออบเจ็กต์ที่ซ่อนอยู่โดยอัตโนมัติ ทำให้คุณมีงบประมาณด้านประสิทธิภาพมากขึ้นสำหรับสิ่งที่มองเห็นได้จริง
การตรวจสอบประสิทธิภาพ
การใช้ฟีเจอร์เหล่านี้เพียงอย่างเดียวไม่เพียงพอ คุณต้องวัดผลการเพิ่มประสิทธิภาพด้วย เพื่อให้สามารถระบุผลลัพธ์เป็นตัวเลขและยืนยันว่าการเปลี่ยนแปลงของคุณได้ผลจริง
Performance Metrics API
Performance Metrics API ช่วยให้คุณตรวจสอบการใช้งานหน่วยความจำ ประสิทธิภาพของ CPU และประสิทธิภาพของ GPU ของแอปแบบเรียลไทม์ API นี้ให้ข้อมูลที่ครอบคลุมจากเลเยอร์ Compositor และเลเยอร์รันไทม์ เพื่อให้คุณเห็นสิ่งที่เกิดขึ้นในแอปพลิเคชันได้อย่างชัดเจน
สร้างเกณฑ์มาตรฐานก่อนทำการเปลี่ยนแปลง ใช้การเพิ่มประสิทธิภาพ วัดผลลัพธ์ และทำซ้ำ แนวทางที่อิงตามข้อมูลนี้จะช่วยให้คุณ มั่นใจ ว่ากำลังปรับปรุงประสิทธิภาพจริง ไม่ใช่แค่คาดเดา
ก่อนเปิดใช้การแสดงผลแบบ Foveated เวลาที่ใช้ในการแสดงผลเฟรมของ GPU อาจอยู่ที่ 13 มิลลิวินาที ซึ่งเกินงบประมาณ 11 มิลลิวินาที เปิดใช้การแสดงผลแบบ Foveated แล้ววัดผลอีกครั้ง คุณอาจเห็นเวลาเฟรมลดลงเหลือ 9 มิลลิวินาที ซึ่งเป็นพื้นที่ว่าง 4 มิลลิวินาทีที่คุณได้รับเพื่อเพิ่มรายละเอียดลงในฉาก ปรับปรุงคุณภาพของภาพในส่วนอื่นๆ หรือเพียงแค่ทำให้ประสิทธิภาพราบรื่นขึ้นในเนื้อหาที่หลากหลายมากขึ้น
หากไม่มีเมตริกเหล่านี้ คุณจะเพิ่มประสิทธิภาพแบบไม่เห็นภาพ Performance Metrics API จะบอกความจริงเกี่ยวกับสิ่งที่ช่วยให้กรณีการใช้งานเฉพาะของคุณดีขึ้น
Frame Debugger
Frame Debugger เป็นเครื่องมือในตัวของ Unity ที่ช่วยให้คุณเข้าใจวิธีแสดงผลฉากทีละเฟรมได้อย่างชัดเจน เครื่องมือนี้จะแสดงลำดับการเรียกการแสดงผลและช่วยให้คุณดูทีละขั้นตอนเพื่อยืนยันว่าการเพิ่มประสิทธิภาพได้ผลอย่างถูกต้อง
ต้องการยืนยันว่า SRP Batcher ทำงานอยู่หรือไม่ ให้มองหารายการ "RenderLoopNewBatcher" ใน Frame Debugger ต้องการตรวจสอบว่า GPU Resident Drawer จัดกลุ่มอย่างถูกต้องหรือไม่ ให้มองหารายการ "Hybrid Batch Group" การยืนยันด้วยภาพเหล่านี้จะช่วยให้คุณเข้าใจว่าการตั้งค่าการเพิ่มประสิทธิภาพได้ผลจริงหรือไม่
ดูคำสั่งการแสดงผล 50 รายการแรกของฉากทีละขั้นตอน หากเห็นว่ามีการแสดงผลออบเจ็กต์ที่คล้ายกันทีละรายการแทนที่จะจัดกลุ่ม แสดงว่าการสร้างอินสแตนซ์หรือการจัดกลุ่มทำงานไม่ถูกต้อง Frame Debugger จะแสดงปัญหาเหล่านี้ให้เห็นทันทีเพื่อให้คุณแก้ไขได้
การเพิ่มประสิทธิภาพเพิ่มเติม
นอกจากการเพิ่มประสิทธิภาพที่เราได้กล่าวถึงข้างต้นแล้ว คู่มือด้านประสิทธิภาพฉบับเต็มของเรายังครอบคลุมการเพิ่มประสิทธิภาพอื่นๆ อีกด้วย สรุปสั้นๆ มีดังนี้
- การตั้งค่า URP: ปิดใช้ HDR และ Post Processing สำหรับ XR บนมือถือ ฟีเจอร์เหล่านี้มีผลกระทบต่อภาพน้อยมากเมื่อเทียบกับค่าใช้จ่ายด้านประสิทธิภาพในฮาร์ดแวร์มือถือ ดังนั้นคุณจะได้รับประสิทธิภาพที่เพิ่มขึ้นอย่างเห็นได้ชัดโดยที่ภาพแทบไม่แตกต่างกัน
- SRP Batcher: ลดค่าใช้จ่ายของ CPU สำหรับฉากที่มีวัสดุจำนวนมากซึ่งใช้ Shader Variant เดียวกัน การลดการเปลี่ยนแปลงสถานะการแสดงผลระหว่างการเรียกการแสดงผลจะช่วยลดเวลาที่ CPU ใช้ในการแสดงผลได้อย่างมาก
- อัตราการรีเฟรชของจอแสดงผล: ปรับแบบไดนามิกระหว่าง 72 FPS และ 90 FPS ตามความซับซ้อนของฉาก ลดอัตราเฟรมระหว่างลำดับที่ซับซ้อนเพื่อรักษาความเสถียร แล้วเพิ่มอัตราเฟรมในช่วงเวลาที่ง่ายขึ้นเพื่อการโต้ตอบที่ราบรื่นเป็นพิเศษ
- เท็กซ์เจอร์ความลึก/ทึบแสง: ปิดใช้เท็กซ์เจอร์เหล่านี้ เว้นแต่จะจำเป็นสำหรับเอฟเฟกต์ Shader เท็กซ์เจอร์เหล่านี้ทำให้เกิดการดำเนินการคัดลอก GPU ที่ไม่จำเป็น ซึ่งทำให้เสียประสิทธิภาพโดยไม่ให้ประโยชน์แก่แอปพลิเคชันส่วนใหญ่
- URP Render Scale: การตั้งค่านี้ช่วยให้คุณแสดงผลด้วยความละเอียดที่ลดลงเพื่อเพิ่มประสิทธิภาพ หรือเพิ่มขนาดการแสดงผลเพื่อปรับปรุงคุณภาพของภาพ
ดูวิธีการทีละขั้นตอนสำหรับการเพิ่มประสิทธิภาพเหล่านี้และอื่นๆ ได้ที่คู่มือด้านประสิทธิภาพของ Unity ฉบับสมบูรณ์สำหรับ Android XR
บทสรุป
ประสิทธิภาพของแอป XR ไม่ใช่เพียงช่องทำเครื่องหมายทางเทคนิค แต่เป็นความแตกต่างระหว่างประสบการณ์การใช้งานที่สะดวกสบายและน่าดึงดูดกับประสบการณ์การใช้งานที่ทำให้ผู้ใช้รู้สึกไม่สบาย การเพิ่มประสิทธิภาพที่เราได้กล่าวถึงเป็นชุดเครื่องมือที่จะช่วยให้คุณทำตามเป้าหมายอัตราเฟรมที่สำคัญในอุปกรณ์ XR รุ่นใหม่ล่าสุดได้
แผนงานของคุณมีดังนี้
- เริ่มต้นด้วยการแสดงผลแบบ Foveated และการลดขนาดตัวอย่างของ Vulkan ฟีเจอร์เฉพาะสำหรับ XR เหล่านี้ช่วยประหยัด GPU ได้ทันทีและเห็นได้ชัด
- เพิ่ม GPU Resident Drawer และการคัดกรองการบดบังหากคุณมีฉากที่ซับซ้อนซึ่งมีรูปทรงเรขาคณิตซ้ำๆ หรือพื้นที่ภายในอาคาร
- ตรวจสอบทุกอย่างด้วย Performance Metrics API เพื่อให้แน่ใจว่าการเปลี่ยนแปลงของคุณได้ผลจริง
- สำรวจการเพิ่มประสิทธิภาพ URP เพิ่มเติมเพื่อเพิ่มพื้นที่ว่างด้านประสิทธิภาพ
การวัดผลอย่างต่อเนื่องและการทำซ้ำเป็นสิ่งสำคัญ การเพิ่มประสิทธิภาพบางอย่างอาจไม่ได้เป็นประโยชน์ต่อทุกโปรเจ็กต์เท่ากัน ดังนั้นให้ใช้ Performance Metrics API เพื่อให้ได้แนวคิดที่ชัดเจนเกี่ยวกับสิ่งที่ช่วยให้กรณีการใช้งานเฉพาะของคุณดีขึ้น
ขั้นตอนถัดไป: การพัฒนาทักษะ
พร้อมที่จะเจาะลึกแล้วหรือยัง ลองดูแหล่งข้อมูลเหล่านี้
- คู่มือด้านประสิทธิภาพของ Unity สำหรับ Android XR - คำแนะนำทีละขั้นตอนที่สมบูรณ์สำหรับการใช้งานฟีเจอร์ทั้งหมดที่กล่าวถึงในที่นี้
- เริ่มต้นใช้งาน Unity และ Android XR - ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์และ เริ่มสร้าง
- เอกสารประกอบสำหรับนักพัฒนาแอป Android XR - คู่มือที่ครอบคลุมสำหรับฟีเจอร์ทั้งหมดของ Android XR features
อ่านต่อ
-
ข่าวสารเกี่ยวกับผลิตภัณฑ์
หากคุณเป็นนักพัฒนาแอป Android ที่ต้องการใช้ฟีเจอร์ AI ที่ล้ำสมัยในแอป เราได้เปิดตัวการอัปเดตใหม่ที่มีประสิทธิภาพเมื่อเร็วๆ นี้
Thomas Ezan • ใช้เวลาอ่าน 3 นาที
-
ข่าวสารเกี่ยวกับผลิตภัณฑ์
Android 17 มาถึงเวอร์ชันเบต้า 4 แล้ว ซึ่งเป็นเวอร์ชันเบต้าสุดท้ายที่กำหนดไว้ในรอบการเปิดตัวนี้ และเป็นเป้าหมายสำคัญสำหรับความเข้ากันได้ของแอปและความเสถียรของแพลตฟอร์ม
Daniel Galpin • ใช้เวลาอ่าน 4 นาที
-
ข่าวสารเกี่ยวกับผลิตภัณฑ์
เรามุ่งมั่นที่จะทำให้ Google Play เป็นแพลตฟอร์มที่ปลอดภัยและเชื่อถือได้มากที่สุด วันนี้เราจะประกาศการอัปเดตนโยบายชุดใหม่และฟีเจอร์การโอนบัญชีเพื่อเพิ่มความเป็นส่วนตัวของผู้ใช้และปกป้องธุรกิจของคุณจากการฉ้อโกง
Bennet Manuel • ใช้เวลาอ่าน 3 นาที
รับข่าวสาร
รับข้อมูลเชิงลึกด้านการพัฒนา Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณ ทุกสัปดาห์