รายละเอียดของ GPU ทำอะไรได้จริงเมื่อตัดในพื้นที่ที่เป็นเนื้อเดียวกัน 4D?


10

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

พื้นที่การตัดที่เป็นเนื้อเดียวกันประกอบด้วยตัวแปรwซึ่งมีความหลากหลายในแต่ละจุดยอด พิกัดจุดที่เป็นเนื้อเดียวกันของวัตถุแต่ละอัน (ระหว่างเมทริกซ์การฉายและการหารแบบเอกพันธ์ด้วย w) ที่พื้นที่การตัดของมันหรือไม่? ถ้าเป็นเช่นนั้นวิธีการตัดเส้นและสามเหลี่ยมใกล้กว่า Frustum หรือยืดตัวกล้อง (เช่น w <= frustum_znear)?

ปรับปรุง : กระทู้นี้บอกว่าการตัดในพื้นที่ที่เป็นเนื้อเดียวกันนั้นเป็นปัญหาการแยกโดยตรงในพื้นที่ที่เป็นเนื้อเดียวกัน 4D p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4ซึ่งหมายความว่าจุดตัดคือ บอกว่าฉันมีP0(-70, -70, 118, 120)และP1(-32, -99, -13, -11)ในพื้นที่ที่เป็นเนื้อเดียวกัน 4D และจุดตัดกับplane w = -z(ซึ่งใน NDC คือ z = -1) คือ(-35, -96, -1, 0.9) t = 0.99ทำอย่างไรถึงจะได้รับวัตถุจุดสุดยอดที่สอดคล้องกันในพื้นที่ NDC?

และเมื่อฉันได้รับจุดตัดที่ถูกต้องฉันควรทำการแก้ไขระหว่างวัตถุจุดยอดที่สร้างโดยจุดยอด shader เพื่อรับวัตถุจุดสุดยอดใหม่หรือไม่


นี่ทำให้ฉันมีคำถามมากเกินไปสำหรับโพสต์เดียวและอาจจะแยกกัน กฎทั่วไปเป็นคำถามเดียว (หรือคำถามสำคัญอย่างน้อย) ต่อโพสต์
Pikalek

@Pikalek ฉันลบคำถามอีกสองคำถามแล้วลองทำให้กระทู้นี้สมเหตุสมผล ขอบคุณสำหรับคำแนะนำ.
stanleyerror

คำตอบ:


1

การตัดจะทำในพื้นที่ 3 มิติก่อนส่วน 'w' ไม่ใช่ในพื้นที่ 4D

GPU พบว่าเป็นเพียงเครื่องบินใกล้และไกลหรือเครื่องบิน 3 มิติทั้ง 6 ของมุมมอง frustum และคลิป Geo เข้ากับสิ่งนี้

หากการแบ่ง w เสร็จก่อนเครื่องหมายของพิกัดจะพลิกเป็นจุดยอดหลังตา / กล้อง

หากใช้เฉพาะเครื่องบินระยะไกลใกล้กับคลิป 3 มิติก่อนที่จะหารด้วย w เท่านั้นคุณสามารถพึ่งพาการตัด 2D ในระยะแรสเตอร์สำหรับเครื่องบิน x & y เท่านั้น


W เป็นเพียงตัวหารเส้นโครงที่เกี่ยวข้องโดยตรงกับ Z ไม่ใช่จริงมิติที่ 4 4x4 เมทริกซ์เป็น "แฮ็ค" เพื่อรวมการแปลและการฉายภาพในรูปแบบที่สะดวก มันใช้งานได้เพียงเพราะตำแหน่งนั้นมีความหมายว่า (x, y, z, 1) และบรรทัดฐานนั้นมีความหมายว่าเป็น (x, y, z, 0)

แต่มันไม่ใช่ 4 มิติอิสระ

ค่าอื่น ๆ สำหรับ "W" ที่ไม่ได้เป็น 1 หรือ 0 มีความหมายเพียงเล็กน้อยสำหรับเรขาคณิตมันเป็นสวิตช์เปิด / ปิดที่สะดวกสำหรับการปิดการแปล


0

หากคุณกำลังถามเกี่ยวกับการแปลง coords พื้นที่คลิปเป็นเนื้อเดียวกันเป็น coords อุปกรณ์พิกัด (NDC) ปกติกระบวนการคือ: <x y z w> → <x/w y/w z/w>

GDSE Q / A นี้ทำไมพื้นที่คลิปมักถูกเรียกว่า“ พื้นที่คลิปเป็นเนื้อเดียวกัน” เสมอ อาจเป็นประโยชน์กับคุณ


1
ขอบคุณสำหรับคำตอบ. อย่างไรก็ตามปัญหาของฉันเกี่ยวกับการแก้ไข สมมติว่าสองจุด e1, e2 ภายใต้พิกัดตา 3 มิติถูกคาดการณ์ไว้ที่พื้นที่การตัดที่เป็นเนื้อเดียวกัน 4D h1, h2 จากนั้นเราทำการแก้ไขในพื้นที่ที่เป็นเนื้อเดียวกัน 4D ส่วน h1-h2 จะถูกตัดที่ 4D point h (t) = t * h1 + (1-t) * h2 โดยไม่สูญเสียความคิดทั่วไปสมมติว่าเรามีส่วน h1-h (t) (ซึ่งสามารถดูได้) ให้อาหารเข้าสู่ระยะการแรสเตอร์ ดังนั้นเราจำเป็นต้องสร้างคุณสมบัติจุดสุดยอดที่สอดคล้องกัน (เช่นเดียวกับรูปแบบการส่งออกของจุดสุดยอด Shader) คำถามของฉันคือวิธีสร้างคุณสมบัติของจุดยอดใหม่เหล่านี้อย่างไร
stanleyerror

ความเข้าใจของฉันคือการแก้ไขไม่ได้ทำใน HCS แต่ฉันอาจเข้าใจผิด หากคุณไม่ได้รับคำตอบที่ดีกว่า / ดีกว่าที่นี่คุณอาจลองทำการย้าย / โยกย้ายไปที่ SO
Pikalek

ตกลง. ฉันสามารถย้ายกระทู้นี้ไปที่ SO โดยตรงได้หรือไม่ฉันต้องเปิดคำถามใหม่อีกครั้งที่นั่น
stanleyerror

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

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