Voxel Space
เว็บสาธิต: เอนจิ้น Voxel Space
ประวัติ
- ในปี 1992 CPU ช้ากว่าปัจจุบันถึง 1,000 เท่า และการเร่งด้วย GPU ยังไม่เป็นที่รู้จักหรือมีราคาแพง
- เกม 3D ถูกประมวลผลบน CPU เท่านั้น และเอนจินเรนเดอร์เรนเดอร์โพลีโกนสีเดียว
- เกม Gunship 2000 ของ MicroProse เปิดตัวในปี 1991 และเกม Comanche ของ NovaLogic เปิดตัวในปี 1992
- Comanche ให้กราฟิกที่น่าประทับใจในยุคนั้น โดยแสดงเท็กซ์เจอร์, เงาเฉดแสง และเงาสะท้อน
อัลกอริทึมการเรนเดอร์
- Comanche ใช้เทคโนโลยี Voxel Space ซึ่งอิงแนวคิดคล้ายกับ Ray casting
- เอนจิน Voxel Space เป็นเอนจิน 2.5D และจึงไม่ได้ให้เสรีภาพครบถ้วนเหมือนเอนจิน 3D ทั่วไป
แผนที่ความสูงและแผนที่สี
- วิธีที่ง่ายที่สุดในการแทนที่ภูมิประเทศคือการใช้แผนที่ความสูงและแผนที่สี
- เกม Comanche ใช้แผนที่ความสูงและแผนที่สีขนาด 1024 * 1024 แบบ 1 ไบต์
- แผนที่เหล่านี้เป็นแบบ periodic และไม่สามารถแสดงโครงสร้างที่ซับซ้อนได้ แต่แผนที่สีมีการทำเงาและเงามืดรวมอยู่แล้ว จึงไม่จำเป็นต้องคำนวณแสงในขั้นตอนการเรนเดอร์
อัลกอริทึมพื้นฐาน
- อัลกอริทึมการเรนเดอร์ของเอนจิน 3D นั้นค่อนข้างง่ายมาก
- เอนจิน Voxel Space ทำการเรนเดอร์แผนที่ความสูงและแผนที่สีด้วยการ Rasterization เพื่อวาดเส้นแนวตั้ง
- ล้างหน้าจอแล้ววาดจากด้านหลังไปด้านหน้าเพื่อให้เกิดการปิดบัง (occlusion) อย่างถูกต้อง
- หาความยาวของเส้นบนแผนที่ที่สอดคล้องกับระยะเชิงแสงจากตัวสังเกต
- Rasterize เส้นให้ตรงกับจำนวนคอลัมน์ของจอภาพ
- ดึงค่าความสูงและสีจากส่วนย่อยของเส้นบนแผนที่ 2 มิติ
- ทำการแปลงเชิงมุมมองแบบ perspective projection สำหรับพิกัดความสูง
- วาดเส้นแนวตั้งจากความสูงที่ได้จาก perspective projection ร่วมกับสีที่เกี่ยวข้อง
การเพิ่มการหมุน
- ด้วยอัลกอริทึมข้างต้น ผู้ใช้จะมองเห็นได้เฉพาะทางทิศเหนือเท่านั้น
- หากต้องการมองในมุมอื่น ต้องมีโค้ดเพิ่มอีกไม่กี่บรรทัดเพื่อหมุนพิกัด
การปรับปรุงประสิทธิภาพ
- มีเทคนิคหลายอย่างที่ช่วยเพิ่มประสิทธิภาพ
- สามารถวาดจากหน้าไปหลังได้แทนการวาดจากหลังไปหน้า
- จำเป็นต้องมี y-buffer เพิ่มเติมเพื่อรับประกันการปิดบัง
- ปรับระดับความละเอียดของรายละเอียดโดยใช้รายละเอียดมากใกล้กล้องและน้อยลงเมื่ออยู่ไกล
ลิงก์
- หน้าเดโมโครงการบนเว็บ
- แนะนำเอนจิ้นภูมิประเทศ Voxel
- เว็บไซต์ส่วนตัว
แผนที่
ใบอนุญาต
- ส่วนซอฟต์แวร์อยู่ภายใต้ใบอนุญาต MIT
- เทคโนโลยี Voxel Space อาจยังคงมีสิทธิบัตรในบางประเทศ
- แผนที่สีและแผนที่ความสูงถูกทำการย้อนวิศวกรรมจากเกม Comanche และไม่อยู่ในขอบเขตของใบอนุญาต
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ชีวิตของอัลกอริทึมที่แปลกใหม่และสง่างามในอดีตที่เคยให้ประสบการณ์เหมือนเวทมนตร์ยังคงทำให้คิดถึง ตอนที่ทรัพยากรฮาร์ดแวร์มีจำกัด นักพัฒนามักสร้างสรรค์และคิดนวัตกรรมเพื่อพัฒนาเกม
วิดีโอเกี่ยวกับโปรแกรมชื่อ mars.com ดูน่าสนใจ
วิธีการเรนเดอร์นี้น่าสนใจ แต่ก็ยากที่จะจัดว่าเป็น voxel เพราะไม่สามารถเรนเดอร์ปริมาตรได้แบบสุ่มได้ มันเป็นการนำเสนอเรนเดอร์ heightmap ที่เรียบร้อย
การอภิปรายที่เกี่ยวข้องกับปี 2020 หรือ 2017 อาจถูกกล่าวถึงในชื่อเรื่อง และในปี 2021 ก็มีการอภิปรายเกี่ยวกับ repository เดียวกันด้วย
ตอนที่เริ่มเรียนเขียนโปรแกรม ฉันจำได้ว่าเคยเขียนโปรแกรมสร้าง terrain heightmap ด้วย QBasic และเรนเดอร์แบบอิซอเมตริก มันเป็นสิ่งที่หนึ่งในแรงผลักดันให้ฉันยังเขียนโปรแกรมต่อ
ฉันเคยทำเกมด้วยเทคโนโลยีนี้บน Adventure Game Studio ตัวรุ่นก่อนหน้าของเอนจินไม่ได้ถูกปรับให้เหมาะสมไว้ แต่วางแผนที่จะอัปเดตในภายหลัง
ในเกมสมัยใหม่ส่วนมาก ภูเขามักดูพร่าๆ แต่การใช้วิธีนี้ทำให้ภูเขาดูมีความหนาแน่นมากขึ้น
จำได้ว่าครั้งแรกที่เล่นเกม Comanche แล้วเกิดความประทับใจ มันให้ความรู้สึกราวกับมาจากอนาคตหรือจากภาพยนตร์
โครงการเรนเดอร์แบบซอฟต์แวร์นี้สนุกและเหมาะเป็นโปรเจกต์วันหยุดสุดสัปดาห์ เคยทำอัลกอริทึมคล้ายกันมาก่อนแล้ว แต่การทำงานปัจจุบันเร็วกว่าและเรียบง่ายกว่า
อยากอาศัยอยู่ในไทม์ไลน์ทางเลือกที่ GPU เป็น voxel