ในเกม AAA รุ่นใหม่ที่มีสภาพแวดล้อมเปิดและมีเนื้อหาสแตติกจำนวนมาก (เช่น crysis) การคัดแบบบดเคี้ยวจะทำอย่างไร?


19

สองความคิดที่ฉันมีอยู่ในใจ:

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

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


3
"วิธีการทำเกม <X> ทำเช่นนี้" คำถามมีอย่างชัดเจนนอกเรื่องเป็นต่อคำถามที่พบบ่อย อาจแก้ไขคำถามนี้เพื่อถามว่าคุณสามารถทำการคัดกรองการบดเคี้ยวได้อย่างไรแทนที่จะเป็นคนอื่นทำอย่างไร? (นอกจากนี้การให้คำตอบของคุณเองในเนื้อความของคำถามทำให้รู้สึกว่าคุณกำลังขอการสนทนาหรือรายการมากกว่าคำตอบ )
Trevor Powell

คำตอบ:


13

คำตอบของ Jovan นั้นยอดเยี่ยม แต่ต้องการเพิ่มว่าบางครั้งมีฮาร์ดแวร์รองรับสำหรับการถามคำถาม "เรขาคณิตนี้ทำให้พิกเซลจริง ๆ หรือไม่" (ความคิดของคุณ # 1) สิ่งเหล่านี้เรียกว่าการสืบค้นบดเคี้ยว - นี่เป็นบทความเกี่ยวกับ GPU GPU ที่ดีเกี่ยวกับพวกเขาที่นี่

สิ่งนี้คล้ายกับความคิดของคุณ # 1 ยกเว้นว่าคุณไม่ต้องการบัฟเฟอร์ที่มองไม่เห็นและอาจมีประสิทธิภาพมากกว่าหรือง่ายกว่าการตรวจสอบบัฟเฟอร์ บทความที่เชื่อมโยงนั้นทำงานได้อย่างยอดเยี่ยมในเชิงลึกเกี่ยวกับวิธีการค้นหาการบดเคี้ยวฮาร์ดแวร์

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


จริง ๆ แล้วข้อความค้นหาการบดเคี้ยวของฮาร์ดแวร์นั้นพบได้บ่อยกว่า "บางครั้ง" ในทุกวันนี้ - ด้วยข้อยกเว้นที่เป็นไปได้ของ GPU บนมือถือ
Maximus Minimus

พวกมันช้ามากเหรอ?
Quonux

12

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

เทคนิคนี้จะถูกใช้โดย Killzone และเป็นรายละเอียดในการนำเสนอของพวกเขาปฏิบัติบดเคี้ยวคัดบน PS3 พวกเขายังใช้พอร์ทัลสำหรับพื้นที่ในร่ม

สิ่งหนึ่งที่ต้องคำนึงถึงเกี่ยวกับแผนที่กลางแจ้งขนาดใหญ่คือการลดความซับซ้อนของตาข่ายนั้นสำคัญพอ ๆ กับการบดเคี้ยวการบดเคี้ยวดังนั้นการแปรผันของความสูง - ฟิลด์พร้อมการคลิปภาพเรขาคณิตมักใช้ นี่คือกระดาษที่ดีที่ครอบคลุมการคัดสรรเช่นกัน GPU Gems 2 มีการนำมาใช้งานจริง


5

อย่างน้อยเกม Quake สองเกมแรกใช้กลยุทธ์ 2; ฉันไม่รู้ว่าเอ็นจิ้น idTech ยังคงใช้งานหรือไม่ โลกที่เข้าถึงได้นั้นแบ่งออกเป็นช่องว่างแบบนูนที่จัดอยู่ในโครงสร้างข้อมูลแบบต้นไม้ ("พาร์ทิชันพื้นที่แบบไบนารี") และสำหรับแต่ละโหนดในต้นไม้จะมีเวกเตอร์บิตที่แสดงโหนดอื่น ๆ ที่สามารถมองเห็นได้จากโหนดนั้น


1
หากคุณกำลังจะนำไปสู่ ​​Quake คุณอาจนำเทคโนโลยีการแสดงผลของ Thief มาด้วย) - nothings.org/gamedev/thief_rendering.html
Jovan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.