ทดสอบอาการเฟรมข้าม (Frame Skipping)
ตรวจสอบว่าจอและระบบของคุณแสดงเฟรมใหม่ในทุกการรีเฟรชหรือไม่ หรือทิ้งบางเฟรมไปอย่างเงียบๆ การทดสอบจะจับเวลาทุกเฟรมของแอนิเมชันเทียบกับอัตรารีเฟรชที่วัดได้ และแจ้งเตือนช่องว่างใดๆ ที่มีเฟรมหนึ่งหรือมากกว่าหายไป ให้แท็บนี้อยู่ในโฟกัสขณะทำงานเพื่อผลลัพธ์ที่แม่นยำ
ตัวตรวจสอบสดกำลังทำงาน — ให้แท็บนี้อยู่ในโฟกัสเพื่อผลลัพธ์ที่แม่นยำ
แถบจับภาพด้วยกล้อง (ไม่บังคับ)
เครื่องหมายเดินหน้าหนึ่งช่องต่อเฟรมที่เรนเดอร์ ถ่ายภาพหน้าจอด้วยชัตเตอร์เร็วหรือบันทึกแบบสโลว์โมชัน — ขั้นตอนที่หายไปเผยเฟรมที่ถูกทิ้ง รองลงมาจากตัวตรวจจับด้านบน
ตัวตรวจจับทำงานอย่างไร
เบราว์เซอร์เรียก requestAnimationFrame ครั้งเดียวต่อการรีเฟรชหน้าจอ ดังนั้นช่องว่างระหว่าง callback ควรอยู่ใกล้หนึ่งช่วงรีเฟรช — ประมาณ 16.7 ms บนพาแนล 60 Hz หรือ 6.9 ms ที่ 144 Hz การทดสอบจะบันทึกช่องว่างเหล่านั้นและใช้มัธยฐานเพื่อกำหนดช่วงที่คาดหวัง ซึ่งก็ให้ค่าอัตรารีเฟรชจริงของคุณด้วย เมื่อช่องว่างยืดออกประมาณ 1.5 เท่าของช่วงที่คาดหวังหรือมากกว่า แสดงว่ามีอย่างน้อยหนึ่งเฟรมไม่ถูกแสดง การทดสอบจะปัดเศษช่องว่างให้ใกล้เคียงจำนวนช่วงที่เป็นจำนวนเต็มเพื่อประมาณว่ามีเฟรมถูกทิ้งไปกี่เฟรม การหยุดยาวจากการสลับแท็บหรือย่อหน้าต่างจะถูกละเว้นแทนที่จะนับเป็นการข้าม
Frame skipping เทียบกับ stutter และ judder
คำเหล่านี้ทับซ้อนกันแต่อธิบายข้อบกพร่องที่ต่างกัน Frame skipping (เฟรมที่ถูกทิ้ง) คือเมื่อไปป์ไลน์ไม่ส่งภาพใหม่สำหรับรอบการรีเฟรช เฟรมก่อนหน้าจึงแสดงซ้ำสองครั้งและการเคลื่อนไหวดูเหมือนกระโดด Stutter คือการจัดจังหวะเฟรมที่ไม่สม่ำเสมอ — เฟรมมาถึง แต่ในช่วงเวลาที่ไม่สม่ำเสมอ — ซึ่งดูติดขัดแม้ไม่มีเฟรมถูกทิ้งในทางเทคนิค Judder คือความไม่สม่ำเสมออย่างสม่ำเสมอและเป็นจังหวะที่เกิดขึ้นเมื่อเฟรมเรตไม่หารลงตัวกับอัตรารีเฟรช เช่นภาพยนตร์ 24 fps บนหน้าจอ 60 Hz การทดสอบนี้มุ่งเน้นเฟรมที่ถูกทิ้งจริงในระดับการรีเฟรช การรันที่ไม่มีการข้ามอาจยังคงรู้สึกไม่ลื่นไหลอย่างสมบูรณ์แบบหากการจัดจังหวะไม่สม่ำเสมอ
ทำไมจอภาพถึงข้ามเฟรม
- ข้อจำกัดของสายเคเบิลหรือแบนด์วิดท์: อัตรารีเฟรชสูงที่ความละเอียดสูงอาจเกินกว่าที่เวอร์ชันสายเคเบิลหรือพอร์ตจะรองรับ ทำให้การเชื่อมต่อทิ้งเฟรม นี่คือสาเหตุคลาสสิกของการข้ามเฉพาะที่อัตราสูงสุดของจอภาพ
- อัตรารีเฟรชที่โอเวอร์คล็อก: การขับพาแนลเกิน Hz ที่กำหนดมักดูเสถียรแต่จะซ้ำเฟรมอย่างเงียบๆ แทนที่จะแสดงเฟรมใหม่
- ปัญหา GPU, ไดรเวอร์หรืออุณหภูมิ: ไดรเวอร์ที่ล้าสมัย, GPU ที่ทำงานหนักหรือร้อนจัด หรือการประหยัดพลังงานแบบก้าวร้าวอาจทำให้จอภาพไม่ได้รับเฟรมที่เสร็จสมบูรณ์
- โหลดพื้นหลังและการควบคุมเบราว์เซอร์: งานหนักในแท็บหรือแอปอื่น และการที่เบราว์เซอร์ชะลอ requestAnimationFrame สำหรับแท็บที่ไม่ได้โฟกัส ทั้งสองสาเหตุทำให้เกิดช่องว่างที่การทดสอบนี้วัด
สิ่งที่การทดสอบนี้วัดและไม่วัด
นี่คือการทดสอบระดับเบราว์เซอร์ของไปป์ไลน์การนำเสนอ — จอภาพ, สายเคเบิล, เอาต์พุต GPU, ไดรเวอร์ และเบราว์เซอร์ — ไม่ใช่ของเอนจินเกมใดเอนจินหนึ่ง โดยรายงานว่าระบบของคุณส่งเฟรมที่เสร็จสมบูรณ์ให้จอภาพได้น่าเชื่อถือแค่ไหนในขณะที่หน้านี้อยู่ในโฟกัส ไม่สามารถเห็นเฟรมที่เกมเรนเดอร์ภายใน, วัดเวลาแฝงของอินพุต หรือแทนที่ตัวสร้างรูปแบบฮาร์ดแวร์ได้ สำหรับผลลัพธ์ที่น่าเชื่อถือที่สุด ให้เสียบแล็ปท็อป, ปิดแท็บพื้นหลังที่หนัก, ทำให้แท็บนี้อยู่ในโฟกัส และปล่อยให้การรันแบบจับเวลาเต็มรูปแบบทำงานจนจบ แถบการจับภาพทางเลือกด้านล่างใช้สำหรับถ่ายภาพหน้าจอด้วยชัตเตอร์เร็ว ซึ่งสามารถเผยการข้ามที่รู้สึกได้ยาก
