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 มิติที่ซับซ้อน หากไม่มีการเรนเดอร์แบบโฟเวต คุณจะรักษา 90fps ได้ยากเมื่อพยายามเรนเดอร์ทุกอย่างใน "ขอบเขตการมองเห็น" แต่การเรนเดอร์แบบโฟเวตจะช่วยให้คุณคงรายละเอียดที่มีหลายเหลี่ยมเหล่านั้นไว้ในจุดที่ผู้ใช้มอง แต่สภาพแวดล้อมเบื้องหลังจะเรนเดอร์ที่คุณภาพต่ำกว่า ผู้ใช้จะไม่สังเกตเห็นความแตกต่าง แต่คุณจะมีพื้นที่ว่างในการเพิ่มรายละเอียดลงในฉาก
การสุ่มย่อย Vulkan
การสุ่มตัวอย่างย่อยของ Vulkan คือเพื่อนซี้ของการเรนเดอร์แบบโฟเวต ในขณะที่การเรนเดอร์แบบโฟเวตจะกำหนดสิ่งที่ต้องเรนเดอร์ในระดับคุณภาพต่างๆ Vulkan Subsampling จะจัดการวิธีเรนเดอร์ระดับคุณภาพต่างๆ อย่างมีประสิทธิภาพโดยใช้แผนที่ความหนาแน่นของ Fragment
เมื่อใช้ร่วมกับการเรนเดอร์แบบโฟเวต Vulkan Subsampling จะช่วยเพิ่มประสิทธิภาพให้คุณได้อีก 0.5 มิลลิวินาที นอกจากนี้ยังช่วยลดรอยหยักในภาพรอบข้าง ทำให้ภาพโดยรวมดูสะอาดตาขึ้น
ตัวอย่างเช่น ในเกมจำลองการบินที่ผู้ใช้มุ่งเน้นไปที่เครื่องมือและการควบคุม การรวมการเรนเดอร์แบบโฟเวตเข้ากับการสุ่มตัวอย่างย่อยของ Vulkan จะทำให้การควบคุมแบบละเอียดเรนเดอร์ได้อย่างคมชัด แต่โครงสร้างห้องนักบินรอบนอกจะใช้ทรัพยากรน้อยลง แม้ว่า 0.5 มิลลิวินาทีที่เพิ่มขึ้นอาจดูเหมือนไม่มากนัก แต่ก็เป็นความแตกต่างระหว่างการมีพื้นที่สำหรับองค์ประกอบแบบอินเทอร์แอกทีฟเพิ่มเติมหรือการดรอปเฟรมในช่วงเวลาที่เข้มข้น
ฟีเจอร์ GPU สำหรับฉากที่ซับซ้อน
นอกจากการแสดงผลแบบโฟเวตและการสุ่มตัวอย่างย่อยของ 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 Occlusion Culling จะข้ามการแสดงผลออบเจ็กต์ที่ซ่อนอยู่โดยอัตโนมัติ ซึ่งจะช่วยให้คุณมีงบประมาณด้านประสิทธิภาพมากขึ้นสำหรับสิ่งที่มองเห็นได้จริง
การตรวจสอบประสิทธิภาพ
การใช้ฟีเจอร์เหล่านี้เพียงอย่างเดียวไม่เพียงพอ นอกจากนี้ คุณยังต้องวัดผลการเพิ่มประสิทธิภาพเพื่อให้สามารถวัดผลกระทบและยืนยันว่าการเปลี่ยนแปลงได้ผลจริง
Performance Metrics API
Performance Metrics API ช่วยให้คุณตรวจสอบการใช้งานหน่วยความจำของแอป ประสิทธิภาพของ CPU และประสิทธิภาพของ GPU ได้แบบเรียลไทม์ ซึ่งจะให้ข้อมูลที่ครอบคลุมจากเลเยอร์ Compositor และเลเยอร์รันไทม์ เพื่อให้คุณเห็นสิ่งที่เกิดขึ้นในแอปพลิเคชันได้อย่างชัดเจน
กำหนดเกณฑ์พื้นฐานก่อนทำการเปลี่ยนแปลง ใช้การเพิ่มประสิทธิภาพ วัดผลลัพธ์ และทำซ้ำ แนวทางที่อิงตามข้อมูลนี้ช่วยให้คุณทราบว่าคุณกำลังปรับปรุงประสิทธิภาพจริงๆ ไม่ใช่แค่คาดเดา
ก่อนที่จะเปิดใช้การเรนเดอร์แบบโฟเวต เวลาที่ใช้ในการแสดงผลเฟรม GPU อาจอยู่ที่ 13 มิลลิวินาที ซึ่งเกินงบประมาณ 11 มิลลิวินาที เปิดใช้การเรนเดอร์แบบโฟเวต วัดอีกครั้ง และหวังว่าคุณจะเห็นว่าเวลาในการประมวลผลลดลงเหลือ 9 มิลลิวินาที ซึ่งเป็นส่วนต่าง 4 มิลลิวินาทีที่คุณได้รับเพื่อเพิ่มรายละเอียดให้กับฉาก ปรับปรุงคุณภาพภาพในส่วนอื่นๆ หรือเพียงแค่ทำให้ประสิทธิภาพราบรื่นยิ่งขึ้นในเนื้อหาที่หลากหลาย
หากไม่มีเมตริกเหล่านี้ คุณก็เพิ่มประสิทธิภาพโดยไม่รู้ตัว Metrics API จะบอกความจริงเกี่ยวกับสิ่งที่ช่วยกรณีการใช้งานเฉพาะของคุณจริงๆ
โปรแกรมแก้ไขข้อบกพร่องของเฟรม
Frame Debugger เป็นเครื่องมือในตัวของ Unity ที่ช่วยให้คุณเข้าใจได้อย่างแน่ชัดว่าฉากได้รับการเรนเดอร์อย่างไรทีละเฟรม โดยจะแสดงลําดับการเรียกวาดและให้คุณดูทีละรายการเพื่อยืนยันว่าการเพิ่มประสิทธิภาพทํางานได้อย่างถูกต้อง
หากต้องการยืนยันว่า SRP Batcher ทำงานอยู่ ให้ทำดังนี้ มองหารายการ "RenderLoopNewBatcher" ในเครื่องมือแก้ไขข้อบกพร่องของเฟรม กำลังตรวจสอบว่า GPU Resident Drawer จัดกลุ่มอย่างถูกต้องหรือไม่ มองหารายการ "กลุ่มงานแบบไฮบริด" การยืนยันด้วยภาพเหล่านี้ช่วยให้คุณเข้าใจว่าการตั้งค่าการเพิ่มประสิทธิภาพมีผลจริงหรือไม่
ดูการเรียกใช้การวาด 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 หากมีฉากที่ซับซ้อนซึ่งมีรูปทรงซ้ำหรือพื้นที่ภายใน
- ตรวจสอบทุกอย่างด้วย 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 นาที -
ข่าวสารผลิตภัณฑ์วันนี้เรายินดีเป็นอย่างยิ่งที่จะประกาศการเปิดตัวไลบรารี AndroidX Security State เวอร์ชัน 1.1.0 และ Security State Provider เวอร์ชัน 1.0.0 อย่างเป็นทางการ
Maunik Shah, Alec Garcia, Joseph Yong • อ่าน 4 นาที -
ข่าวสารผลิตภัณฑ์วันนี้เราจะเปิดตัวชุดงานระยะยาว (LHT) ชุดแรก ซึ่งเป็นงานที่มีความซับซ้อนสูงและต้องใช้เวลาหลายวันหรืออาจถึง 1 สัปดาห์จึงจะทำเสร็จ นอกจากนี้ เรายังจะเปิดตัวการประเมินแบบ Agent โดยเริ่มจาก Agent จากผู้ให้บริการโมเดลที่เกี่ยวข้อง
Matthew McCullough • อ่าน 3 นาที
รับข้อมูลเชิงลึกด้านการพัฒนาแอป Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณทุกสัปดาห์