Tessellation ในกราฟิกคอมพิวเตอร์คืออะไร


16

ในเกมล่าสุดฉันสังเกตเห็นสิ่งที่เรียกว่า Tessellation การเปิดสิ่งที่ทำลายอัตราเฟรมของฉัน

ฉันสังเกตเห็นว่าเมื่อเปิดใช้งานดูเหมือนว่า Anti-Aliasing

ใครสามารถให้ข้อมูลเพิ่มเติมแก่ฉันเกี่ยวกับสิ่งที่ GPU ทำ


2
โอ้ที่รัก 2 คำตอบและไม่มีคอมพิวเตอร์กราฟิกที่ดีที่สุด
joojaa

คำตอบ:


25

Tesselation เป็นเทคนิคที่ช่วยให้คุณสร้างดั้งเดิม (สามเหลี่ยมเส้นจุดและอื่น ๆ ) บนกราฟิกการ์ด โดยเฉพาะมันช่วยให้คุณแบ่งเรขาคณิตปัจจุบันซ้ำ ๆ เป็นตาข่ายที่ละเอียดยิ่งขึ้น

สิ่งนี้จะช่วยให้คุณโหลดตาข่ายที่ค่อนข้างหยาบบนการ์ดกราฟิกของคุณสร้างจุดยอดและสามเหลี่ยมแบบไดนามิกมากขึ้นจากนั้นมีตาข่ายบนหน้าจอที่ดูนุ่มนวลขึ้น

ตัวอย่าง Tessellation

เวลาส่วนใหญ่การสอนนี้จะทำใหม่ในแต่ละเฟรมและนี่อาจเป็นสาเหตุที่อัตราเฟรมของคุณลดลงเมื่อคุณเปิดใช้งานสิ่งนี้

Tesselation เสร็จสิ้นในหลายขั้นตอนและหลังจากเสร็จสิ้น Shader ที่จุดสุดยอดแล้ว

ขั้นตอน

ข้อกำหนดสำหรับแต่ละขั้นตอนจะแตกต่างกันไปตาม API ใน DirectX นั้นคือ Hull Shader, Tessellation ของฮาร์ดแวร์และ Domain Shader ใน OpenGL พวกเขาเรียกว่า Tessellation Control Shader, Tesselation Primitive Generation และ Tessellation Evaluation Shader

ขั้นแรกและระยะสุดท้ายเป็นโปรแกรมได้ tesselation ที่แท้จริงจะทำโดยฮาร์ดแวร์ในขั้นตอนการทำงานคงที่

ในส่วนควบคุม Tesselation คุณกำหนดประเภทและจำนวนของส่วนย่อย

จากนั้นฮาร์ดแวร์ tessellator จะแบ่งเรขาคณิตตามส่วนควบคุม

สุดท้าย Tessellation Evaluation Shader ถูกเรียกสำหรับจุดสุดยอดที่สร้างขึ้นใหม่แต่ละจุด ใน shader นี้คุณตั้งประเภทของดึกดำบรรพ์ที่คุณต้องการสร้างและวิธีการจุดยอดและระยะห่างและสิ่งอื่น ๆ อีกมากมาย Shader นี้ยังสามารถใช้ในการคำนวณทุกประเภทของจุดสุดยอดเช่นเดียวกับจุดยอด มันรับประกันว่าจะเรียกอย่างน้อยหนึ่งครั้งสำหรับแต่ละจุดสุดยอดที่สร้างขึ้น

หากคุณต้องการที่จะทำงานต่อไปในเบื้องต้นคุณสามารถเพิ่มเรขาคณิต shader


1
@Nicol ขอบคุณ ฉันแก้ไขคำตอบตามนั้น
Dragonseel

7

มันเปิดใช้งาน 3 ขั้นตอนในท่อ

สิ่งแรกคือ tessellation control shader (hull shader ใน D3D) ซึ่งดูที่ชุดของจุดยอดและเอาท์พุทวิธีที่มันควรจะแบ่งออกเป็นสามเหลี่ยมแยก

ประการที่สองคือขั้นตอนการทำงานคงที่ที่จะสร้างรูปสามเหลี่ยมที่ร้องขอ

ขั้นตอนที่สามคือ tessellation evalutation shader (domain shader ใน D3D) ซึ่งถูกเรียกใช้ต่อยอดที่สร้างขึ้นและจะวางไว้ในตำแหน่งที่ถูกต้องตามพิกัด barycentric ของจุดยอดที่สร้างขึ้น

สิ่งนี้ใช้สำหรับระดับรายละเอียดเพื่อสร้างรูปสามเหลี่ยมมากขึ้นเมื่อตาข่ายอยู่ใกล้กับกล้องมากขึ้น

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