ซอฟต์แวร์ rasterization ในเกมเอ็นจิ้นสมัยใหม่มีอะไรบ้าง?


9

ฉันกำลังเรียนหลักสูตรกราฟิกคอมพิวเตอร์ในไตรมาสนี้ หนึ่งในโครงการแล็บของเราเกี่ยวกับการแปลงเป็นซอฟต์แวร์

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

หลังจากค้นหาสั้น ๆ ฉันได้เรียนรู้เทคนิคที่เรียกว่า Software Occlusion Culling มันทำ rasterization ซอฟต์แวร์บนบัฟเฟอร์ของความละเอียดต่าง ๆ และเราสามารถค้นหาการบดเคี้ยวโดยใช้บัฟเฟอร์ z แบบลำดับชั้น

คำถามของฉัน : การใช้ rasterization ของซอฟต์แวร์ในเอ็นจิ้นเกมที่ทันสมัยนอกเหนือจาก Software Occlusion Culling คืออะไร?

คำตอบ:


4

ตามความรู้ของฉันSoftware Occlusion Culling (ซึ่งคุณพูดถึงแล้ว) เป็นสิ่งเดียวที่ rasterizer ซอฟต์แวร์จะยังคงใช้ Procworldใช้เทคนิคที่คล้ายกันเพื่อแสดงสภาพแวดล้อมของ voxel ขนาดใหญ่

วิธีการเลือกสรรอื่น ๆ เช่น frullum culling นั้นทำงานบน CPU แต่ในการยึดกับตัวอย่างการทดสอบกับ frustum นั้นเกิดขึ้นที่ระดับวัตถุซึ่งอาจจะมีกล่องจัดแนวแกน AABB การทดสอบทางแยกนี้เป็นวิธีที่ง่ายกว่าการใช้ rasterizer ซอฟต์แวร์แบบเต็มเป่า

ในบางกรณีซอฟต์แวร์ rasterization สามารถใช้สำหรับการหยิบเมาส์ของวัตถุ ในเอ็นจิ้นของเกมการแก้ไขนี้มักจะใช้เอ็นจิ้นฟิสิกส์และการชนกันของรูปสามเหลี่ยมกับตาข่ายที่เรียบง่าย

เมื่อ CPU ไม่ได้ใช้งานในขณะที่รอ GPU ในแอปพลิเคชัน 3D แบบโต้ตอบที่ทันสมัยใคร ๆ ก็คิดว่ามันอาจเป็นประโยชน์ในการใช้รอบที่ไม่ทำงานเหล่านี้เพื่อแสดงผลบน CPU โดยใช้ rasterizer ของซอฟต์แวร์ ปัญหาที่นี่นอกจากการเรนเดอร์มีความซับซ้อนและซับซ้อนมากมักเป็นแบนด์วิดท์ รูปภาพที่แสดงบน CPU ต้องโอนไปยัง GPU ก่อนแสดงผลซึ่งอาจยกเลิกประโยชน์


0

เกมที่มีแนวคิด "หมอกแห่งสงคราม" มักจะมีตารางการมองเห็นเพื่อกำหนดสถานะของหมอกแห่งสงครามในแต่ละตำแหน่ง บางครั้งการใช้ Rasterization เพื่อแก้ไขหมอกแห่งสงครามสำหรับรูปร่างที่เฉพาะเจาะจงบนกริด

ตัวอย่างเช่นการใช้ความสามารถที่เผยให้เห็นวงกลมของแผนที่ด้วยรัศมีที่เฉพาะเจาะจงหรือบางทีสิ่งที่เผยให้เห็นสี่เหลี่ยม

ไม่เกี่ยวกับกราฟิคอย่างเคร่งครัด แต่เป็นการใช้ rasterization ในเกมสมัยใหม่และใช้เทคนิคที่เห็นใน RTS

ข้อมูลที่ใช้กริดอื่น ๆ ในเกมสามารถใช้ rasterization สำหรับสถานการณ์ที่คล้ายคลึงกัน


-2

Rasterization เป็นหัวข้อใหญ่ที่มีหลายส่วนและฉันไม่มีโปรแกรมเมอร์เครื่องยนต์ แต่ฉันจะทำให้ดีที่สุดเพื่อให้เห็นภาพรวมบางอย่าง

บางสิ่งที่ธรรมดามากและระดับต่ำรวมถึง:

  • Frustrum culling:กำจัดทุกสิ่งที่อยู่นอก frustrum ของกล้อง (คิดว่าเป็นพื้นที่สำหรับดูกล้อง)
  • Backface culling:ทิ้งรูปหลายเหลี่ยมที่ไม่ได้นำไปที่กล้อง
  • อัลกอริธึมของ Painter:วาดวัตถุตามระยะทางไปยังกล้องเริ่มต้นด้วยวัตถุที่อยู่ไกลจากนั้นไปที่กล้อง

สิ่งที่ล้ำหน้ากว่าที่ใช้ในเกม ได้แก่

  • Tesselation : จริง ๆ แล้วค่อนข้างคล้าย LOD (ดูด้านล่าง) แต่ตอนนี้ DirectX เวอร์ชั่นล่าสุดได้นำเสนอ tesselation ซึ่งให้การแบ่งตาข่ายอัตโนมัติหรือการลดขนาด สิ่งนี้จะช่วยเพิ่มประสิทธิภาพกราฟิกได้อย่างมากเพราะคุณสามารถรับ polys ได้ถ้าคุณต้องการและกำจัดมันหากคุณไม่ต้องการมันอีกต่อไป
  • LOD : ระบบระดับรายละเอียดจะแทนที่ตาข่ายของวัตถุตามระยะห่างระหว่างวัตถุและกล้อง ตัวอย่างเช่นตัวละครของคุณมีสามตาข่าย: หนึ่งที่มี 10,000, หนึ่งที่ 5,000 และอื่น ๆ ที่มี 1,000 polys หากคุณอยู่ตรงหน้าเขาตาข่ายความละเอียดสูง (10,000 โพลี) จะปรากฏขึ้นหากคุณย้ายออกไปหลังจาก 100 เมตรตัวละครจะถูกแทนที่ด้วยตาข่ายขนาดกลางและหลังจากนั้นอีก 100 เมตรก็จะถูกแทนที่ด้วยตาข่ายความละเอียดต่ำ แทนที่จะเปลี่ยนตาข่ายคุณสามารถลดมันได้ แต่มันจะซับซ้อนกว่าในการเขียนโค้ด
  • พาร์ทิชันพื้นที่ไบนารี : พื้นที่แบ่งออกเป็นสองเล่ม สิ่งนี้จะทำซ้ำจนกว่าคุณจะไปถึงเป้าหมายของคุณเช่นจนกว่าพื้นที่จะมีเพียง polys ที่ควรวาดบนหน้าจอ
  • พอร์ทัลและเซลล์ : (หรือที่รู้จักในการเลือกสรรพอร์ทัล) ใช้ในฉากในร่มและ / หรือนักกีฬาคนแรก ฉากแบ่งออกเป็นเซลล์ (เช่นห้องของอาคาร) ที่เชื่อมต่อกับพอร์ทัลการขว้าง (เช่นประตู) คุณสามารถตั้งค่าพอร์ทัลให้เปิดและปิด

สมมติว่าคุณมีความเข้าใจพื้นฐานของไปป์ไลน์กราฟิกฉันพยายามเน้น rasterization คุณอาจลองดูแสงและเงาหรือสิ่งอื่น ๆ ..

สิ่งเหล่านี้รวมถึงเทคโนโลยีที่เป็นไปได้เพียงไม่กี่ข้อที่จะรวมไว้ในโครงการของคุณ เนื่องจากฉันมีชื่อเสียงไม่เพียงพอใน stackexchange ฉันไม่สามารถให้ลิงก์ได้มากมาย แต่คุณจะพบทุกอย่างใน google :)


2
คำถามเกี่ยวกับซอฟต์แวร์แรสเตอร์ (อ่าน: CPU) ข้อมูลบางส่วนที่คุณให้นั้นเกี่ยวกับการแรสเตอร์โดยทั่วไปเทคนิคบางอย่าง - ในหนังสือของฉัน - ไม่มีอะไรเกี่ยวข้องกับการแรสเตอร์ คุณช่วยอธิบายให้ชัดเจนในคำตอบของคุณเกี่ยวกับวิธีการใช้เทคนิคหรือประโยชน์จากการแปลงเป็นซอฟต์แวร์ได้หรือไม่?
David Kuri
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.