Megatexture ทำงานอย่างไร


21

ฉันเคยคิดเกี่ยวกับการพัฒนาเอ็นจิ้นเล็ก ๆ ไม่เพียงเพื่อพัฒนาเกมทดลองขนาดเล็ก แต่ยังใช้เป็นฐานในการทดสอบเทคนิคการเรนเดอร์และสิ่งต่าง ๆ เช่นนั้น ตอนนี้ฉันกำลังคิดมากเกี่ยวกับวิธีการจัดการพื้นผิวและสะดุดบน megatexture แต่นี่คือสิ่งที่ทำให้งงเล็กน้อย มีการพูดคุยกันมากมายว่ามันดีกว่าวิธีการแบบดั้งเดิมที่มีพื้นผิวรอบ ๆ และโหลดตามต้องการ แต่ megatexture จะหลีกเลี่ยงสิ่งนี้ได้อย่างไรฉันได้อ่านสิ่งที่พวกเขาใช้ในการสตรีมและคุณสามารถสตรีมบิตและ ชิ้นส่วนของมันต่างจากการโหลดแต่ละพื้นผิวแต่ละชิ้น แต่มันมีประสิทธิภาพที่ดีขึ้นอย่างไรและนั่นไม่ใช่เพียงการไถพรวนอีกรูปแบบหนึ่ง?

เราจะลองตัวอย่างเนื้อสัมผัสดังกล่าวได้อย่างไรเมื่ออยู่ใน shader เราจะสตรีมส่วนหนึ่งของมันลงในหน่วยความจำจากนั้นจึงทำงานกับมัน ฉันเคยเห็นวิดีโอล่าสุดของ Rage และพื้นผิวดูดี แต่นั่นเป็นเพียงผลงานของศิลปินที่ยอดเยี่ยมหรือเทคโนโลยีเข้ามาเล่น

สรุปแล้วมันทำงานอย่างไรทำไมมันถึงยอดเยี่ยมและฉันจะทำสิ่งที่คล้ายกันได้อย่างไร

คำตอบ:


15

แนวคิดพื้นฐานของพื้นผิวขนาดใหญ่คือการใช้แผนที่พื้นผิวที่คุณบรรจุพื้นผิวที่แตกต่างทั้งหมดของคุณให้เป็นขนาดใหญ่และใช้ UV เพื่อทำดัชนีลงในภาพนี้ ฮิวริสติกที่ดีจำเป็นต้องรู้ว่าส่วนใดของพื้นผิวที่คุณต้องการในการสตรีมจากดิสก์ตามสิ่งที่คุณเห็นบนหน้าจอ ข้อเสียคือคุณสามารถมีพื้นผิวที่ไม่ซ้ำกันทั่วโลกเกมและเก็บข้อมูลที่มองเห็นได้ใน RAM เท่านั้น การสตรีมและแคชระบบที่ดีนั้นเป็นสิ่งจำเป็น

ฉันขอแนะนำให้ใช้วัสดุในหน้านี้สำหรับข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการอย่างใดอย่างหนึ่ง: http://silverspaceship.com/src/svt/


4

ตรวจสอบการทำแผนที่คลิปสำหรับการใช้งานฮาร์ดแวร์ SGI ที่มีอยู่แล้ว

อีกไม่นาน Megatexture กำลังถูกใช้เป็นชื่อ pr สำหรับ Sparse Virtual Texturing (SVT)

SVT แสดงมุมมองกล้องความละเอียดขนาดเล็กซึ่งจำเป็นต้องใช้พื้นผิวและ mipmap จากนั้นรูทีน CPU จะโหลดเข้าสู่ระบบดิสก์เพื่อนำ texture / mip chunk เหล่านั้นไปไว้ในหน่วยความจำ (ถ้าไม่ได้อยู่ในหน่วยความจำ) และจากนั้น texture texture ที่โหลดจะถูกวางลงในส่วนของแผนที่พื้นผิวขนาดใหญ่

ในขณะที่มีการนำชิ้นส่วนของพื้นผิวมาใช้พื้นผิวการเปลี่ยนเส้นทาง (แผนที่หน้าเสมือน) จะได้รับการอัปเดตซึ่งใช้รูปแบบที่ต้องการพื้นผิวและเปลี่ยนเส้นทางไปยังส่วนเฉพาะของพื้นผิวขนาดใหญ่ที่จัดเก็บจริง


ที่อธิบายค่อนข้างน้อย ฉันสงสัยว่าถ้ามีการสตรีมเพียงอย่างเดียวเกิดขึ้นได้อย่างไรพวกเขาสามารถสตรีมชิ้นงานขนาดใหญ่ขนาดนั้นได้อย่างไรทั้งใน HDD หรือดิสก์เร็วพอที่จะใช้งานได้ นอกจากนี้ฉันสามารถเห็นได้ว่าทำไมหน่วยความจำจึงมีประสิทธิภาพมากกว่าวิธีดั้งเดิม ผมจะมองไปรอบ ๆ เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับเอส (Flawe ของลักษณะการเชื่อมโยงเช่นที่ดีเป็นจุดเริ่มต้นสำหรับการที่)
Daemoniorum

1

คุณสามารถนึกถึง Megatexture เป็นพื้นผิว "สตรีม" ภาพพื้นผิวขนาดใหญ่ที่มีรายละเอียดครบถ้วนหนึ่งภาพ (ใส่อย่างง่าย) ที่ต้องอ่านเนื่องจากจำเป็นต้องแสดงส่วนต่างๆ ฉันแน่ใจว่ามีอะไรมากกว่านั้นมากกว่าเช่น LOD / การทำแผนที่การโหลดและการจัดการทรัพยากรท่ามกลางสิ่งที่ชัดเจน

Wikipedia มีบทความเกี่ยวกับเรื่องนี้


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