4 คะแนน โดย GN⁺ 2025-01-05 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

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 ความคิดเห็น

 
GN⁺ 2025-01-05
ความคิดเห็นจาก Hacker News
  • ชีวิตของอัลกอริทึมที่แปลกใหม่และสง่างามในอดีตที่เคยให้ประสบการณ์เหมือนเวทมนตร์ยังคงทำให้คิดถึง ตอนที่ทรัพยากรฮาร์ดแวร์มีจำกัด นักพัฒนามักสร้างสรรค์และคิดนวัตกรรมเพื่อพัฒนาเกม

    • วันนี้แพลตฟอร์มแนวแฟนตาซีอย่าง PICO-8 น่าสนใจกว่าการทำเกมซ้ำๆ ของสตูดิโอ AAA
    • อัลกอริทึมอย่าง VoxelSpace แสดงให้เห็นวิธีการเรนเดอร์ภูมิประเทศด้วยโค้ดจำนวนไม่กี่บรรทัด
  • วิดีโอเกี่ยวกับโปรแกรมชื่อ mars.com ดูน่าสนใจ

    • คุณสามารถพบข้อมูลเพิ่มเติมได้ที่ไซต์ Pouet
  • วิธีการเรนเดอร์นี้น่าสนใจ แต่ก็ยากที่จะจัดว่าเป็น voxel เพราะไม่สามารถเรนเดอร์ปริมาตรได้แบบสุ่มได้ มันเป็นการนำเสนอเรนเดอร์ heightmap ที่เรียบร้อย

  • การอภิปรายที่เกี่ยวข้องกับปี 2020 หรือ 2017 อาจถูกกล่าวถึงในชื่อเรื่อง และในปี 2021 ก็มีการอภิปรายเกี่ยวกับ repository เดียวกันด้วย

  • ตอนที่เริ่มเรียนเขียนโปรแกรม ฉันจำได้ว่าเคยเขียนโปรแกรมสร้าง terrain heightmap ด้วย QBasic และเรนเดอร์แบบอิซอเมตริก มันเป็นสิ่งที่หนึ่งในแรงผลักดันให้ฉันยังเขียนโปรแกรมต่อ

  • ฉันเคยทำเกมด้วยเทคโนโลยีนี้บน Adventure Game Studio ตัวรุ่นก่อนหน้าของเอนจินไม่ได้ถูกปรับให้เหมาะสมไว้ แต่วางแผนที่จะอัปเดตในภายหลัง

  • ในเกมสมัยใหม่ส่วนมาก ภูเขามักดูพร่าๆ แต่การใช้วิธีนี้ทำให้ภูเขาดูมีความหนาแน่นมากขึ้น

  • จำได้ว่าครั้งแรกที่เล่นเกม Comanche แล้วเกิดความประทับใจ มันให้ความรู้สึกราวกับมาจากอนาคตหรือจากภาพยนตร์

  • โครงการเรนเดอร์แบบซอฟต์แวร์นี้สนุกและเหมาะเป็นโปรเจกต์วันหยุดสุดสัปดาห์ เคยทำอัลกอริทึมคล้ายกันมาก่อนแล้ว แต่การทำงานปัจจุบันเร็วกว่าและเรียบง่ายกว่า

  • อยากอาศัยอยู่ในไทม์ไลน์ทางเลือกที่ GPU เป็น voxel