GoC32 Side Story “How to fail อย่าง Saturn” Part2

ทีนี้เรามาพูดถึงปัญหาในส่วนประมวลผลกราฟฟิกหัวข้อที่ 2 กัน ซึ่งเป็นปัญหาที่สามารถสังเกตเห็นได้แม้แต่กับตัวผู้เล่นเองว่ามันมีอะไรผิดปกติ
นั้นคือการแสดงผลกราฟฟิกแบบโปร่งใสหรือ Transparent Effect
 
สำหรับคนที่ต้องการลงลึกในเรื่องราวกราฟฟิกของ Saturn มากกว่านี้สามารถเข้าไปชม VDO ของ Low Score Boy ได้ใน Link ข้างล่าง (ภาษาอังกฤษสำเนียงญี่ปุ่น มีซับภาษาอังกฤษให้)
https://www.youtube.com/watch?v=f_OchOV_WDg
 

 
Transparent Effect คือการทำให้กราฟฟิกของสิ่งที่ต้องการนั้นโปร่งใสจนสามารถมองทะลุไปยังสิ่งที่อยู่ข้างหลังได้ เริ่มพบเห็นการใช้ Effect นี้กับเกมคอนโซลในยุคหลัง ๆ บนเครื่อง Super Nintendo (SNES) หรือ Super Famicom แต่ก็ยังไม่ใช่กราฟฟิกโปร่งใสของจริง แต่เป็นเพียงทำให้เหมือนโปร่งใส
 
ตัวอย่าง Effect โปร่งใสในเกม SNES ก็เช่น Secret of Mana หรือชื่อญี่ปุ่นว่า Seiken Densetsu 2 รูปทางซ้ายตรงกล่องคำพูดจะเห็นว่าโปร่งใสแต่จริง ๆ แล้วคือสีทึบที่เหมือนเจาะรูพรุนไว้เต็มพื้นที่ ทำให้เหมือนว่าโปร่งใสมองทะลุได้เช่นเดียวกับรูปทางขวามือที่น้ำตกโปร่งใสจนเห็นหินข้างหลังได้
เทคนิคนี้ถูกเรียกว่า Color Averaging โดยมีเคล็ดลับคือการเอาภาพ 2 ภาพมาซ้อนกันแล้วทำให้ภาพแต่ละภาพแสดงผลออกมาแค่ครึ่งเดียวแบบสลับกันคนละพิกเซล เทคนิคนี้ยังคงมีการใช้งานจนถึงปัจจุบันโดยมักใช้กับตอนที่ตัวละครเข้าใกล้หน้าจอมากเกินไปเพื่อให้ผู้เล่นยังเห็นภาพได้โดยไม่ถูกตัวละครบัง 
 

 
แล้ว Transparent Effect นี้มาเกี่ยวข้องกับ Saturn ยังไง Saturn ทำ Effect โปร่งใสไม่ได้รึ
ก็ไม่ใช่ Saturn นั้นมีความสามารถในการสร้าง Transparent Effect อย่างไม่ต้องสงสัย
แต่ปัญหาคือการออกแบบ 2 GPU และกระบวนการสร้างกราฟฟิกที่ทำให้ Transparent Effect มีปัญหา
ทั้งในการพัฒนาเกมและภาพที่ออกมาสู่สายตาผู้เล่น
 
ในรูปคือภาพจากเกม Guardian Heroes จะเห็นได้ว่าผ้าคลุมของตัวละครนั้นโปร่งใสมองทะลุได้
ขอให้ผู้อ่านจำภาพตัวละครนี้ไว้ก่อน
 

 
กระบวนการสร้างกราฟฟิกของ Saturn นั้น งานจะถูกแบ่งไปยัง GPU  2 ตัว โดยตัวแรก VDP 1 นั้นรับงาน 3D และรวมถึงกราฟฟิกที่มีการเคลื่อนไหวปริมาณมากอีกด้วย เช่น ตัวละครผู้เล่น หรือ ตัวละครศัตรู เป็นต้น ส่วน VDP 2 นั้นจะรับผิดชอบงาน 2D ซึ่งรวมถึงกราฟฟิกฉากและ Background ด้วยโดยฉากหลังนั้น VDP2 สามารถกำหนด Layer ให้ได้สูงสุด 5 ชั้น
 
แนวคิดคือ VDP1 เขียนตัวละคร VDP2 เขียนฉาก เมื่อ VDP1 เขียนเสร็จก็ส่งให้ VDP2 เอาไปประกอบกับฉากที่ตนเองเขียนและส่งออกจอ
 
เรียบง่ายใช่ไหม แต่ปัญหามันก็อยู่ที่กระบวนการนี่เอง
 

 
เพื่อให้เข้าใจได้ง่ายขึ้นเราจะกลับมาที่บริษัท Saturn กราฟฟิกกันอีกครั้ง  นาย VDP 1 ก็วาดงาน 3D และตัวละครรวมถึงอนิเมชั่นกราฟฟิกที่มีการเคลื่อนไหวปริมาณมากไป ส่วน VDP2 รับงาน 2D เน้นไปที่ Background และฉากหลังรวมถึงเป็นคนรวบรวมงานส่ง Final
 
VDP 1 พอวาดงานส่วนของตนเองรวมถึงกำหนดค่าว่ากราฟฟิกตัวไหนจะต้องโปร่งใสเสร็จก็ส่งไปเก็บที่ Frame Buffer รอให้ VDP2 เอาไปใช้
 
ซึ่งปกติแล้ว VDP2 ที่กำลังวาดฉากอยู่ สมมุติว่าใช้ Photoshop แล้วกัน ก็ต้องใช้ Photoshop เปิดไฟล์แล้วเอากราฟฟิกของ VDP1 จาก Buffer แปะลงไปใน Layer ตรงตำแหน่งที่กำหนดไว้ Save แล้วส่งไปเก็บที่ Buffer หรือแสดงผลที่หน้าจอ
แต่สิ่งที่ VDP2 ทำคือไปเปิดไฟล์กราฟฟิกจาก VDP1 ด้วย Photoshop แล้ว Copy ด้วย magic wand วางแปะลงไปไฟล์ฉากหลัง ค่าความทึบหรือ Opacity ก็ตั้ง 100 เต็ม
 
ขอเชิญผู้อ่านที่ทำงานด้านกราฟฟิกในตำแหน่งเช่น Art Director หรือ AE ให้ความเห็นกับการทำงาน
 

 
อันที่จริงปัญหานี้เกิดจากการตั้งค่า priority ของ Layer ที่ VDP2 มีทั้งหมด 5 ระดับชั้น เพราะกราฟฟิกที่สร้างจาก VDP1 ไม่มีการกำหนดค่าตรงนี้ VDP2 เลยใช้ค่าวัตถุเป็นทึบซึ่งเป็นค่าตั้งต้น
 
นี่ทำให้ Effect โปร่งใสที่ VDP1 ใส่มานั้นหายไปและทำให้เกิดปัญหาเนื่องจากกราฟิกที่ควรจะโปร่งใสเห็นทะลุกลับทึบ ทำให้ผู้เล่นมองไม่เห็นฉากหรือตัวละครที่อยู่ข้างหลัง จากภาพตัวอย่างของเกม Guardian Heroes ตรงจุดที่ลูกศรชี้จะเห็นได้ว่าผ้าคลุมโปร่งใสของตัวละครนั้นกลืนทับส่วนหนึ่งของตัวละครศัตรูไป
 
นี่อาจจะเป็นรายละเอียดเล็ก ๆ ที่พอจะหลุดสายตาผู้เล่นหรือพอจะมองข้ามไปได้บ้าง แต่ถ้า Effect นี้ถูกใช้กับวัตถุที่ใหญ่และเห็นได้ชัดล่ะ
 

 
ตัวอย่างปัญหาของ Effect โปร่งแสงนั้นถูกเห็นได้ชัดที่สุดในเกม Rock Man X4 กับฉากแรกของเกมโดยในฉากนี้จะมี Sport Light เป็น Effect ประกอบฉากฉายอยู่
ซึ่งใน Version ps1 นั้นไม่มีปัญหา แต่พอมา Saturn กลายเป็นว่า Sport Light กลายเป็นสีทึบบังฉากหลังหมดแล้วดูเหมือนจะบังแม้กระทั้งตัวละครเลยด้วยซึ่งปล่อยออกไปไม่ได้ มันน่าเกลียดมาก
 
วิธีแก้ไขปัญหานี้นั้นแตกต่างออกไปตามแต่ละผู้พัฒนา บ้างก็ปล่อยเลยตามเลย บ้างก็ลงทุนคิดหาวิธีที่ซับซ้อนมาแก้ปัญหาได้สำเร็จ สำหรับ Rock Man X4 นั้น Capcom ผู้ผลิตคงไม่มีทางเลือกจริง ๆ เลยใช้วิธีแบบดั่งเดิมเลยคือใช้เทคนิค Color Averaging อย่างที่กล่าวไปแล้วแต่ปัญหาคือ กราฟฟิกที่ได้มันไม่เนียน ไม่ว่าใครมาเห็นก็ต้องอะใจแน่ ๆ ว่ามันมีอะไรไม่ถูกต้อง 
 

 
นี่เป็นส่วนหนึ่งที่ทำให้ผู้เล่นเริ่มตั้งคำถามกับ Saturn ว่านี่เป็นเครื่องที่ดีจริง ๆ หรือ กับอีแค่กราฟฟิกโปร่งใสซึ่งถือเป็นกราฟฟิกพื้นฐานยังทำได้แค่นี้ ส่วนผู้พัฒนาเกมบน Saturn เจอว่ากราฟฟิกพื้นฐานยังมีปัญหาขนาดนี้แล้วกราฟิกแบบก้าวหน้าจะขนาดไหนเลยย้ายไปสร้างเกมกับ ps1 ที่พัฒนาเกมได้ง่ายกว่าแทน ส่วน N64 ไม่ต้องพูดถึงเพราะมีข้อจำกัดด้านพื้นที่ความจุที่ต่ำกว่า CD มาก
 
ในที่สุด Saturn ก็ยุติสายการผลิตสุดท้ายไปในปี 2000 และกลายเป็นโจทย์ในการพัฒนาเครื่องรุ่นใหม่ “ผู้คว้าฝัน” ที่เป็นเครื่องหมายของการไถ่บาปในสิ่งที่ SEGA ปล่อยให้เกิดขึ้นกับ Saturn 
 

 
 
ปล.ตอนนี้ผมได้เปิด Facebook Page “บทความตามใจฉัน” 
โดยบทความจะหลายหลากคละประเภทกันไปความตามความสนใจนั้นขณะนั้น ถ้าสนใจก็กดติดตามได้ครับ
https://www.facebook.com/uptomejournal/
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่