Voxel Displacement Renderer — การทำให้สุนทรียะแบบ 3D ย้อนยุคทันสมัยขึ้น

แรงบันดาลใจด้านสุนทรียะ

  • เกม 3D ช่วงต้นถึงกลางยุค 90 (Doom, Quake, Duke Nukem) มีอิทธิพลอย่างมากทั้งด้านเทคโนโลยีและเกมเพลย์
  • ในช่วงหลัง ข้อจำกัดด้านภาพของเกมเหล่านี้กลับกลายเป็นเสน่ห์แบบย้อนยุค
  • เรขาคณิตของฉากนั้นเรียบง่ายแต่เปี่ยมด้วยจินตนาการ และเท็กซ์เจอร์ก็มีขอบพิกเซลที่คมชัด
  • สไตล์นี้คล้ายกับการย่อเชิงนามธรรมแบบมีสไตล์ของ pixel art แบบ 2D
  • จึงได้รับความนิยมในเกมสมัยใหม่ที่ได้แรงบันดาลใจจากความย้อนยุคและเกมอินดี้ 3D

วิธีการทำงานของ voxel แบบทั่วไป

  • voxel mesh คือกริดสามมิติที่ประกอบด้วยเซลล์ทรงลูกบาศก์ซึ่งอาจถูกเติมเต็มหรือเว้นว่าง
  • voxel ขนาดใหญ่จะมีเท็กซ์เจอร์ ส่วน voxel ขนาดเล็กจะเป็นสีล้วน
  • เพื่อสร้างฉากขนาดใหญ่ สามารถวางเรขาคณิตทั้งหมดไว้ในกริดที่ใช้ร่วมกัน หรือวาง voxel mesh อิสระหลายชิ้นไว้ในพื้นที่เดียวกันก็ได้
  • เมื่อตัดสินใจสร้างโลกของเกมด้วย voxel ก็จำเป็นต้องสร้างเรขาคณิตแบบ voxel และให้ทั้งระบบเรนเดอร์รวมถึงตรรกะเกมเพลย์ทำงานในระดับ voxel
  • การเพิ่มหรือลบเรขาคณิตใน voxel mesh ทำได้ง่าย

วิธีการทำงานของ displacement แบบทั่วไป

  • displacement mapping กำหนดว่าพิกเซลแต่ละจุดในเท็กซ์เจอร์ควรยื่นเข้าไปหรือยื่นออกมาจากผิวของ mesh มากน้อยเพียงใด
  • ซอฟต์แวร์ทำโมเดล 3D สามารถแบ่งย่อย mesh และทำให้จุดยอดใหม่เกิด displacement เพื่อใช้ displacement mapping ได้
  • ในกราฟิกแบบเรียลไทม์ มักใช้ร่วมกับเอฟเฟกต์ surface shading เพื่อสร้างรายละเอียดเชิงเรขาคณิตที่ละเอียด โดยไม่ต้องเปลี่ยนรูปทรงทางกายภาพของ mesh
  • shell mapping ช่วยให้มองเห็น displacement ตาม silhouette ของวัตถุได้

สิ่งที่ฉันสร้าง — การผสม voxel กับ displacement mapping

  • ใช้ mesh low-poly แบบดั้งเดิมเพื่อสร้างฉากของเกม 3D คลาสสิก แล้วใช้ displacement map เพื่อกำหนดรายละเอียดพื้นผิวในระดับ voxel
  • ใช้ triangle mesh และข้อมูล displacement map ที่มีอยู่อย่างจำกัด เพื่อแปลงเป็นข้อมูลเรขาคณิตที่ renderer จะโหลดเข้าสู่ GPU
  • ทำ pre-process เท็กซ์เจอร์เพื่อสร้างข้อมูลที่จำเป็นระหว่างการเรนเดอร์
  • ใช้สถานะของ mesh และเท็กซ์เจอร์เพื่อเรนเดอร์เรขาคณิตแบบ voxel displacement

การสร้างอาร์ตแอสเซตและฉาก

  • ต้องสร้างแอสเซต 2 ประเภท คือเท็กซ์เจอร์และ mesh
  • เท็กซ์เจอร์แต่ละชิ้นประกอบด้วย albedo map และ displacement map
  • mesh เป็น triangle mesh แบบ low-poly ที่มีการทำ texture mapping ตามปกติ
  • มีข้อจำกัดบางอย่างต่อโครงสร้างของ mesh และการแมปเท็กซ์เจอร์

ข้อดีของแนวทางนี้

  • สามารถสร้างคอนเทนต์ได้ด้วยเวิร์กโฟลว์ที่คุ้นเคย
  • เนื่องจากสร้างฉากด้วย triangle mesh จึงไม่จำเป็นต้องเขียน physics engine หรือ character controller ขึ้นใหม่
  • ระบบเกมเพลย์ส่วนใหญ่ไม่จำเป็นต้องสนใจรายละเอียดระดับ voxel

แผนต่อจากนี้

  • ยังมีฟีเจอร์อีกมากที่สามารถเพิ่มหรือปรับปรุงในตัว renderer เองได้
  • กำลังศึกษาวิธีรวมวัตถุขนาดเล็กหรือวัตถุที่มีแอนิเมชันเข้ามา
  • มีแผนจะปรับปรุงการทำ lighting
  • คิดว่าการนำเทคนิคการเรนเดอร์นี้ไปผสานเข้ากับเกมเป็นเส้นทางที่เป็นไปได้จริง

ความเห็นของ GN⁺

  • ความท้าทายทางเทคนิค: การรวม voxel กับ displacement mapping เป็นงานที่ยากมาก และต้องอาศัยงานระบบเฉพาะทางจำนวนมาก
  • การใช้งานจริง: เทคโนโลยีนี้มีแนวโน้มสูงที่จะผสานเข้ากับ game engine ที่มีอยู่แล้วได้ ทำให้นักพัฒนายังใช้ระบบเดิมต่อได้
  • เสน่ห์ด้านสุนทรียะ: การตีความสุนทรียะของเกม 3D ย้อนยุคใหม่ในแบบสมัยใหม่อาจดึงดูดเกมเมอร์จำนวนมาก
  • ข้อพิจารณาด้านประสิทธิภาพ: เทคโนโลยีการเรนเดอร์นี้ยังต้องการการปรับแต่งประสิทธิภาพ โดยเฉพาะอย่างยิ่งสำหรับการเรนเดอร์แบบเรียลไทม์
  • ศักยภาพในอนาคต: เทคโนโลยีนี้อาจนำไปใช้ได้กับเกมหลากหลายแนว และน่าจะมีประโยชน์อย่างยิ่งสำหรับนักพัฒนาเกมอินดี้

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น