DirectX 12: นวัตกรรมเกมพลิกโลก

head

บทความนี้ได้รับการเผยแพร่ครั้งแรกในนิตยสาร Future Gamer ฉบับที่ 211 ประจำเดือนพฤษภาคม 2557

เมื่อเร็วๆ นี้ ผมเพิ่งเขียนบทความเกี่ยวกับ Mantle ซึ่งเป็นเอพีไอของ AMD ที่เปิดโอกาสให้นักพัฒนาเกมพีซีรีดประสิทธิภาพออกมาจากชิพกราฟิกได้มากขึ้นด้วยการเข้าถึงฮาร์ดแวร์ส่วนล่าง (low level) แบบเดียวกับที่เกมคอนโซลสามารถทำได้ โดยในส่วนท้ายของบทความผมได้ทิ้งท้ายไว้ว่า Microsoft อาจพัฒนา DirectX เวอร์ชันใหม่ที่มีคุณสมบัติคล้ายกันออกมาบ้าง หลังจากส่งบทความดังกล่าวไปเพียงไม่กี่สัปดาห์ DirectX 12 ก็ได้รับการเปิดตัวภายในงาน Game Developers Conference (GDC) 2014 ที่มีขึ้น ณ เมืองซานฟรานซิสโก สหรัฐอเมริกา ซึ่งจากชื่องานก็บอกอยู่แล้วจุดเด่นของเอพีไอใหม่นี้ก็คือการเล่นเกมแน่นอน

DirectX คืออะไร

ก่อนที่จะพูดถึงความหมายของ DirectX ผมขอย้อนอดีตสักเล็กน้อย ในสมัยก่อนที่จะมีเอพีไอกลางอย่าง DirectX นั้น นักเขียนโปรแกรมต้องทำงานหามรุ่งหามค่ำ (ซึ่งทุกวันนี้ก็ยังเป็นอยู่ :P) ในการทำให้โปรแกรมของตนสามารถทำงานเข้ากันได้กับฮาร์ดแวร์ที่มีอยู่ในท้องตลาด ในยุคที่ยังไม่มีฮาร์ดแวร์มากมายเหมือนในปัจจุบันก็มีความเป็นไปได้ที่จะทำให้สำเร็จ แต่เมื่อมีฮาร์ดแวร์หลายประเภทมากขึ้นโปรแกรมเมอร์ก็ต้องทำงานหนักขึ้นหลายเท่าตัวเพราะต้องเขียนคำสั่งให้ซอฟแวร์ทำงานเข้ากับฮาร์ดแวร์ได้ ไม่เพียงเท่านั้น เพราะผู้ใช้งานทั่วไปก็ยังต้องมาเสียเวลาปรับตั้งค่าความเข้ากันได้ต่างๆ ก่อนใช้งานอีกด้วย ใครที่เกิดทันเล่นเกมยุค MS-DOS น่าจะยังพอจำช่วงเวลาที่เราต้องมานั่งปรับค่ารายละเอียดการ์ดกราฟิก การ์ดเสียง ฯลฯ ก่อนเริ่มเล่นได้เป็นอย่างดีว่าเสียเวลามากขนาดไหน ไม่เหมือนในปัจจุบันที่ทุกอย่างถูกปรับให้ทำงานร่วมกันได้โดยอัตโนมัติ

เมื่อเป็นเช่นนี้ Microsoft จึงได้พัฒนา DirectX โดยมีวัตถุประสงค์เพื่อช่วยอำนวยความสะดวกให้กับนักเขียนโปรแกรม (เช่น เกม) ในการส่งคำสั่งไปยังอุปกรณ์ฮาร์ดแวร์ประมวลผล (เช่น การ์ดกราฟิก) หรือพูดง่ายๆ ก็คือเป็นเหมือนกับตัวกลางที่ประสานการทำงานระหว่างซอฟแวร์กับฮาร์ดแวร์ให้คุยกันรู้เรื่อง จึงได้รับความนิยมใช้ในการพัฒนาวิดีโอเกมและเกมคอมพิวเตอร์ที่รันบนแพลตฟอร์มต่างๆ ของ Microsoft ทั้ง Windows และ Xbox ทีนี้ทั้งโปรแกรมเมอร์และนักพัฒนาฮาร์ดแวร์ก็เพียงทำให้ผลิตภัณฑ์ของตนรองรับ DirectX ก็มั่นใจได้แล้วว่าจะสามารถทำงานเข้ากันได้

โดยทั่วไปแล้ว DirectX ประกอบไปด้วยองค์ประกอบ 5 ส่วน คือ 1. DirectDraw สำหรับการวาดภาพ 2 มิติ 2. Direct3D สำหรับการวาดภาพ 3 มิติ 3. DirectInput สำหรับรับข้อมูลจากผู้ใช้ผ่านอุปกรณ์ต่างๆ เช่น เมาส์และคีย์บอร์ด 4. DirectSound สำหรับประมวลผลเสียง และ 5. DirectPlay สำหรับระบบผู้เล่นหลายคน (multiplayers) ผ่านเครือข่าย ซึ่งแน่นอนว่าองค์ประกอบที่ได้รับการพูดถึงมากที่สุด (และเรียกความสนใจจากเกมเมอร์มากที่สุด) ก็คือ Direct3D ที่เวอร์ชันหลังๆ มีส่วนในการกำหนดมาตรฐานคุณสมบัติการแสดงผลภาพ 3 มิติของเกมในช่วงเวลานั้นๆ ไปโดยปริยาย ยกตัวอย่างเช่น คุณสมบัติ Tessellation ที่มาพร้อมกับ DirectX 11 ทำให้นักเขียนเกมและบริษัทฮาร์ดแวร์ต้องพัฒนาผลิตภัณฑ์ของตนให้รองรับ DirectX เวอร์ชันดังกล่าวเท่านั้นจึงจะสามารถใช้งาน Tessellation ได้

Unigine Heaven หนึ่งในซอฟแวร์วัดประสิทธิภาพ DirectX 11 ที่ได้รับความนิยม
Unigine Heaven หนึ่งในซอฟแวร์วัดประสิทธิภาพ DirectX 11 ที่ได้รับความนิยม

จุดด้อยบางประการของ DirectX

มีผู้เปรียบ DirectX ว่าเป็นเอพีไอที่ “รู้เหมือนเป็ด” เพราะถึงแม้จะเปิดโอกาสให้ซอฟแวร์คุยกับฮาร์ดแวร์หลากหลายประเภทได้รู้เรื่องก็จริง แต่ก็ไม่สามารถเข้าถึงแก่นกลางของฮาร์ดแวร์เหล่านั้นได้ ผลที่ตามมาก็คือโปรแกรมเมอร์ไม่สามารถรีดศักยภาพของฮาร์ดแวร์ออกมาได้อย่างเต็มที่ ซึ่งจะว่าไปก็สอดรับกับธรรมชาติของวงการฮาร์ดแวร์พีซีที่มอบตัวเลือกอันหลากหลายให้กับผู้บริโภค ดังนั้นก็คงเป็นไปไม่ได้เลยที่จะพัฒนาเอพีไอให้เข้าถึงแก่นของฮาร์ดแวร์ได้ทุกชิ้น ไม่เหมือนกับเครื่องเกมคอนโซลที่มีฮาร์ดแวร์หลักอยู่เพียงชุดเดียว จึงทำให้นักพัฒนาเกมสามารถรีดขุมกำลังของฮาร์ดแวร์ชุดนั้นๆ ออกมาได้ดีกว่า

ช่องว่างดังกล่าวเปิดโอกาสให้ผู้ผลิตฮาร์ดแวร์พากันพัฒนาเอพีไอที่ทำงานเฉพาะกับฮาร์ดแวร์ของตนออกมาแข่งกับ DirectX อยู่เป็นระยะ ตัวอย่างในอดีตที่เห็นได้ชัดเจนก็คือ Glide ของ 3dfx ที่ได้รับการพัฒนาขึ้นเพื่อให้โปรแกรมเมอร์เค้นเอาศักยภาพของการ์ดกราฟิก Voodoo ออกมาได้อย่างเต็มที่ ผลก็คือเกมที่ใช้ Glide เล่นบนการ์ดกราฟิก Voodoo มีภาพที่สวยงามและเกมการเล่นที่ไหลลื่นมากกว่า Direct3D หลายเท่า สำหรับตัวอย่างในปัจจุบันก็คือ Mantle ของ AMD ที่เพิ่งเปิดตัวไปได้ไม่นาน โดยคำมั่นที่ AMD ให้ไว้ก็คือประสิทธิภาพการเล่นเกมที่เพิ่มมากขึ้น แต่มีข้อจำกัดเช่นเดียวกับ Glide ก็คือต้องใช้งานร่วมกับการ์ดกราฟิกของ AMD เท่านั้น และเกมที่รองรับในปัจจุบันยังคงมีน้อยอยู่

ภาพเกม Unreal Tournament ที่รันบนการ์ดกราฟิก 3dfx เมื่อก่อนได้ภาพขนาดนี้เราก็ร้องอื้อหือแล้ว
ภาพเกม Unreal Tournament ที่รันบนการ์ดกราฟิก 3dfx เมื่อก่อนได้ภาพขนาดนี้เราก็ร้องอื้อหือแล้ว

ขอแนะนำ DirectX 12 

ข้อจำกัดดังกล่าวนี่เองที่เปิดช่องให้ DirectX ได้รับการพัฒนาขึ้นใหม่เพื่อมาอุดช่องว่างดังกล่าวที่ขาดหายไป โดยในงานเปิดตัวนั้น Microsoft ได้กล่าวถึงคุณสมบัติใหม่ในส่วนของ Direct3D เป็นหลัก (ก็งานรวมพลคนทำเกมนี่เนอะ) ซึ่งมีรายละเอียดที่น่าสนใจดังนี้

เริ่มจากคุณสมบัติที่ทำให้โปรแกรมเมอร์สามารถติดต่อกับฮาร์ดแวร์ส่วนล่างและเข้าไปจัดการทรัพยากรต่างๆ ได้ดีขึ้นเช่นเดียวกับคอนโซล ซึ่งคล้ายคลึงกับการทำงานของ Mantle เพียงแต่จะไม่จำกัดอยู่ที่ฮาร์ดแวร์ค่ายใดค่ายหนึ่งอีกต่อไป ตลอดจนซอฟแวร์ต่างๆ จะสามารถใช้งานแกนประมวลผลที่มีอยู่หลายแกนของซีพียูได้ดีขึ้น Microsoft ได้แสดงตัวอย่างการทำงานร่วมกับ 3DMark โดยเปรียบเทียบให้เห็นเมื่อใช้งานร่วมกับ DirectX 11 ซึ่งเห็นได้ชัดเจนว่า ใน DirectX 11 นั้นภาระการทำงานจะตกไปอยู่กับแกนซีพียูเพียงแกนเดียว แต่กับ DirectX 12 นั้นจะถูกกระจายให้ทำงานเท่าๆ กันทั่วซีพียูทั้ง 4 แกน

เปรียบเทียบประสิทธิภาพ Direct3D 11 (บน) กับ Direct3D 12 (ล่าง)
เปรียบเทียบประสิทธิภาพ Direct3D 11 (บน) กับ Direct3D 12 (ล่าง)

นอกจากโปรแกรมทดสอบแล้ว ภายในงานยังได้มีการแสดงการเล่นเกมจริงด้วยโดยใช้เกม Forza Motorsport 5 Tech Demo ที่รันบนการ์ดกราฟิก NVIDIA GeForce Titan Black อีกด้วย โดยบริษัท Turn 10 Studios ผู้พัฒนาเกมขึ้นกล่าวบนเวทีว่า ได้เคยพยายามพอร์ตเกมดังกล่าวจาก Xbox One มาลงบนพีซีที่ใช้ DirectX 11 แล้ว แต่ปรากฏว่าเกมเพลย์ไม่ไหลลื่นเท่ากับบนคอนโซล แต่พอมาลองใช้ DirectX 12 แล้วก็พบว่าเฟรมเรทที่ได้นั้นดีกว่ามาก เพราะเครื่องมือใหม่ที่มาพร้อมกันนั้นเปิดโอกาสให้โปรแกรมเมอร์เข้าถึงแก่นของฮาร์ดแวร์ได้ไม่แตกต่างจากบนคอนโซลเลย อีกทั้ง Microsoft ยังบอกอีกว่า ชุดคำสั่งการเรนเดอร์ใหม่ๆ จะทำให้นักพัฒนาสามารถใส่วัตถุต่างๆ ลงไปในฉากได้มากขึ้น ทำให้ได้บรรยากาศที่สมจริงขึ้นไปขั้น

นอกจากนี้ DirectX 12 จะไม่เพียงแต่ทำงานบนพีซีได้เท่านั้น แต่ได้รับการออกแบบให้รองรับอุปกรณ์ไอทีต่างๆ ของ Microsoft ทั้งหมดอย่างครบถ้วน ไม่ว่าจะเป็นสมาร์ทโฟน แท็บเล็ต และ Xbox One เรียกได้ว่าเป็นเอพีไอครอบจักรวาลซึ่งเป็นความฝันสำหรับนักพัฒนาเลยทีเดียว สำหรับเกมเมอร์ทั่วไปอย่างเราก็หมายความว่า ในอนาคตอาจมีการพอร์ตเกมสนุกๆ จาก Xbox One มาสู่พีซีมากขึ้น เพราะเครื่องมือต่างๆ มอบความเป็นไปได้ให้มากกว่าที่เคย

ภาพจากเกม Forza Motorsport 5 หวังว่าพอมาลงพีซีแล้วจะได้ภาพสวยขนาดนี้นะ
ภาพจากเกม Forza Motorsport 5 หวังว่าพอมาลงพีซีแล้วจะได้ภาพสวยขนาดนี้นะ

แล้วจะได้ใช้งานเมื่อไร ฮาร์ดแวร์ที่มีอยู่จะรองรับไหม?

เนื่องจากเพิ่งจะอยู่ในช่วงตั้งไข่ Microsoft จึงวางเป้าไว้ว่าเกมที่รองรับ DirectX 12 เกมแรกจะแล้วเสร็จในช่วงปลายปี 2015 โน่น แต่ช่วงก่อนหน้านั้นก็คงจะทยอยเปิดตัวคุณสมบัติใหม่ออกมาเป็นระยะ แต่ข่าวดีก็คือ ฮาร์ดแวร์ต่างๆ ในปัจจุบันจะสามารถเรียกใช้งานคุณสมบัติที่มีอยู่ใน DirectX 12 ได้ ยกตัวอย่างเช่น โปรเซสเซอร์ Intel Core รุ่นที่สี่หรือ Haswell เป็นต้นไป และการ์ดกราฟิก NVIDIA ที่ใช้สถาปัตยกรรม Fermi เรื่อยมาจนถึงปัจจุบัน จึงทำให้ผู้ที่มีการ์ดกราฟิกตั้งแต่ GeForce 400 ขึ้นไปเป็นต้นไปก็สามารถใช้งานได้ สำหรับ AMD ก็ต้องเป็นการ์ดที่ใช้สถาปัตยกรรม Graphics Core Next (GCN) เป็นต้นไป (Radeon HD 7000 หรือใหม่กว่า) โดย Microsoft ประมาณการณ์ว่า พีซีกว่าร้อยละ 50 ในปัจจุบันจะสามารถรองรับ DirectX 12 ได้

แต่ที่น่าสังเกตก็คือ Microsoft ยังไม่ได้เอ่ยปากว่า DirectX 12 จะรองรับ Windows 7 ด้วยหรือไม่ จึงทำให้มีการคาดเดาว่าอาจจะมีการสงวนไว้เป็น exclusive สำหรับ Windows 9 ที่น่าจะวางจำหน่ายในช่วงเวลาใกล้เคียงกันเหมือนกับที่เคยสงวน DirectX 10 ไว้สำหรับ Vista หรือไม่ คงต้องติดตามดูกันต่อไปครับ

สรุป

ปัจจุบัน DirectX ได้กลายมาเป็นมาตรฐานของเทคโนโลยีหลายอย่างในเกมสามมิติไปเสียแล้ว ถึงแม้จะเคยมีจุดด้อยตรงที่ไม่สามารถบีบคั้นเอาศักยภาพของฮาร์ดแวร์มาใช้งานได้อย่างเต็มที่ แต่ด้วยการมาถึงของ DirectX 12 ก็อาจทำให้ข้อจำกัดดังกล่าวถูกทำลายลง ผลที่คาดว่าน่าจะได้รับคือเกมเพลย์ที่ไหลลื่นขึ้น และ (หวังว่า) เราคงไม่ต้องเปลี่ยนการ์ดกราฟิกบ่อยครั้งอีกต่อไป ตอนที่ผมกำลังเขียนบทความอยู่ รายละเอียดต่างๆ เกี่ยวกับเอพีไอนี้ยังมีอยู่น้อยมาก คิดซะว่าเป็นการพรีวิวเรียกน้ำย่อยก่อนที่อาหารจานหลักจะมาก็แล้วกันนะครับ

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s