ในเกมล่าสุดฉันสังเกตเห็นสิ่งที่เรียกว่า Tessellation การเปิดสิ่งที่ทำลายอัตราเฟรมของฉัน
ฉันสังเกตเห็นว่าเมื่อเปิดใช้งานดูเหมือนว่า Anti-Aliasing
ใครสามารถให้ข้อมูลเพิ่มเติมแก่ฉันเกี่ยวกับสิ่งที่ GPU ทำ
ในเกมล่าสุดฉันสังเกตเห็นสิ่งที่เรียกว่า Tessellation การเปิดสิ่งที่ทำลายอัตราเฟรมของฉัน
ฉันสังเกตเห็นว่าเมื่อเปิดใช้งานดูเหมือนว่า Anti-Aliasing
ใครสามารถให้ข้อมูลเพิ่มเติมแก่ฉันเกี่ยวกับสิ่งที่ GPU ทำ
คำตอบ:
Tesselation เป็นเทคนิคที่ช่วยให้คุณสร้างดั้งเดิม (สามเหลี่ยมเส้นจุดและอื่น ๆ ) บนกราฟิกการ์ด โดยเฉพาะมันช่วยให้คุณแบ่งเรขาคณิตปัจจุบันซ้ำ ๆ เป็นตาข่ายที่ละเอียดยิ่งขึ้น
สิ่งนี้จะช่วยให้คุณโหลดตาข่ายที่ค่อนข้างหยาบบนการ์ดกราฟิกของคุณสร้างจุดยอดและสามเหลี่ยมแบบไดนามิกมากขึ้นจากนั้นมีตาข่ายบนหน้าจอที่ดูนุ่มนวลขึ้น
เวลาส่วนใหญ่การสอนนี้จะทำใหม่ในแต่ละเฟรมและนี่อาจเป็นสาเหตุที่อัตราเฟรมของคุณลดลงเมื่อคุณเปิดใช้งานสิ่งนี้
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
มันเปิดใช้งาน 3 ขั้นตอนในท่อ
สิ่งแรกคือ tessellation control shader (hull shader ใน D3D) ซึ่งดูที่ชุดของจุดยอดและเอาท์พุทวิธีที่มันควรจะแบ่งออกเป็นสามเหลี่ยมแยก
ประการที่สองคือขั้นตอนการทำงานคงที่ที่จะสร้างรูปสามเหลี่ยมที่ร้องขอ
ขั้นตอนที่สามคือ tessellation evalutation shader (domain shader ใน D3D) ซึ่งถูกเรียกใช้ต่อยอดที่สร้างขึ้นและจะวางไว้ในตำแหน่งที่ถูกต้องตามพิกัด barycentric ของจุดยอดที่สร้างขึ้น
สิ่งนี้ใช้สำหรับระดับรายละเอียดเพื่อสร้างรูปสามเหลี่ยมมากขึ้นเมื่อตาข่ายอยู่ใกล้กับกล้องมากขึ้น