
เมื่อวันที่ 10 พฤศจิกายน 2000 Microsoft ได้เปิดตัว DirectX 8.0 อย่างเป็นทางการ ซึ่งถือเป็นก้าวสำคัญของวงการกราฟิกคอมพิวเตอร์ แม้ว่าจะไม่ได้มี Tech Demo ระดับตำนานแบบ Unreal หรือ Crysis แต่ DirectX 8 คือการปฏิวัติแนวคิดของการเรนเดอร์กราฟิกเกมพีซีจากพื้นฐาน
ก่อนหน้านั้น GPU ยังคงทำงานแบบ “fixed-function” ที่ไม่เปิดโอกาสให้นักพัฒนาเขียนโค้ดควบคุมพฤติกรรมการแสดงผลได้โดยตรง แต่ DirectX8 ได้เปลี่ยนทั้งหมดด้วยการนำเสนอระบบ programmable shader ซึ่งกลายเป็นรากฐานของการเรนเดอร์แบบสมัยใหม่ที่ใช้กันจนถึงปัจจุบัน
ก่อนยุค DirectX 8 — เมื่อทุกอย่างถูกล็อกไว้ในฮาร์ดแวร์
ก่อนปี 2000 การประมวลผลกราฟิกในเกมใช้สิ่งที่เรียกว่า fixed-function pipeline ซึ่งหมายถึงทุกขั้นตอนของการเรนเดอร์ถูกกำหนดไว้ล่วงหน้าในตัว GPU ไม่สามารถแก้ไขได้
- การคำนวณแสง (lighting equation)
- การแปลงพิกัดวัตถุ (transformation)
- การผสมผสานเท็กซ์เจอร์ (texture blending)
ทั้งหมดนี้เป็นสูตรคงที่ นักพัฒนาทำได้เพียง “ปรับค่า” ตามที่ API อนุญาต เช่น เปลี่ยนความเข้มของแสง หรือ ระดับโปร่งใสของวัตถุ แต่ไม่สามารถเขียนโค้ดใหม่เพื่อสร้างเทคนิคเฉพาะตัวได้
ดังนั้น ถ้าอยากได้เอฟเฟกต์อย่าง “รีเฟล็กชันแบบเรียลไทม์” ก็ต้องใช้ภาพ environment map หลอกแทน เพราะ GPU ยุคนั้นไม่สามารถคำนวณแสงสะท้อนจริงได้
จุดเปลี่ยนของ DirectX 8 — Programmable Shaders
สิ่งที่ทำให้ DirectX8 แตกต่างคือการเพิ่ม Shader Model 1.0 ซึ่งเปิดทางให้ GPU กลายเป็น “เครื่องประมวลผลที่เขียนโปรแกรมได้”
โดยมีองค์ประกอบหลักสองอย่างคือ
- Vertex Shader 1.0 : ให้นักพัฒนาสามารถเขียนโค้ดเพื่อควบคุมการเคลื่อนที่ ตำแหน่ง หรือการแปลงของแต่ละ vertex ได้ เช่น ปรับการสั่นของผิวน้ำ หรือ ทำ wave effect บนผ้าในเกม
- Pixel Shader 1.0 : ควบคุมสีและลักษณะของแต่ละพิกเซลบนหน้าจอ เช่น การสร้าง bump mapping, specular highlight หรือ refraction (หักเหแสง)
ก่อนหน้านี้นักพัฒนาไม่มีสิทธิเข้าถึงระดับพิกเซลหรือเวอร์เท็กซ์แบบนี้ แต่เมื่อมี shader พวกเขาสามารถ “เขียนคณิตศาสตร์ของแสง” ขึ้นใหม่ได้เอง
นี่คือจุดเริ่มต้นของแนวคิดว่า GPU คือ programmable processor ไม่ใช่แค่ชิปที่แสดงภาพตามคำสั่งตายตัวอีกต่อไป
ตัวอย่างเกมยุคต้นที่ใช้ประโยชน์จาก DirectX 8
หลังจาก DirectX8 เปิดตัว NVIDIA ก็ได้ปล่อย GeForce 3 ออกมา ซึ่งเป็น GPU รุ่นแรกที่รองรับ programmable shader อย่างแท้จริง ภายในมีหน่วย shader-execution เฉพาะทาง
จากนั้นเกมอย่าง Morrowind (2002) และ Splinter Cell (2003) เริ่มใช้เทคโนโลยีนี้สร้างเอฟเฟกต์อย่าง per-pixel lighting และ dynamic shadow ได้อย่างสมจริง ถือเป็นก้าวสำคัญของกราฟิก 3D ในยุคนั้น
แม้แต่ Xbox รุ่นแรก ของ Microsoft เองก็ใช้ GPU ที่อิงกับ DirectX8 เป็นพื้นฐาน ทำให้แนวคิด shader กลายเป็นมาตรฐานทั้งในพีซีและคอนโซล
การทำงานของ Vertex Shader และ Pixel Shader
Vertex Shader
Vertex Shader คือขั้นตอนแรกของ rendering pipeline ที่ใช้คำนวณตำแหน่ง และ การแปลง (transformation) ของแต่ละจุด 3D ในฉาก
- รับข้อมูลจาก model เช่น ตำแหน่ง (normal, UV)
- ประมวลผล matrix เช่น world / view / projection
- สามารถเพิ่มการเคลื่อนไหวเฉพาะตัว เช่น การโบกของธง หรือ คลื่นทะเล
- ส่งผลลัพธ์ต่อไปยังขั้นตอนถัดไป คือ Rasterizer
Pixel Shader
Pixel Shader จะทำงานหลังจากการ rasterize (แปลงพิกัด 3D เป็น 2D พิกเซล) มีหน้าที่คำนวณสีสุดท้ายของแต่ละพิกเซลบนหน้าจอ
- รับข้อมูลจาก interpolated vertex data
- คำนวณแสง (diffuse/specular) และเงา
- ใช้ texture หรือ normal map เพื่อเพิ่มรายละเอียด
- สามารถสร้างเอฟเฟกต์พิเศษ เช่น blur, bloom, motion blur, depth of field
เมื่อรวมกันแล้ว Vertex Shader กับ Pixel Shader คือรากฐานของเอฟเฟกต์ทุกอย่างที่เราเห็นในเกมยุคใหม่ ตั้งแต่การเคลื่อนไหวของน้ำ ไปจนถึง reflections บนพื้นกระจก
วิวัฒนาการของ Shader Model (1.0 → 6.0)
| รุ่น | ปีเปิดตัว | ฟีเจอร์หลัก | ตัวอย่าง API / GPU ที่รองรับ |
|---|---|---|---|
| 1.0 – 1.4 | 2000–2002 | Vertex/Pixel Shader พื้นฐาน, แสงและเงาแบบคำนวณเอง | DirectX 8 / GeForce 3 , Radeon 8500 |
| 2.0 | 2003 | เพิ่มคำสั่งซับซ้อน และ looping / branching | DirectX 9 / GeForce FX , Radeon 9700 |
| 3.0 | 2004 | Dynamic branching เต็มรูปแบบ, texture lookup ใน vertex | GeForce 6 / Radeon X1000 |
| 4.0 – 4.1 | 2006–2007 | Unified Shader Architecture (ทุกหน่วยประมวลผลทำได้ทั้ง vertex/pixel) | DirectX 10 / GeForce 8 , Radeon HD 2000 |
| 5.0 | 2009 | Tessellation, Compute Shader สำหรับ GPGPU งานทั่วไป | DirectX 11 / GeForce GTX 400 , Radeon HD 5000 |
| 6.0 – 6.8 | 2015–2024 | Ray Tracing, Mesh Shader, Variable Rate Shading (VRS) | DirectX 12 / RTX , RDNA 2–3 , Intel Xe series |
จากตารางจะเห็นว่าหลัง DirectX8 ทุกเวอร์ชันของ Shader Model ได้ต่อยอดแนวคิดเดิมอย่างต่อเนื่อง — ตั้งแต่การเขียนสมการแสงเอง ไปจนถึงการสร้างแสงสะท้อนจริงด้วย ray tracing ในปัจจุบัน
ทำไม DirectX 8 ยังสำคัญในวันนี้
แม้ตอนนี้เราจะอยู่ในยุคของ DirectX 12 หรือ Vulkan ที่รองรับการเรนเดอร์ขั้นสูง แต่แนวคิด “programmable shader” ที่เริ่มต้นจาก DirectX8 ยังคงเป็นพื้นฐานของทุกกราฟิก API ในปัจจุบัน
ไม่ว่าจะเป็นเกม AAA อย่าง Cyberpunk 2077 หรือ เกมมือถือ อย่าง Genshin Impact ทุกเกมล้วนใช้ shader ที่สืบทอดมาจากแนวคิดเดียวกันคือ “ให้นักพัฒนาเขียนโค้ดควบคุมแสงและวัตถุด้วยตนเอง”
สรุป
- DirectX 8 คือจุดเริ่มต้นของยุค programmable shader ที่เปลี่ยน GPU ให้กลายเป็นหน่วยประมวลผลอิสระ
- แนวคิดนี้นำไปสู่การเกิดของ Shader Model รุ่นต่อมา และเทคโนโลยี กราฟิก ขั้นสูงในยุคปัจจุบัน
- ทุกเกม ทุกเครื่อง ที่คุณเล่นวันนี้ ไม่ว่าจะพีซี คอนโซล หรือสมาร์ตโฟน ต่างมีรากฐานอยู่บนแนวคิดเดียวกับ DirectX8 เมื่อ 25 ปีก่อน
ที่มา: tomshardware




