เรียงลำดับวัตถุก่อนเรนเดอร์


10

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

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

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

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

BTW มีข้อมูลใด ๆ เกี่ยวกับการเปลี่ยนเครื่องแบบและการเรียก glBufferSubData แพงกว่า (หรือน้อยกว่า)


3
คำตอบอย่างรวดเร็วใช่การกระโดดจากการเปลี่ยนเมทริกซ์เป็นการตั้งค่าวัสดุในแต่ละวัตถุนั้นแย่มาก ณ จุดนี้ฉันขอแนะนำให้คุณออกเดินทางด้านข้างเพื่อค้นหาข้อมูลเกี่ยวกับเครื่องมือวัดประสิทธิภาพ OpenGL สำหรับแพลตฟอร์มของคุณก่อนดำเนินการต่อ ด้วยเครื่องมือที่สมบูรณ์แบบคุณสามารถวัดเทคนิคต่าง ๆ ได้อย่างง่ายดายและค้นหาสิ่งที่ดีที่สุดสำหรับความต้องการของโหมดแสดงภาพของคุณ รวมถึงเครื่องมือเหล่านี้จะทำให้คุณมีอาชีพการงานของคุณต่อไปในขณะที่นักแสดงคนนี้ ... ไม่มาก ;-)
Patrick Hughes

@PatrickHughes น่ากลัวขอบคุณฉันมั่นเหมาะจะตรวจสอบเหล่านั้นออก
dreta

คำตอบ:


4

คุณต้องการเรียงลำดับเพื่อจัดกลุ่มวัสดุด้วยกัน หากคุณสามารถคุณยังสามารถใช้การกำหนดรูปแบบทางเรขาคณิต (เช่นถ้าคุณมีหมายเลข X ของวัตถุเดียวกัน)

นอกจากนี้ยังมีค่าในการเรียงลำดับตามความลึกเช่นกัน คุณต้องเรียงลำดับกลับไปด้านหน้าสำหรับวัตถุโปร่งใส (ไม่สนใจเทคนิคขั้นสูงหลายอย่างที่จำเป็นต้องใช้ในสถานการณ์ที่ จำกัด )

นอกจากนี้ยังมีค่าในการเรียงลำดับวัตถุทึบแสงจากด้านหน้าไปด้านหลังเนื่องจากอนุญาตให้ Early-Z ลดค่าใช้จ่ายในส่วนของฉากของคุณได้อย่างมาก


3
การสั่งวัตถุทึบแสง / โปร่งใสนั้นไม่ใช่เรื่องง่ายสำหรับสถานการณ์ที่ซับซ้อน (จนถึงจุดที่เป็นไปไม่ได้หากไม่มีกฎเกณฑ์ที่กำหนดเอง) คุณสามารถจัดกลุ่มตามพื้นผิวเพื่อจุดประสงค์เดียวกันในการลดการโทร gl
Darkwings

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

opengl.org/wiki/Transparency_Sortingนั่นคือสิ่งที่ฉันหมายถึงโดย 'กฎเกณฑ์โดยพลการ' ไม่มีการเรียงลำดับ 'ถูกต้อง' อย่างมีวัตถุประสงค์สำหรับกรณีที่ซับซ้อน เกี่ยวกับ 'การเรียงลำดับ' และ 'การสั่งซื้อ' OP ระบุไว้อย่างชัดเจน 'เรียงลำดับตามวัสดุ' (ไม่คำนึงถึงความโปร่งใส) และฉันหมายถึงเนื้อสัมผัสเดียวกันเนื่องจากทั้งสองเป้าหมายมีผลกระทบต่อประสิทธิภาพการทำงาน
Darkwings

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

ดูความคิดเห็นไม่ได้หมายความว่าฉันพบสิ่งผิดปกติในคำตอบของคุณและฉันไม่เคยพูดว่า 'ไม่มีการเรียงลำดับสามารถช่วยได้' ฉันได้กล่าวว่ามีหลายกรณีที่ไม่มีการแก้ไขที่ถูกต้องตามวัตถุประสงค์ดังนั้นจึงต้องพบวิธีการแก้ปัญหาโดยใช้กฎเกณฑ์โดยพลการ เหล่านั้นเป็น 2 คำสั่งที่แตกต่างอย่างสิ้นเชิง
Darkwings

3

การเรียงลำดับวัตถุด้วยความลึกล้วนมีค่ามากโดยเฉพาะอย่างยิ่งในสถาปัตยกรรมการเรนเดอร์หรือเรียงกระเบื้อง

จัดเรียงของแข็งด้านหน้าไปด้านหลังแผ่นใสจากหลังถึงด้านหน้า

เมื่อเรนเดอร์สิ่งของที่อยู่ใกล้กับกล้องและโซลิดจะถูกเรนเดอร์เป็นอันดับแรกและสิ่งอื่นใดที่ครอบครองพื้นที่เดียวกันจะถูกปฏิเสธโดยการตรวจสอบบัฟเฟอร์ z ก่อนใคร

หากสถาปัตยกรรมกราฟิกมีความแตกต่างของลำดับชั้นหรือความละเอียดต่ำ z-buffer รูปทรงเรขาคณิตอาจถูกกำจัดก่อนที่จะมีการแสดงผลใด ๆ

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