ฉันจะสูญเสียหรือเพิ่มประสิทธิภาพในการทิ้งพิกเซลแม้ว่าฉันจะไม่ใช้การทดสอบเชิงลึกหรือไม่?


22

เมื่อฉันค้นหาคำสั่งยกเลิกครั้งแรกฉันพบผู้เชี่ยวชาญที่บอกว่าใช้การทิ้งจะส่งผลให้ประสิทธิภาพลดลง พวกเขากล่าวว่าการทิ้งพิกเซลจะทำลายความสามารถของ GPU ในการใช้ zBuffer อย่างถูกต้องเพราะ GPU จะต้องเรียกใช้ Fragment shader ก่อนเพื่อให้วัตถุทั้งคู่ตรวจสอบว่ามีการทิ้งเศษชิ้นส่วนที่ใกล้กับกล้องหรือไม่ สำหรับเกม 2D ที่ฉันกำลังทำงานอยู่ฉันได้ปิดการใช้งานทั้งการทดสอบเชิงลึกและการเขียนเชิงลึก ฉันกำลังวาดวัตถุทั้งหมดที่เรียงตามความลึกของพวกเขาและนั่นคือทั้งหมดที่ GPU ไม่จำเป็นต้องทำสิ่งที่แปลกใหม่ ตอนนี้ฉันสงสัยว่ามันยังคงไม่ดีถ้าฉันทิ้งพิกเซลในส่วนของฉัน?

คำตอบ:


20

ฮาร์ดแวร์กราฟิกสามารถทำการคัดแยกชิ้นส่วนตามความลึกก่อนการคำนวณค่าสีของมัน ดังนั้นหากคุณใช้คุณสมบัติใด ๆ ที่จะส่งผลกระทบต่อเช่นdiscardการทดสอบอัลฟาหรือการจัดการgl_FragDepthความสามารถของฮาร์ดแวร์ในการทำการปรับให้เหมาะสมนั้นจะถูกประนีประนอมเนื่องจากความลึกที่แท้จริงของแฟรกเมนต์ไม่สามารถสันนิษฐานได้

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

การปิดใช้งานการทดสอบความลึกทั้งหมดผ่าน API ควรป้องกันไม่ให้การปรับให้เหมาะสมทำงานเช่นกันเนื่องจากอาจทำให้ฉากแสดงผลไม่ถูกต้อง discardในกรณีของคุณแล้วมันไม่ควรสำคัญว่าคุณใช้

ฮาร์ดแวร์ล่าสุดสามารถบังคับใช้การทดสอบ (รวมถึงการทดสอบ stencil ก่อน) โดยใช้layout(early_fragment_tests)- มีข้อมูลเพิ่มเติม (และคำเตือน) ในหน้านี้ที่ฉันลิงก์ในตอนต้นของคำตอบ


3

เช่นเดียวกับคำถามด้านประสิทธิภาพคำตอบที่แม่นยำที่สุดคือลองใช้ฮาร์ดแวร์เป้าหมายของคุณและวัดว่าจะเกิดอะไรขึ้น

ในกรณีของคุณอาจไม่ใช่เรื่องเลวร้ายที่ต้องทำ ในความเป็นจริงมีโอกาสที่จะช่วยประสิทธิภาพโดยการประหยัดแบนด์วิดธ์หน่วยความจำ นอกจากนี้ยังจะเพิ่มคำแนะนำของ Shader อีกด้วยดังนั้นจึงไม่ได้ประโยชน์ด้านประสิทธิภาพเสมอไป

แม้เมื่อใช้บัฟเฟอร์ความลึกประสิทธิภาพการทำงานก็ไม่สำคัญมากนักหากคุณระมัดระวังในการสั่งซื้อสิ่งที่คุณวาด

มีบล็อกโพสต์ที่https://fgiesen.wordpress.com/2011/07/08/a-trip-through-the-graphics-pipeline-2011-part-7/ซึ่งอธิบายในรายละเอียดว่าการทดสอบเชิงลึกในช่วงต้นอาจทำงานอย่างไร ในฮาร์ดแวร์และอาจมีข้อ จำกัด อะไรบ้าง


1
ที่จริงหลังจากการทดสอบฉันคิดว่ามันปลอดภัยที่จะคิดว่าฉันจะไม่สูญเสียหรือได้รับประสิทธิภาพ แต่ฉันกำลังมองหาคำตอบที่ให้คำอธิบายเชิงลึกในสิ่งที่และสาเหตุที่จะเกิดขึ้น
Ali1S232
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.