คำถามติดแท็ก deferred-rendering

2
เมื่อใช้การเติมแบบใหม่และการเรนเดอร์ที่ทันสมัย
ตัวอย่างเช่นในขณะที่มันเป็น GPU อันดับต้น ๆ ของสายการผลิตนั้น GTX 980 มีอัตราการเติม 72.1 กิกะบิตต่อวินาทีที่สองซึ่งมีการเรนเดอร์กลับไปด้านหน้าและ / หรือการตรวจสอบบัฟเฟอร์ Z ดูเหมือนว่ามีขนาดใหญ่เกือบน่าขัน ที่ความละเอียด 4k เท่าที่โพลิกอนนับไป GPU สมัยใหม่สามารถทำรูปสามเหลี่ยมพื้นผิวได้หลายสิบถึงหลายร้อยล้านชิ้นโดยไม่มีการผูกปมหากคุณแบทช์และ / หรือสร้างอินสแตนซ์ให้ถูกต้อง ด้วยการเรนเดอร์เรนเดอร์ปริมาณของชิ้นส่วนที่ shaders จะทำงานจะสามารถครอบงำได้อย่างรวดเร็ว แต่ด้วยการเรนเดอร์ที่เลื่อนออกไปค่าใช้จ่ายมักจะคงที่มากหรือน้อยขึ้นอยู่กับความละเอียดและเราตั้งนาน เอฟเฟกต์หลังการประมวลผลสามารถทำได้แบบเรียลไทม์ใน 1080p ไม่ว่าจะด้วยวิธีใดปัจจัยที่ จำกัด ในปัจจุบันส่วนใหญ่คือการนับจำนวนการโทรและค่าใช้จ่ายในการแรเงาซึ่งทั้งสองอย่างนั้นยังคงอยู่ในระดับต่ำโดยการเรนเดอร์ที่เหมาะสมและการแบทช์ทางเรขาคณิต รูปหลายเหลี่ยม frustrum ของผลประโยชน์ที่สำคัญใด ๆ ? ค่าใช้จ่าย (เวลา CPU / GPU, เวลาโปรแกรมเมอร์) จะไม่มากไปกว่าประโยชน์ที่ได้รับจำนวนมากใช่ไหม

1
ประสิทธิภาพของการแลกเปลี่ยนระหว่างการเรนเดอร์ไปข้างหน้าและการเรนเดอร์เป็นอย่างไร
การเรนเดอร์ไปข้างหน้าเป็นกระบวนการคำนวณค่าความกระจ่างสำหรับชิ้นส่วนพื้นผิวโดยตรงจากเรขาคณิตอินพุตและข้อมูลแสง การเรนเดอร์แบบแยกเป็นการประมวลผลที่แบ่งออกเป็นสองขั้นตอน: ขั้นแรกให้สร้างบัฟเฟอร์พื้นที่หน้าจอที่มีคุณสมบัติของวัสดุ (บัฟเฟอร์เรขาคณิตหรือ G-buffer) ที่สร้างขึ้นโดย rasterizing เรขาคณิตอินพุตและอันดับที่สองสร้างค่าเรเดียนสำหรับแต่ละพิกเซล บัฟเฟอร์ด้วยข้อมูลแสง การเรนเดอร์ที่ถูกเลื่อนมักจะถูกนำเสนอเป็นการปรับการเรนเดอร์ล่วงหน้า คำอธิบายอย่างหนึ่งคือแสงมีราคาค่อนข้างแพงและหากคุณมีการหักเงินมากเกินไปคุณก็จะเป็นพิกเซลแสงที่จะไม่ปรากฏบนหน้าจอในขณะที่ถ้าคุณเก็บคุณสมบัติของวัสดุไว้ใน G-buffer และแสงหลังจากนั้น จริง ๆ แล้วปรากฏบนหน้าจอ นี่เป็นข้อได้เปรียบของการเลื่อนเวลาออกไปหรือไม่เนื่องจากคุณสามารถทำ pre-pass ในระดับลึกได้และจากนั้นจะทำการส่งเรนเดอร์พาสด้วยการทดสอบความลึกที่ตั้งไว้D3D11_COMPARISON_EQUALหรือGL_EQUALหรือเทียบเท่า การเรนเดอร์ยังมีศักยภาพในการกำหนดตารางเวลาที่ดีขึ้นสำหรับ GPU การแยกวาร์ป / คลื่นขนาดใหญ่หนึ่งอันออกเป็นคลื่นเรขาคณิตที่เล็กกว่าจากนั้นแสงคลื่นที่เล็กลงจะช่วยเพิ่มอัตราการเข้าพักได้ในภายหลัง แต่คุณก็จบลงด้วยการใช้แบนด์วิดท์ที่มากขึ้น (เขียนช่องจำนวนมากไปยัง G-buffer แล้วอ่านกลับในช่วงแสง) แน่นอนว่าข้อมูลเฉพาะที่นี่ขึ้นอยู่กับ GPU ของคุณมาก แต่หลักการทั่วไปคืออะไร? มีข้อควรพิจารณาเกี่ยวกับประสิทธิภาพอื่น ๆ เมื่อตัดสินใจระหว่างการเรนเดอร์ไปข้างหน้าและการเรนเดอร์ที่เลื่อนออกไปหรือไม่? (สมมติว่าเราสามารถใช้ความหลากหลายของแต่ละเทคนิคได้หากจำเป็น: เช่นเราสามารถเปรียบเทียบกระเบื้องไปข้างหน้ากับกระเบื้องที่เลื่อนออกไปเช่นกัน)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.