ฉันแค่อยากให้ใครบางคนอธิบายอย่างชัดเจนเกี่ยวกับวิธีการทำงานของฮาร์ดแวร์ tessellation เนื่องจากมันเป็นคำศัพท์ใหม่ของ DX11
ขอบคุณ
ฉันแค่อยากให้ใครบางคนอธิบายอย่างชัดเจนเกี่ยวกับวิธีการทำงานของฮาร์ดแวร์ tessellation เนื่องจากมันเป็นคำศัพท์ใหม่ของ DX11
ขอบคุณ
คำตอบ:
ฉันจะให้รุ่น "ง่าย" ให้คุณและให้คนอื่นกรอกรายละเอียดของคุณหากคุณสนใจ :)
โดยทั่วไปมีสองวิธีในการจำลองวัตถุ 3 มิติ สิ่งแรกคือสิ่งที่คุณไม่เห็นในเกมจำนวนมากและมันเกี่ยวข้องกับการใช้เส้นโค้งที่กำหนดอย่างแม่นยำทางคณิตศาสตร์เพื่อกำหนดรูปร่างของวัตถุ ใช้วิธีนี้ระดับของรายละเอียดคือ (พูดจริง) "ไม่มีที่สิ้นสุด" ยกตัวอย่างเช่น ทรงกระบอกสามารถนิยามได้ในศัพท์ทางคณิตศาสตร์อย่างง่าย: สิ่งที่คุณต้องรู้คือรัศมีที่ปลายและความยาวของทรงกระบอก ในแง่ของรูปทรงเรขาคณิตข้อมูลนี้เป็นสิ่งที่เราต้องการเพื่อสร้างรูปทรงกระบอกในฉาก 3 มิติ ยิ่งไปกว่านั้นเราสามารถปรับขนาดกระบอกสูบให้ใหญ่ขึ้นหรือเล็กลงได้อย่างง่ายดาย สิ่งที่เราต้องทำคือรักษาอัตราส่วนของความยาวต่อรัศมี เราสามารถใช้สูตรเดียวกันเพื่อแสดงรูปทรงเรขาคณิต แต่มีพารามิเตอร์ต่างกัน เราสามารถเป็นตัวแทนของพรู ("โดนัท" รูปร่าง) ได้อย่างง่ายดายเช่นกัน: เราเพียงแค่ต้องรู้ว่ารัศมีด้านในและรัศมีด้านนอก จากนั้นเราสามารถคำนวณเส้นผ่านศูนย์กลาง (และรัศมี) ของร่างโดนัท ("เค้ก") โดยการลบรัศมีภายในออกจากรัศมีด้านนอก ร่างกายวงกลมล้อมรอบส่วนโค้งที่กำหนดโดยรัศมีด้านใน คำจำกัดความ 3D ประเภทนี้ดีเพราะค่อนข้างง่าย (ส่งผลให้เป็นแบบจำลองไฟล์ขนาดเล็ก) และไม่มีข้อ จำกัด อย่างมีนัยสำคัญกับระดับรายละเอียด ข้อเสียคือฮาร์ดแวร์วิดีโอของวันนี้ไม่ได้ออกแบบมาเพื่อดำเนินการกับแบบจำลองประเภทเหล่านี้ได้อย่างมีประสิทธิภาพ (ถ้าเลย) ร่างกายวงกลมล้อมรอบส่วนโค้งที่กำหนดโดยรัศมีด้านใน คำจำกัดความ 3D ประเภทนี้ดีเพราะค่อนข้างง่าย (ส่งผลให้เป็นแบบจำลองไฟล์ขนาดเล็ก) และไม่มีข้อ จำกัด อย่างมีนัยสำคัญกับระดับรายละเอียด ข้อเสียคือฮาร์ดแวร์วิดีโอของวันนี้ไม่ได้ออกแบบมาเพื่อดำเนินการกับแบบจำลองประเภทเหล่านี้ได้อย่างมีประสิทธิภาพ (ถ้าเลย) ร่างกายวงกลมล้อมรอบส่วนโค้งที่กำหนดโดยรัศมีด้านใน คำจำกัดความ 3D ประเภทนี้ดีเพราะค่อนข้างง่าย (ส่งผลให้เป็นแบบจำลองไฟล์ขนาดเล็ก) และไม่มีข้อ จำกัด อย่างมีนัยสำคัญกับระดับรายละเอียด ข้อเสียคือฮาร์ดแวร์วิดีโอของวันนี้ไม่ได้ออกแบบมาเพื่อดำเนินการกับแบบจำลองประเภทเหล่านี้ได้อย่างมีประสิทธิภาพ (ถ้าเลย)
อีกวิธีคือการรวมรูปทรงเรขาคณิตที่เรียบง่ายเพื่อประมาณรูปร่างที่เราต้องการนำเสนอ เราทำเช่นนี้กับกระบวนการที่เรียกว่าtessellation เราสามารถทำการtessellateทรงกระบอกโดยแบ่งมันออกเป็นรูปแบบดั้งเดิมมากขึ้น: วงกลมสองวงและชุดของรูปสี่เหลี่ยมผืนผ้ายาวซึ่งล้อมรอบขอบด้านนอก วงกลมสามารถแบ่งย่อยออกเป็นรูปสามเหลี่ยมขนาดเล็กจำนวนมากได้เช่นเดียวกับรูปสี่เหลี่ยมที่อยู่ตามขอบ ผลลัพธ์ที่ได้คือรูปแบบที่ประกอบด้วยรูปสามเหลี่ยมเท่านั้น :
หรือสำหรับพรู:
ข่าวดีก็คือฮาร์ดแวร์วิดีโอได้รับการปรับให้เหมาะกับรูปทรงเรขาคณิตนี้ GPU ในปัจจุบันไม่มีปัญหาในการแก้ไขรูปสามเหลี่ยมหลายตันทุก ๆ วินาที อย่างไรก็ตามมีปัญหาชัดเจน: เราพยายามแสดงพื้นผิวโค้งโดยใช้รูปร่างที่มีขอบแบน เพื่อให้รูปทรงกระบอกของเราดูเหมือนกระบอกสูบ (ตรงข้ามกับลูกบาศก์) เราต้องการแบ่งมันออกเป็นจำนวนมากของสามเหลี่ยมเล็ก ๆ น้อย ๆ เราต้องการเท่าไหร่ มันขึ้นอยู่กับ. ฮาร์ดแวร์ชนิดใดที่จะใช้ในการแสดงฉาก ฮาร์ดแวร์ที่เร็วกว่าสามารถแสดงสามเหลี่ยมได้เร็วกว่าฮาร์ดแวร์ที่ช้ากว่าทำให้อัตราเฟรมเร็วขึ้น มีปัจจัยอื่น ๆ ที่ต้องพิจารณาเช่นวัตถุอื่น ๆ อีกมากมายที่จะปรากฏในที่เกิดเหตุและพวกมันจะซับซ้อนแค่ไหน ในเกมมักมีวัตถุจำนวนมากในฉากหนึ่ง ๆ นอกจากนี้วัตถุอาจเดินทางผ่านฉากที่แตกต่างกันซึ่งแต่ละภาพมีระดับความซับซ้อนในการมองเห็นที่แตกต่างกัน เป็นการยากที่จะกำหนดระดับของรายละเอียดที่จะใช้เมื่อเราทำการตรวจสอบรุ่นของเรา
ปัญหาอีกประการหนึ่งคือความซับซ้อนทางเรขาคณิต: ในขณะที่คำจำกัดความที่อิงตามส่วนโค้งของทรงกระบอกนั้นง่ายมาก (รัศมีและความยาว) คำจำกัดความของ tessellated น่าจะรวมสามเหลี่ยมหลายร้อยรูป ดังนั้นไฟล์โมเดล tessellated ของเราจะใหญ่ขึ้นมาก สมมติว่าเรามีแบบจำลองทางคณิตศาสตร์ที่กำหนดสิ่งที่ซับซ้อนเหมือนบุคคล ไฟล์โมเดลของเราอาจมีขนาดเพียง 24kb เมื่อโมเดลนั้นถูก tessellated แล้วไฟล์ที่ได้อาจเป็น 24mb (24,000kb) นั่นเป็นข้อแตกต่าง
Tessellation ของฮาร์ดแวร์ใช้ประโยชน์จากรูปทรงเรขาคณิตเพื่อทำการสอนด้วยฮาร์ดแวร์ที่ช่วยในเวลาจริง (หรือในเวลาจริงเกือบ) โดยพื้นฐานแล้วมันมีกลไกในการใช้แบบจำลอง 3 มิติที่กำหนดทางคณิตศาสตร์และแปลงเป็นรูปแบบ tessellated ที่การ์ดแสดงผลสามารถแสดงผลได้อย่างมีประสิทธิภาพ ตามเนื้อผ้าผู้พัฒนาเกมทำการแสดงที่สตูดิโอและจัดส่งแบบจำลอง tessellated กับเกม การสอนฮาร์ดแวร์ช่วยให้เราสามารถเลื่อนขั้นตอนนี้ไปได้จนกว่าเกมจะทำงานบนคอมพิวเตอร์ของผู้เล่น สิ่งนี้มีประโยชน์อย่างมาก:
ขนาดของเนื้อหา 3D ของเกมจะลดลงอย่างมาก (ดิสก์น้อยลงหรือการดาวน์โหลดที่น้อยลงและจำเป็นต้องใช้พื้นที่ฮาร์ดดิสก์น้อยลง)
เราสามารถควบคุมระดับของรายละเอียดในเวลาจริง เรากำลังทำงานบนสัตว์ร้ายที่ทันสมัยของเครื่องเกมหรือไม่? ถ้าเป็นเช่นนั้นเราสามารถทำการทดสอบได้โดยใช้รายละเอียดในระดับสูงมาก เรากำลังใช้งานแล็ปท็อปรุ่นเก่าที่มีกราฟิกในตัวหรือไม่? ไม่มีปัญหา; เราสามารถลดระดับรายละเอียดเพื่อเพิ่มประสิทธิภาพ
นั่นคือส่วนสำคัญของมัน อาจไม่ถูกต้อง 100% เนื่องจากฉันไม่ใช่โปรแกรมเมอร์ 3 มิติ แต่ควรให้ความคิดที่ดีขึ้นเกี่ยวกับความยุ่งยากทั้งหมดเกี่ยวกับ :)
ไชโย
ไมค์
น่าเสียดายที่ไม่ใช่วิธีที่นักพัฒนาซอฟต์แวร์ส่วนใหญ่ใช้ประโยชน์จาก tessellation ในตอนนี้หรือในอนาคตอันใกล้ สิ่งที่พวกเขาใช้ในตอนนี้คือการแทนที่พื้นผิวที่เรียบส่วนใหญ่ตามความสูงของมัน นั่นยังส่งผลให้ภาพลักษณ์ที่ดี แต่ฉันก็ยังคิดว่ามันเป็นการใช้เทคโนโลยีที่มีความสามารถมากกว่า