Samsung Galaxy XR มาแล้ว ขับเคลื่อนโดย Android XR บล็อกโพสต์นี้เป็นส่วนหนึ่งของ สัปดาห์แนะนำ Android XR ซึ่งเราจะจัดหาแหล่งข้อมูลต่างๆ ไม่ว่าจะเป็นบล็อกโพสต์ วิดีโอ โค้ดตัวอย่าง และอื่นๆ อีกมากมายที่ออกแบบมาเพื่อช่วยให้คุณได้เรียนรู้ สร้าง และเตรียมแอปสำหรับ Android XR
สัปดาห์นี้ Samsung ได้เปิดตัว Galaxy XR ซึ่งสร้างขึ้นโดยความร่วมมือกับ Google และ Qualcomm นี่เป็นช่วงเวลาที่น่าตื่นเต้นสำหรับนักพัฒนาแอป และเราต้องการช่วยให้คุณได้รับประสิทธิภาพที่ดีที่สุดจากแอป XR
แม้ว่าประสิทธิภาพที่ไม่ดีในเกมและแอปบนอุปกรณ์ที่ไม่ใช่ XR อาจทำให้ผู้ใช้หงุดหงิด แต่ในโลกของ XR ประสิทธิภาพไม่ใช่แค่ตัวเลือก แต่เป็นพื้นฐานสู่ความสำเร็จของแอป หากคุณพลาดเป้าหมายอัตราเฟรมใน XR อาจทำให้เกิดปัญหาที่ร้ายแรงกว่ามาก เช่น อาการเมารถเมาเรือ
ในคู่มือนี้ เราจะอธิบายการเพิ่มประสิทธิภาพที่สำคัญซึ่งคุณต้องทำความเข้าใจสำหรับการพัฒนา Android XR คุณจะได้เรียนรู้ว่าฟีเจอร์ใดที่ให้ประสิทธิภาพสูงสุด เมื่อใดควรใช้ฟีเจอร์เหล่านั้น และฟีเจอร์ต่างๆ ทำงานร่วมกันอย่างไรเพื่อช่วยให้คุณบรรลุเป้าหมายอัตราเฟรม
สิ่งที่เรามุ่งมั่นที่จะทำมีดังนี้
- ขั้นต่ำ: 72 FPS (ส่วนหนึ่งของหลักเกณฑ์ด้านคุณภาพการเล่น)
- ไม่บังคับ: 90 FPS โดยมีงบประมาณ 11 มิลลิวินาทีต่อเฟรม
ดูข้อมูลเพิ่มเติมเกี่ยวกับความสำคัญของการรักษาอัตราเฟรมที่สูงเช่นนี้ได้ที่หลักเกณฑ์ด้านประสิทธิภาพ
ฟีเจอร์ด้านประสิทธิภาพเฉพาะ XR
เราจะเริ่มต้นด้วยการพูดถึงฟีเจอร์ด้านประสิทธิภาพ 2 อย่างที่เฉพาะเจาะจงสำหรับ XR ได้แก่ Foveated Rendering และ Vulkan Subsampling
การแสดงผลแบบโฟเวต
การแสดงผลแบบโฟเวตเป็นการเพิ่มประสิทธิภาพที่มี 2 โหมด โหมดแรกคือโหมดคงที่ซึ่งแสดงผลตรงกลางหน้าจอที่ความละเอียดสูงขึ้น และค่อยๆ ลดความละเอียดลงเมื่อคุณมองออกไปไกลขึ้น
ส่วนโหมดที่ 2 คือโหมดติดตามสายตา ซึ่งจะแสดงพื้นที่ที่คุณกำลังมองอย่างละเอียด ในขณะที่ลดคุณภาพที่แสดงในส่วนรอบนอก ซึ่งเลียนแบบการมองเห็นของมนุษย์ที่มองเห็นรายละเอียดที่ชัดเจนเฉพาะในพื้นที่ที่เราโฟกัส
การแสดงผลแบบโฟเวตจะลดภาระงานของ GPU ลงอย่างมากโดยไม่ลดคุณภาพของรูปภาพที่ผู้ใช้รับรู้ ข้อดีของการเรนเดอร์แบบโฟเวตคือผู้ใช้จะไม่สังเกตเห็นคุณภาพที่ลดลงในภาพรอบข้าง แต่ GPU จะสังเกตเห็นประสิทธิภาพที่เพิ่มขึ้นอย่างแน่นอน
ลองนึกภาพว่าคุณกำลังสร้างประสบการณ์การใช้งานพิพิธภัณฑ์ที่มีสิ่งประดิษฐ์ 3 มิติที่ซับซ้อน หากไม่มีการเรนเดอร์แบบโฟเวต คุณจะพยายามรักษา 90 FPS เพื่อเรนเดอร์ทุกอย่างในขอบเขตการมองเห็นได้ยาก แต่การเรนเดอร์แบบโฟเวตจะช่วยให้คุณคงรายละเอียดที่มีหลายเหลี่ยมเหล่านั้นไว้ในจุดที่ผู้ใช้กำลังมองอยู่ได้ แต่สภาพแวดล้อมเบื้องหลังจะเรนเดอร์ที่คุณภาพต่ำกว่า ผู้ใช้จะไม่สังเกตเห็นความแตกต่าง แต่คุณจะมีพื้นที่ว่างในการเพิ่มรายละเอียดลงในฉากมากขึ้น
การสุ่มย่อย Vulkan
การสุ่มตัวอย่างย่อยของ Vulkan เป็นเพื่อนที่ดีที่สุดของการเรนเดอร์แบบโฟเวต ในขณะที่การเรนเดอร์แบบโฟเวตจะกำหนดสิ่งที่ต้องเรนเดอร์ในระดับคุณภาพต่างๆ การสุ่มตัวอย่างย่อยของ Vulkan จะจัดการวิธีเรนเดอร์ระดับคุณภาพต่างๆ อย่างมีประสิทธิภาพโดยใช้แผนที่ความหนาแน่นของเศษ
เมื่อใช้ร่วมกับการเรนเดอร์แบบโฟเวต Vulkan Subsampling จะช่วยเพิ่มประสิทธิภาพได้อีก 0.5 มิลลิวินาที นอกจากนี้ยังช่วยลดรอยหยักในภาพรอบข้าง ทำให้ภาพโดยรวมดูสะอาดตาขึ้น
ตัวอย่างเช่น ในเกมจำลองการบินที่ผู้ใช้มุ่งเน้นไปที่เครื่องมือและการควบคุม การรวมการแสดงผลแบบโฟเวตเข้ากับการสุ่มตัวอย่างย่อยของ Vulkan หมายความว่าการควบคุมโดยละเอียดจะแสดงผลอย่างคมชัด แต่โครงสร้างห้องนักบินรอบนอกจะใช้ทรัพยากรน้อยลง เวลาที่เพิ่มขึ้น 0.5 มิลลิวินาทีอาจดูเหมือนไม่มาก แต่ก็เป็นความแตกต่างระหว่างการมีพื้นที่สำหรับองค์ประกอบแบบอินเทอร์แอกทีฟเพิ่มเติมหรือการกระตุกของเฟรมในช่วงเวลาที่เข้มข้น
ฟีเจอร์ GPU สำหรับฉากที่ซับซ้อน
นอกจาก Foveated Rendering และ Vulkan Subsampling แล้ว ยังมีฟีเจอร์ GPU บางอย่างที่ช่วยลดภาระที่ไม่จำเป็นผ่านการสร้างอินสแตนซ์และการคัดกรองอัจฉริยะ ซึ่งมีประสิทธิภาพเป็นพิเศษสำหรับฉากที่ซับซ้อนซึ่งมีรูปทรงซ้ำๆ หรือการบดบังที่สำคัญ
GPU Resident Drawer
GPU Resident Drawer จะใช้การสร้างอินสแตนซ์ GPU โดยอัตโนมัติเพื่อลดคำสั่งประมวลผลและเพิ่มเวลาการประมวลผลของ CPU ดังนั้นแทนที่ CPU จะบอก GPU เกี่ยวกับออบเจ็กต์แต่ละรายการแยกกัน GPU จะจัดกลุ่มออบเจ็กต์ที่คล้ายกันไว้ด้วยกัน
ฟีเจอร์นี้มีประสิทธิภาพมากที่สุดสำหรับฉากขนาดใหญ่ที่มีตาข่ายซ้ำๆ เช่น ต้นไม้ในป่า เฟอร์นิเจอร์ในอาคารสำนักงาน หรืออุปกรณ์ประกอบฉากที่กระจายอยู่ทั่วสภาพแวดล้อม
ลองนึกภาพฉากป่าที่มีต้นไม้ 200 ต้นโดยใช้ตาข่ายฐานเดียวกัน หากไม่มี GPU Resident Drawer คุณจะมีคำสั่งวาด 200 รายการที่ใช้ GPU ซึ่งจะทำให้ CPU ว่าง เมื่อเปิดใช้ฟีเจอร์นี้ GPU จะสร้างอินสแตนซ์ของต้นไม้เหล่านั้นอย่างชาญฉลาด ซึ่งจะช่วยลดจำนวนการเรียกวาดเหลือเพียง 5-10 ครั้ง ซึ่งเป็นการประหยัด GPU ได้อย่างมาก จากนั้นคุณสามารถนำไปใช้กับตรรกะการเล่นเกมหรือการคำนวณฟิสิกส์ได้
การคัดกรองวัตถุที่บดบังด้วย GPU
การคัดกรองการบดบังด้วย GPU จะใช้ GPU แทน CPU เพื่อระบุและข้ามการแสดงผลออบเจ็กต์ที่ซ่อนอยู่ โดยจะตรวจหาวัตถุที่ถูกบดบัง (ซ่อนอยู่) ด้านหลังวัตถุอื่นๆ โดยอัตโนมัติ เพื่อไม่ให้ GPU ทำงานกับสิ่งที่ผู้ใช้มองไม่เห็น
ฟีเจอร์นี้มีประสิทธิภาพอย่างยิ่งในพื้นที่ภายในที่มีหลายห้อง สภาพแวดล้อมที่หนาแน่น หรือฉากสถาปัตยกรรมที่ผนัง พื้น และวัตถุต่างๆ บดบังมุมมองโดยธรรมชาติ
ตัวอย่างเช่น สมมติว่าคุณกำลังสร้างประสบการณ์บ้านหลายห้อง เมื่อผู้ใช้อยู่ในห้องนั่งเล่น เหตุใดจึงต้องเสียรอบ GPU ในการแสดงผลห้องครัวที่มีรายละเอียดครบถ้วนซึ่งซ่อนอยู่หลังกำแพง GPU Occlusion Culling จะข้ามการแสดงผลออบเจ็กต์ที่ซ่อนอยู่โดยอัตโนมัติ ทำให้คุณมีงบประมาณด้านประสิทธิภาพมากขึ้นสำหรับสิ่งที่มองเห็นได้จริง
การตรวจสอบประสิทธิภาพ
การใช้ฟีเจอร์เหล่านี้เพียงอย่างเดียวไม่เพียงพอ นอกจากนี้ คุณยังต้องวัดผลการเพิ่มประสิทธิภาพเพื่อให้สามารถวัดผลลัพธ์และยืนยันว่าการเปลี่ยนแปลงได้ผลจริง
Performance Metrics API
Performance Metrics API ช่วยให้คุณตรวจสอบการใช้หน่วยความจำของแอป ประสิทธิภาพ CPU และประสิทธิภาพ GPU แบบเรียลไทม์ได้ โดยจะให้ข้อมูลที่ครอบคลุมจากเลเยอร์ Compositor และเลเยอร์รันไทม์ เพื่อให้คุณเห็นสิ่งที่เกิดขึ้นในแอปพลิเคชันได้อย่างชัดเจน
กำหนดเกณฑ์พื้นฐานก่อนทำการเปลี่ยนแปลง ใช้การเพิ่มประสิทธิภาพ วัดผลลัพธ์ และทำซ้ำ แนวทางที่อิงตามข้อมูลนี้ช่วยให้คุณทราบว่าคุณกำลังปรับปรุงประสิทธิภาพจริงๆ ไม่ใช่แค่คาดเดา
ก่อนเปิดใช้การเรนเดอร์แบบโฟเวต เวลาที่ใช้ในการแสดงผลเฟรมของ GPU อาจอยู่ที่ 13 มิลลิวินาที ซึ่งเกินงบประมาณ 11 มิลลิวินาที เปิดใช้การเรนเดอร์แบบโฟเวต วัดอีกครั้ง และหวังว่าคุณจะเห็นว่าเวลาที่ใช้ในการแสดงผลเฟรมลดลงเหลือ 9 มิลลิวินาที นั่นคือส่วนต่าง 4 มิลลิวินาทีที่คุณได้รับเพื่อเพิ่มรายละเอียดให้กับฉาก ปรับปรุงคุณภาพภาพในส่วนอื่นๆ หรือเพียงแค่ให้มั่นใจว่าประสิทธิภาพจะราบรื่นยิ่งขึ้นในเนื้อหาที่หลากหลายมากขึ้น
หากไม่มีเมตริกเหล่านี้ คุณก็เพิ่มประสิทธิภาพโดยไม่รู้ตัว Metrics API จะบอกความจริงเกี่ยวกับสิ่งที่ช่วยกรณีการใช้งานเฉพาะของคุณจริงๆ
โปรแกรมแก้ไขข้อบกพร่องของเฟรม
Frame Debugger เป็นเครื่องมือในตัวของ Unity ที่ช่วยให้คุณเข้าใจได้อย่างแน่ชัดว่าฉากได้รับการเรนเดอร์อย่างไรทีละเฟรม โดยจะแสดงลําดับการเรียกวาดและให้คุณดูทีละรายการเพื่อยืนยันว่าการเพิ่มประสิทธิภาพทํางานได้อย่างถูกต้อง
หากต้องการยืนยันว่า SRP Batcher ทำงานอยู่ ให้มองหารายการ "RenderLoopNewBatcher" ใน Frame Debugger หากต้องการตรวจสอบว่า GPU Resident Drawer จัดกลุ่มอย่างถูกต้องหรือไม่ ให้มองหารายการ "Hybrid Batch Group" การยืนยันด้วยภาพเหล่านี้จะช่วยให้คุณเข้าใจว่าการตั้งค่าการเพิ่มประสิทธิภาพมีผลจริงหรือไม่
ดู Draw Call 50 รายการแรกของฉาก หากเห็นว่ามีการวาดออบเจ็กต์ที่คล้ายกันทีละรายการแทนที่จะวาดเป็นกลุ่ม แสดงว่าการสร้างอินสแตนซ์หรือการจัดกลุ่มทำงานไม่ถูกต้อง Frame Debugger จะแสดงปัญหาเหล่านี้ทันทีเพื่อให้คุณแก้ไขได้
การเพิ่มประสิทธิภาพเพิ่มเติม
นอกจากการเพิ่มประสิทธิภาพที่เรากล่าวถึงข้างต้นแล้ว คู่มือประสิทธิภาพฉบับเต็มยังครอบคลุมการเพิ่มประสิทธิภาพอื่นๆ อีกด้วย เราจึงได้รวบรวมข้อมูลสรุปสั้นๆ มาดังนี้
- การตั้งค่า URP: ปิดใช้ HDR และการประมวลผลภายหลังสำหรับ XR บนอุปกรณ์เคลื่อนที่ ฟีเจอร์เหล่านี้มีผลกระทบต่อภาพน้อยที่สุดเมื่อเทียบกับต้นทุนด้านประสิทธิภาพในฮาร์ดแวร์ของอุปกรณ์เคลื่อนที่ คุณจึงจะได้รับประสิทธิภาพที่วัดผลได้โดยมีความแตกต่างด้านภาพที่แทบมองไม่ออก
- SRP Batcher: ลดค่าใช้จ่ายของ CPU สำหรับฉากที่มีวัสดุจำนวนมากซึ่งใช้ตัวแปร Shader เดียวกัน การลดการเปลี่ยนแปลงสถานะการแสดงผลระหว่างการเรียกการวาดจะช่วยลดเวลา CPU ที่ใช้ในการแสดงผลได้อย่างมาก
- อัตราการรีเฟรชจอแสดงผล: ปรับแบบไดนามิกระหว่าง 72 FPS กับ 90 FPS ตามความซับซ้อนของฉาก ลดอัตราเฟรมในฉากที่ซับซ้อนเพื่อรักษาความเสถียร แล้วเพิ่มอัตราเฟรมในฉากที่เรียบง่ายเพื่อการโต้ตอบที่ราบรื่นเป็นพิเศษ
- เท็กซ์เจอร์ความลึก/เท็กซ์เจอร์ทึบแสง: ปิดใช้เท็กซ์เจอร์เหล่านี้เว้นแต่จะจำเป็นสำหรับเอฟเฟกต์ Shader โดยเฉพาะ เนื่องจากจะทำให้เกิดการคัดลอก GPU ที่ไม่จำเป็น ซึ่งทำให้ประสิทธิภาพลดลงโดยไม่ก่อให้เกิดประโยชน์สำหรับแอปพลิเคชันส่วนใหญ่
- สเกลการแสดงผล URP: การตั้งค่านี้ช่วยให้คุณแสดงผลที่ความละเอียดที่ลดลงเพื่อเพิ่มประสิทธิภาพ หรือเพิ่มสเกลการแสดงผลเพื่อปรับปรุงคุณภาพภาพได้
ดูวิธีการเพิ่มประสิทธิภาพเหล่านี้และอื่นๆ แบบทีละขั้นตอนได้ในคู่มือประสิทธิภาพ Unity สำหรับ Android XR ฉบับสมบูรณ์
บทสรุป
ประสิทธิภาพของแอป XR ไม่ใช่แค่ช่องทำเครื่องหมายทางเทคนิค ความแตกต่างระหว่างประสบการณ์ที่สะดวกสบายและน่าสนใจกับประสบการณ์ที่ทำให้ผู้ใช้รู้สึกไม่สบายใจหรือหงุดหงิด การเพิ่มประสิทธิภาพที่เราได้กล่าวถึงไปแล้วคือชุดเครื่องมือที่จะช่วยให้คุณบรรลุเป้าหมายอัตราเฟรมที่สำคัญในอุปกรณ์ XR รุ่นล่าสุด
นี่คือแผนกลยุทธ์ของคุณ
- เริ่มต้นด้วยการแสดงผลแบบโฟเวตและการสุ่มตัวอย่างย่อยของ Vulkan ฟีเจอร์เฉพาะ XR เหล่านี้ช่วยประหยัด GPU ได้ทันทีและเห็นผลชัดเจน
- เพิ่ม GPU Resident Drawer และ Occlusion Culling หากมีฉากที่ซับซ้อนซึ่งมีรูปทรงซ้ำหรือพื้นที่ภายใน
- ตรวจสอบทุกอย่างด้วย Performance Metrics API เพื่อให้แน่ใจว่าการเปลี่ยนแปลงของคุณช่วยได้จริง
- ดูการเพิ่มประสิทธิภาพ URP เพิ่มเติมเพื่อเพิ่มช่องว่างด้านประสิทธิภาพ
การวัดผลอย่างต่อเนื่องและการทำซ้ำเป็นสิ่งสำคัญ การเพิ่มประสิทธิภาพบางอย่างอาจไม่เป็นประโยชน์ต่อทุกโปรเจ็กต์อย่างเท่าเทียมกัน ดังนั้นให้ใช้ Performance Metrics API เพื่อให้ทราบอย่างชัดเจนว่าสิ่งใดที่ช่วยกรณีการใช้งานของคุณโดยเฉพาะ
ขั้นตอนต่อไป: พัฒนาทักษะของคุณ
พร้อมเจาะลึกแล้วหรือยัง ลองดูแหล่งข้อมูลเหล่านี้
- คำแนะนำด้านประสิทธิภาพของ Unity สำหรับ Android XR - วิธีการติดตั้งใช้งานแบบทีละขั้นตอนที่สมบูรณ์สำหรับฟีเจอร์ทั้งหมดที่กล่าวถึงที่นี่
- เริ่มต้นใช้งาน Unity และ Android XR - ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์และ เริ่มสร้าง
- เอกสารประกอบสำหรับนักพัฒนา Android XR - คำแนะนำที่ครอบคลุมสำหรับฟีเจอร์ทั้งหมดของ Android XR
อ่านต่อ
-
ข่าวสารผลิตภัณฑ์
เรายินดีที่จะประกาศว่า Android XR รองรับ Unreal Engine และ Godot อย่างเป็นทางการแล้ว นอกจากนี้ เรายังเปิดตัวเครื่องมือใหม่ที่ออกแบบมาเพื่อเพิ่มประสิทธิภาพการทำงานและเปิดใช้ความสามารถใหม่ๆ ของ XR ได้แก่ Android XR Engine Hub และ Android XR Interaction Framework
Luke Hopkins, Ryan Bartley • ใช้เวลาอ่าน 4 นาที
-
ข่าวสารผลิตภัณฑ์
ในทุกๆ ปี Google I/O จะมีการประกาศและแหล่งข้อมูลใหม่ๆ ในระบบนิเวศและผลิตภัณฑ์ต่างๆ รวมถึงการพัฒนา Android เมื่อการพัฒนาเปลี่ยนไปใช้เครื่องมือที่ทำงานด้วย AI และมีเอเจนต์คอยช่วยเหลือ เราจึงได้ขยายข้อเสนอเพื่อสนับสนุนคุณได้ดียิ่งขึ้น ไม่ว่าคุณจะเลือกสร้างแอปสำหรับ Android ด้วยวิธีใดก็ตาม
Simona Milanovic • ใช้เวลาอ่าน 2 นาที
-
ข่าวสารผลิตภัณฑ์
ในงาน Google I/O ‘26 เราได้แสดงให้เห็นว่าความก้าวหน้าล่าสุดในระบบนิเวศของ Android จะช่วยยกระดับคุณภาพของแอปไปพร้อมๆ กับการเพิ่มประสิทธิภาพการพัฒนาได้อย่างไร
Ataul Munim • ใช้เวลาอ่าน 3 นาที
รับข่าวสาร
รับข้อมูลเชิงลึกด้านการพัฒนาแอป Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณทุกสัปดาห์