เป็นไปได้ไหมที่อัลฟาจะผสมผสานเป้าหมายการแสดงผลหลายรายการโดยใช้อัลฟาที่ระบุ


9

สมมติว่าฉันมีการแสดงผลเป้าหมาย 0 ถึง N และ RT 0 ที่เกิดขึ้นกับองค์ประกอบที่สี่ในช่องอัลฟาที่ระบุโดยวัสดุหรือหน้ากากหรือบางสิ่งบางอย่าง

เป็นไปได้หรือไม่ที่ผู้แต่งข้อมูลฮาร์ดแวร์ผสมผสานการแสดงผลเป้าหมายที่ 1 ถึง N โดยใช้อัลฟาของเป้าหมายการสร้างภาพแรก

คำตอบ:


5

เท่าที่ฉันทราบไม่มีวิธีใดใน DX หรือ GL ที่จะใช้อัลฟาของ RT 0 อีกครั้งสำหรับการปฏิบัติการผสมทั้งหมด น่าเสียดายที่ดูเหมือนจะไม่ใช่สิ่งที่ฮาร์ดแวร์รองรับ

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

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

ดังนั้นเท่าที่ฉันสามารถบอกได้ตัวเลือกเดียวสำหรับการผสมการแสดงผลเป้าหมายหลายรายการด้วยอัลฟาเดียวกันคือ:

  • เอาท์พุทอัลฟาเดียวกันกับเป้าหมายการแสดงผลทั้งหมด (เสียสละความสามารถในการจัดเก็บค่าอื่น ๆ ไปยังช่องอัลฟาเช่นเดียวกับคุณในการแรเงารอการตัดบัญชีเป็นต้น)
  • ทำซ้ำการเรนเดอร์ในการส่งผ่านแยกสำหรับแต่ละเป้าหมายการเรนเดอร์โดยใช้การผสมสองแหล่ง
  • ใช้ UAVs / image-store load เพื่อประมวลผลการผสมใน pixel shader (ใช้ได้เฉพาะในกรณีที่รูปทรงเรขาคณิตไม่ได้ซ้อนทับกันในพื้นที่หน้าจอเนื่องจากไม่มีการป้องกันสภาพการแข่งขันและอาจช้า)
  • สำหรับฮาร์ดแวร์ที่รองรับมุมมองสั่งซื้อ DX11.3 / DX12 Rasterizer , NV_fragment_shader_interlockหรือINTEL_fragment_shader_ordering (อันหลังยังถูกเปิดเผยโดย AMD GPUs) นี่คือสามชื่อสำหรับสิ่งเดียวกัน: โดยทั่วไปแล้ว "ส่วนสำคัญ" ใน pixel shader ที่ให้คุณอ่าน - แก้ไข - เขียนพื้นผิวอะตอมเกี่ยวกับการเรียกพิกเซล shader อื่น ๆ โดยพื้นฐานแล้วจะช่วยให้สามารถผสมโปรแกรมได้เอง แต่อาจจะช้าและใช้ได้เฉพาะกับฮาร์ดแวร์ล่าสุดเท่านั้น

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

@ jeremyong ขออภัยฉันไม่คิดว่าจะมีการเปลี่ยนแปลงใด ๆ ในการดำเนินการผสมใน DX12 ไม่แน่ใจเกี่ยวกับ Vulkan แต่ฉันจะแปลกใจ ฮาร์ดแวร์การผสมไม่เปลี่ยนแปลง FWIW ในเกมที่ฉันได้ทำเราได้ทำสัญลักษณ์ของ # 3 สำหรับสติ๊กเกอร์ที่เลื่อนออกไปและประมวลผลเรขาคณิตล่วงหน้าเพื่อแยกออกเป็นกลุ่มที่ไม่ทับซ้อนกัน
นาธานรีด

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