การแรสเตอร์ขอบที่ใช้ร่วมกันของรูปหลายเหลี่ยมสองรูปที่อยู่ติดกัน

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

ตัวเรนเดอร์สแกนไลน์ทั้งหมด รวมถึงฮาร์ดแวร์กราฟิก จำเป็นต้องจัดการกับปัญหานี้ อย่างไรก็ตาม ตลอดชีวิตของฉัน ฉันไม่สามารถหาอัลกอริธึมที่ชัดเจน เข้าใจง่าย และมีประสิทธิภาพสำหรับสิ่งนี้ได้ แม้ว่าจะผ่าน Google ไปแล้วก็ตาม

ฉันไม่ได้มองหาเพียงทฤษฎีและคำอธิบายที่คลุมเครือของวิธีแก้ปัญหา แต่ยังมองหารหัสเทียมที่เป็นรูปธรรมจริง ๆ ควรเป็นอัลกอริธึมที่ใช้งานจริงในตัวเรนเดอร์และฮาร์ดแวร์กราฟิก ใครช่วยชี้ทิศทางที่ถูกต้องให้ฉันหน่อยได้ไหม?


person Warp    schedule 12.10.2016    source แหล่งที่มา
comment
กฎการแรสเตอร์ของ Google กฎการแรสเตอร์ด้านซ้ายบนโดยเฉพาะ (กฎที่พบบ่อยที่สุด)   -  person samgak    schedule 12.10.2016
comment
โปรดดูคำถามนี้ด้วย   -  person samgak    schedule 12.10.2016
comment
ฉันได้ค้นหาคำนั้นและคำหลักอื่น ๆ ที่คล้ายกันใน Google แล้วและพบว่าไม่มีประโยชน์อะไรเลย ผลลัพธ์ส่วนใหญ่เพียงแต่อธิบายว่า OpenGL/Direct3D ทำอะไร แต่ไม่มีอัลกอริทึมใดๆ ทั้งสิ้น ไม่กี่หน้ามีอัลกอริธึมการเรนเดอร์จริง แต่จนถึงตอนนี้ฉันพบเพียงอัลกอริธึมที่ไม่มีประสิทธิภาพที่ไม่ได้รับการปรับให้เหมาะสมอย่างยิ่ง ซึ่งโดยพื้นฐานแล้วก็แค่ดูทั่วทั้งหน้าจอและดู (โดยใช้การคูณจำนวนมากในแต่ละพิกเซล) ไม่ว่าจะอยู่ภายในสามเหลี่ยมหรือไม่ก็ตาม (ตัวอย่างเช่น ความคิดเห็นในหน้าหนึ่ง: เวอร์ชันนี้ใช้ได้สำหรับการพิสูจน์แนวคิดแต่ยังไม่ได้รับการปรับให้เหมาะสมอย่างมาก ซึ่งค่อนข้างบอกเล่า)   -  person Warp    schedule 12.10.2016
comment
กฎด้านซ้ายบนดูเหมือนจะไม่ชัดเจนสำหรับฉันเสมอ ข้อมูลจำเพาะของ Vulkan ไม่ได้ระบุด้วยซ้ำว่ากฎคืออะไร มีเพียงตัวอย่างใดตัวอย่างหนึ่งเท่านั้นที่ชนะ   -  person Acorn    schedule 03.10.2020
comment
ฉันเปลี่ยนแท็กเพื่อพยายามทำให้คำถามมีแนวโน้มที่จะปรากฏโดยผู้เชี่ยวชาญที่เกี่ยวข้องมากขึ้น   -  person Acorn    schedule 03.10.2020