บัฟเฟอร์รูปภาพบน GPU: ประเภทลักษณะและลักษณะ

บัฟเฟอร์รูปภาพบน GPU

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

A GPU สร้างข้อมูลจำนวนมหาศาลต่อวินาทีในรูปแบบของภาพหลายภาพที่ส่งผ่านเรตินาของเราอย่างรวดเร็วจากโทรทัศน์ขนาดของภาพเหล่านี้และข้อมูลที่จัดเก็บและประมวลผลนั้นมีขนาดใหญ่มาก บัฟเฟอร์รูปภาพเนื่องจากการจัดเก็บใน VRAM เป็นสาเหตุหนึ่งที่ต้องใช้หน่วยความจำแบนด์วิธสูง

บัฟเฟอร์ภาพคืออะไร?

Buferes de Imagen

บัฟเฟอร์ภาพเป็นส่วนหนึ่งของ VRAM ที่เก็บข้อมูลของแต่ละพิกเซลบนหน้าจอของเฟรมถัดไปบัฟเฟอร์นี้จะถูกเก็บไว้ใน VRAM และสร้างขึ้นโดย GPU ทุกๆ x มิลลิวินาที

GPU ปัจจุบันทำงานร่วมกับบัฟเฟอร์ภาพอย่างน้อยสองภาพโดยในตัวแรก GPU จะเขียนเฟรมถัดไปที่จะเห็นบนหน้าจอส่วนที่สองคือเฟรมก่อนหน้านี้ที่สร้างขึ้นแล้วซึ่งจะถูกส่งไปยังหน้าจอ

Buferes de Imagen

Backbuffer หรือบัฟเฟอร์ด้านหลังเรียกว่าสิ่งที่สร้างขึ้นโดย GPU และ Frontbuffer หรือบัฟเฟอร์ด้านหน้าคือสิ่งที่อ่านโดยไดรเวอร์การแสดงผลและส่งไปยังเอาต์พุตวิดีโอ ในขณะที่บัฟเฟอร์ด้านหน้าจะเก็บค่าของส่วนประกอบสีแดงสีเขียวและสีน้ำเงินสำหรับแต่ละพิกเซลในบัฟเฟอร์ด้านหลังจะสามารถเก็บองค์ประกอบที่สี่อัลฟาซึ่งเก็บค่าความโปร่งใสหรือกึ่งโปร่งใสของพิกเซล

ไดรเวอร์จอแสดงผลคืออะไร?

ไดรเวอร์การแสดงผลเป็นชิ้นส่วนของฮาร์ดแวร์ที่พบใน GPU ซึ่งมีหน้าที่อ่านบัฟเฟอร์ภาพใน VRAM และแปลงข้อมูลเป็นสัญญาณที่เอาต์พุตวิดีโอไม่ว่าจะเป็นประเภทใดก็สามารถเข้าใจได้

ในระบบเช่น NVIDIA จี-ซิงค์, เอเอ็มดี FreeSync / Adaptive Sync และในทำนองเดียวกันตัวควบคุมการแสดงผลไม่เพียง แต่ส่งข้อมูลไปยังจอภาพหรือโทรทัศน์เท่านั้น แต่ยังควบคุมเมื่อแต่ละเฟรมเริ่มต้นและสิ้นสุด

บัฟเฟอร์รูปภาพและการเรนเดอร์ 3 มิติแบบดั้งเดิม

แม้ว่าหน้าจอของเราจะเป็นแบบ 2 มิติ แต่มีการแสดงฉาก 3 มิติแบบเรียลไทม์มากว่ายี่สิบปีแล้ว ในการทำสิ่งนี้จำเป็นต้องแบ่งบัฟเฟอร์ด้านหลังออกเป็นสองบัฟเฟอร์ที่แตกต่างกัน:

  • บัฟเฟอร์สี: ที่ซึ่งระบุค่าของสีและส่วนประกอบอัลฟาของแต่ละพิกเซล
  • บัฟเฟอร์ความลึก: ที่ซึ่งค่าความลึกของแต่ละพิกเซลจะชี้

เมื่อแสดงฉาก 3 มิติเราจะพบว่าพิกเซลหลายพิกเซลมีค่าที่แตกต่างกันในบัฟเฟอร์ความลึก แต่อยู่ในตำแหน่งเดียวกันในอีกสองมิติซึ่งเป็นจุดที่พิกเซลส่วนเกินเหล่านั้นจะต้องถูกทิ้งไปเนื่องจากผู้ชมมองไม่เห็นสิ่งนี้ การทิ้งทำได้โดยการเปรียบเทียบตำแหน่งของแต่ละพิกเซลในความลึกบัฟเฟอร์ทิ้งกับพวกเขาที่อยู่ไกลที่สุดจากกล้อง

บัฟเฟอร์ความลึก

บัฟเฟอร์รูปภาพ Z-Buffer

บัฟเฟอร์ความลึกหรือที่รู้จักกันดีในชื่อ Z-Buffer เก็บระยะห่างของแต่ละพิกเซลของฉาก 3 มิติตามมุมมองหรือกล้องซึ่งสามารถสร้างขึ้นได้ในช่วงเวลาหนึ่งในสองช่วงเวลานี้

  • หลังจากขั้นตอนแรสเตอร์และก่อนขั้นตอนการสร้างพื้นผิว
  • หลังจากขั้นตอนพื้นผิว

เนื่องจากขั้นตอนการคำนวณที่หนักหน่วงที่สุดคือ Pixel / Fragment Shader ความจริงของการสร้าง Z-Buffer หลังจากการสร้างพื้นผิวของฉากนั้นเกี่ยวข้องกับการคำนวณค่าสีดังนั้น Pixel หรือ Fragment Shader จำนวนหลายแสนและแม้แต่ล้านพิกเซลจึงไม่สามารถมองเห็น .

Transparencias Ray Tracing

สิ่งที่คู่กันของการทำก่อนพื้นผิวคือการไม่มีค่าของสีและความโปร่งใสช่องอัลฟาเราจะพบว่าพิกเซลหนึ่งพิกเซลหลังจากโปร่งใสอีกอันจะถูกทิ้งไว้ล่วงหน้าทำให้ไม่สามารถมองเห็นได้ในฉากสุดท้าย

เพื่อหลีกเลี่ยงปัญหานี้นักพัฒนามักจะแสดงฉากเป็นสองส่วนส่วนแรกจะไม่แสดงผลวัตถุที่อยู่ด้านหลังวัตถุโปร่งใสหรือกึ่งโปร่งใสในขณะที่ส่วนที่สองแสดงเฉพาะวัตถุเหล่านั้น

การบัฟเฟอร์รูปภาพและการแสดงผลแบบขี้เกียจ

ความแปลกใหม่อย่างหนึ่งที่พบเห็นในช่วงปลายยุค 2000 เมื่อการแสดงผลกราฟิกคือการเรนเดอร์รอการตัดบัญชีหรือ Deferred Rendering ซึ่งประกอบด้วยการเรนเดอร์ฉากแรกที่สร้างชุดของบัฟเฟอร์เพิ่มเติมที่เรียกว่า G-Buffer จากนั้นในขั้นตอนต่อไปจะคำนวณแสงของ ฉาก.

ความจริงที่ว่าต้องการบัฟเฟอร์ภาพหลาย ๆ ภาพจะเพิ่มความต้องการหน่วยความจำให้ทวีคูณดังนั้นจึงต้องใช้หน่วยความจำจำนวนมากสำหรับการจัดเก็บรวมถึงอัตราการเติมข้อมูลจึงมีแบนด์วิดท์ที่สูงขึ้น

luces múltiples

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

เนื่องจากการเรนเดอร์ที่ขี้เกียจทำให้ต้นทุนของจำนวนไฟในฉากเปลี่ยนไปจากเลขชี้กำลังเป็นลอการิทึมซึ่งช่วยลดต้นทุนการคำนวณเมื่อแสดงฉากที่มีแหล่งกำเนิดแสงหลายแหล่ง

ภาพบัฟเฟอร์เป็นแผนที่เงา

แผนที่ Sombras Z-Buffer

เนื่องจากการแรสเตอร์ไม่ดีในการคำนวณแสงทางอ้อมจึงต้องหาเทคนิคต่างๆเพื่อสร้างแผนที่เงาในนั้น

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

ระบบนี้จะหายไปในอีกไม่กี่ปีข้างหน้าเนื่องจากการเพิ่มขึ้นของ Ray Tracing ซึ่งช่วยให้สามารถสร้างเงาแบบเรียลไทม์ได้อย่างแม่นยำมากขึ้นโดยใช้พลังงานในการคำนวณน้อยลงและไม่จำเป็นต้องสร้างแผนที่เงาขนาดใหญ่ใน VRAM