A.A.C ตอนที่ 8 Professional Graphics ภาคแรก

API คืออะไร

ผมขออธิบายในภาษาชาวบ้านก็แล้วกันนะครับ API คือตัวที่กำหนดมาตรฐานการเชื่อมต่อ กับ Application ต่างๆ ครับ (หากงงก็ไม่เป็นไรครับ เดียวผมมีตัวอย่างให้ดู)

ตัวอย่าง

หากเรามี Application A และต้องการให้มันทำการเชื่อมต่อกับ Application B เราจะต้องทราบวิธีการเชื่อมของ Application B ว่ามีวิธีการอย่างไรบ้าง ซึ่งวิธีการเหล่านั้นเราเรียกว่า API นั้นเองครับ

ตัวอย่าง

เช่น หากเราเป็นนักพัฒนาเกม 3D และเราต้องการให้ กราฟิกชิพ (GPU) แสดง Effect ต่างๆออกมา เราก็ใช้ชุดคำสั่งที่อยู่ใน OpenGL หรือ Direct3D ไปสั่งให้ GPU แสดง Effect ออกมา ซึ่ง OpenGL และ Direct3D ก็คือ API ที่ใช้เชื่อมต่อระหว่าง เกม 3D และ GPU นั้นเองครับ

00000

OpenGL และ Direct3D ต่างกันอย่างไร

1. ระบบปฏิบัติการที่รองรับ

a. OpenGL เป็น API เปิด สามารถให้ใช้ได้ทุกระบบปฏิบัติการ เช่น Wondows, UNIX, LINUX , Mac OS และอื่นๆ เป็นต้น

b. Direct3D เป็นส่วนหนึ่งของ DirectX ซึ่งเป็น API ของ Microsoft ดังนั้น Dircet3D จะสามารถใช้ได้บนระบบปฏิบัติการที่ Microsoft อนุญาตเท่านั้นซึ่งปัจจุบันนี้ ผมก็เห็นแต่ Windows เท่านั้นที่ใช้ Direct3D

2. จำนวนชุดคำสั่ง

ในระยะแรกๆนั้นจำนวนชุดคำสั่งที่ใช้ในการทำงาน 3D ของ OpenGL นั้นจะมีจำนวนชุดคำสั่งเยอะกว่า Dircet3D ครับ และ OpenGL ก็มีประสิทธิภาพในการทำงานมากกว่า Direct3D อีกด้วย ดังนั้นในสมัยก่อนเวลาทำงาน 3D ต่างๆ ไม่ว่าจะเป็น สร้างเกม 3D, การทำงานออกแบบ 3D Modeling ก็มักจะใช้ OpenGL ครับ แต่เมื่อเวลาผ่านมาจนถึงยุคที่มีการใช้ DirectX 9 จำนวนชุดคำสั่งที่อยู่ใน OpenGL และ Direct3D ก็เริ่มที่จะมีจำนวนพอๆกันแล้วครับ และDirectX 11 ที่กำลังจะออกมาในอนาคต ก็ทำท่าว่าจะเหนือกว่า OpenGL เสียด้วยครับ แต่ถึงอย่างไรก็ตามจุดแข่งของ OpenGL ก็คือ ตัว OpenGL นั้นสามารถใช้งานได้หลายระบบปฏิบัติการครับ Application 3D หลายตัวยังคงสนับสนุนการทำงานของ OpenGL อยู่ครับ

SGI (Silicon Graphics, Inc)

ในสมัยก่อนนั้น SGI เป็นบริษัทที่ผลิตเครื่องคอมพิวเตอร์ ชนิด Workstation ที่มีชื่อเสียงมากครับ SGI ผลิตทั้ง Hardwar และ Software ที่เกี่ยวกับงานกราฟฟิกครับ สมัยนั้นเครื่องคอมพิวเตอร์ของ SGI มีความโด่ดเดนทางด้านการนำไปใช้ในงานออกแบบกราฟฟิก 3D เป็นอย่างมากเลยครับ เรียกได้ว่า SGI เป็นที่ 1 ในวงการ 3D ในเวลานั้นเลยครับ

SGI เป็นผู้นำเทคโนโลยีหลายอย่างมาใช้เป็นรายแรกๆครับ เช่น

  1. SGI ได้สร้าง Geometry Engine ซึ่งเป็นหน่วยประมวลผลทางเลขาคณิต(Geomatry) ตัวแรกของโลกครับ ซึ่ง Geometry Engine นี้สามารถแบ่งเบาการทำงานของ CPU ในการประมวลผลกราฟฟิก 3D ลงไปได้มากเลยครับ ทำให้เครื่องคอมพิวเตอร์ของ SGI โดดเด่นในเรื่องการทำงานกราฟฟิกเป็นอย่างมากครับ
  2. ใช้เทคโนโลยีการประมวลแบบ 64 Bit เป็นรายแรก SGI ได้ใช้ซีพียูที่มีชื่อว่า R4000 ซึ่งเป็นซีพียูในตระกูล MIPS ครับ R4000 เป็นซีพียู RISC 64 bit ตัวแรก และในส่วนของระบบปฏิบัติการ SGI ใช้ระบบปฏิบัติการที่มีชื่อว่า IRIX 6.2 ซึ่งเป็นระบบปฏิบัติการที่รองรับการประมวลผลแบบ 64 bitเติมรูปแบบตัวแรก (IRIX เป็นระบบปฏิบัติการที่ SGI พัฒนามาจาก UNIX อีกทีนึงครับ)
  3. SGI ได้สร้าง API สำหรับงานกราฟฟิกขึ้นมาโดยใช้ชื่อว่า IRIS GL แต่เจ้า IRIS GL นี้มันใช้งานได้ยากมากเลยครับ ทาง SGI จึงได้นำ IRIS GL มาแก้ไขใหม่ให้ใช้งานได้ง่ายขึ้น และมีประสิทธิภาพมากขึ้น และได้ตั้งชื่อให้ใหม่ว่า OpenGL และหลังจากนั้นมา OpenGL ก็กลายเป็น API สำหรับงานกราฟฟิก 3D ที่นิยมใช้มากสุดในการทำงาน 3D ครับ

ในระยะเวลาต่อมาประสิทธิภาพในการทำงานด้านกราฟฟิกในเครื่อง PC มีมากขึ้นเรื่อยๆ จนมีความใกล้เคียงกับเครื่อง WorkStation ที่ SGI กำลังทำตลาดอยู่ SGI จึงได้เปลี่ยนเป้าหมายไปทำเครื่องคอมพิวเตอร์ ชนิด Server แทนครับ เพราะหากยังอยู่ในตลาด WorkStation ต่อไปคงต้องตายแน่ๆ และผู้เชี่ยวชาญทางด้านกราฟฟิกของ SGI ต่างก็ลาออกจาก SGI มาอยู่กับทาง ATI และ NVIDIA ครับ

เมื่อ SGI เปลี่ยนจากตลาด WorkStation มาทำตลาด Server ทาง SGI ก็ได้เปลี่ยน Logo ตัวเองจาก SGI มาเป็น sgi ครับ (SGI -----> sgi)

ปัจจุบันนี้ SGI ยังคงจำหน่ายคอมพิวเตอร์ Server อยู่

ส่วนตัวของ OpenGL นั้นก็ยังได้รับการสนับสนุนต่อไปเรื่อยๆจากทาง SGI และ Khronos Group (ซึ่งประกอบไปด้วยบริษัทต่างเช่น Google, Blizzard, Orange, LG, Mitsubishi Electric, Panasonic และอื่นๆอีกมากหมาย)

ว่าแล้วก่อนไปหัวข้อต่อไปเราลองมาดูรูปร่างหน้าตาของเครื่อง SGI ในสมัยก่อนกันดีไหมครับ

0000_2000-front 0001_2000-open

ภาพด้านบน หน้าตา ถายนอกของเครื่อง Workstation SGI Onyx RE2

0002_ip19

ภาพด้านบน บอร์ดใส่ CPU พร้อมแรม 1 GB (คิดดูนะครับในปี 1993(พ.ศ. 2536) แรม 1 GB มันจะมีค่าขนาดไหน (ในเครื่องนี้ยังมีบอร์ดใส่ CPU และแรมอื่นๆอีกน่ะครับ อันนีเอามาให้ดูแค่อันเดียวพอเป็ตัวอย่าง)

0002_r680_geometry_engine

ภาพด้านบน นี้และครับ Geometry Engine ของ SGI ที่ช่วยในการประมวลผลทางด้านเลขาคณิต (โครงสร้าง 3D ส่วนมากมักเป็นรูปทรงเลขาคณิต)ครับ

0003_r680_raster_manager

ภาพด้านบน นี้ก็คือ Raster Manager (หลังที่สร้างโครงสร้าง 3D หรือ Model 3D เสร็จแล้วเราก็ต้อง Render ภาพออกมาเป็น 2D ในรูปแบบของ Raster (Raster คือข้อมูลที่เป็นจุดๆ 1จุด ต่อ 1 pixel))

0004r680_display_generator

ภาพด้านบน Display Generator(การ์ดจอนั้นแหละครับท่าน) เป็นไงครับ HD4870X2 ดูตัวเล็กไปเลยใช่ไหมครับ

และในเครื่องนี้ยังบอร์ดอีกๆหลายบอร์ดที่ผมยังไม่ได้เอารูปมาให้เพื่อนๆดูครับ ส่วนราคาของเครื่องที่เพื่อนๆเห็นอยู่ในอดีต(1993) ราคาอยู่ที่ $750,000 (สมัยนั้น 1 USD เท่ากับ 25 บาทครับ)

3DLabs

เราก็รู้ดีอยู่แล้วว่าในสมัยก่อนนั้น OpenGL มีชุดคำสั้งที่ใช้ในการทำงาน 3D เยอะกว่า Direct3D มาก ดังนั้นคนที่ทำงานด้าน 3D เช่น โปรแกรมจำพวก CAD และ CAM ต่างๆ ก็ต้องการการ์ดจอที่มีความโดดเด่นทางด้าน OpenGL เป็นพิเศษครับ และ 3DLabs ก็คือผู้เชี่ยวชาญทางด้าน OpenGL ตัวจริงเสียด้วยสิ

3DLabs ก็มีบทบาทเป็นอย่างมาก กับการให้ความช่วยเหลือในการพัฒนา OpenGL ครับ โดยเฉพาะตอนที่ DirectX 9 ที่มาพร้อมกับ HLSL ซึ่งเป็นภาษาระดับสูงสำหรับเขียน Shader (หรือ เป็นการเขียนโปรแกรมควบคุม GPU นั้นเองครับ) การมาถึงของ HLSL นั้นเรียกได้ว่าแทบจะจะทำให้ OpenGL หมดทางสู้เลยก็ว่าได้นะครับ แต่และแล้วพระเอกขี่หม้าสีทองก็เข้ามาช่วย OpenGL ไว้ได้ทันเวลา พระเอกผู้นั้นก็คือ 3DLabs ครับ 3DLabs ได้สร้าง GLSL ขึ้นมา โดย GLSL นี้ก็คือภาษาสำหรับเขียน Shader ของทางฝั่ง OpenGL นั้นเองครับ

GLSL นี้ทำให้ OpenGL สามารถต่อกรกับ DirectX 9 ที่มี HLSL ได้เป็นอย่างดีเรียกว่าสูสีกันมากๆเลยครับ

สาเหตุที่ 3DLabs ต้องเข้ามาช่วย OpenGL เอานั้นก็เพราะว่าการ์ดจอของ 3DLabs นั้นหากินกับ OpenGL นั้นเองครับ

3DLabs เจ้าพอแห่งวงการ Profressional Graphices

เราจะมาดูกันน่ะครับว่า 3DLabs ที่ได้ฉายาว่า "เจ้าพอแห่งวงการ CAD/CAM" นั้นมีการจออะไรที่หน้าสนใจบ้างนะครับ

ดูจากฉายาของ 3DLabs แล้วเชื่อว่าหลายท่านคงสามารถรู้ได้ว่าการ์ดจอของ 3DLabs นั้นต้องออกแบบมาสำหรับการทำงาน 3D มากกว่าที่จะเอามาเล่นเกมแน่นอน

และการทำงาน 3D ส่วนในอดีตจนถึงปัจจุบันก็ยังคงนิยมใช้ OpenGL กันเป็นส่วนมากอยู่ครับ

เรามาดูการ์ดจอตัวแรกของ 3DLabs กันดีกว่าครับ

ในปี 1994 3DLabs GLINT 300SX ที่ 3DLabs เป็นผู้ออกแบบชิพ และให้ทาง IBM เป็นผู้ผลิตชิพ GLINT 300SX นั้นจะถือว่าเป็นการ์ดจอตัวแรกที่รวมระบบการประมวลผล 2Dและ3D ทั้งหมดไว้บนการ์ดเพียงเดียวก็ได้(หากเทียบเจ้าตัวที่อยู่ด้านบนแล้ว 3DLabs GLINT ยังถือว่าเล็กกว่าเยอะครับ) GLINT 300SX ถูกออกแบบมาให้ทำงานกับ OpenGL โดยเฉพาะครับ แต่ 3DLabs GLINT 300SX ออกแบบมาสำหรับใช้งานกับเครื่อง WorkStation โดยเฉพาะทำให้การ์ดตัวนี้มีราคาแพงมาก แต่ก็ยังขายได้เพราะประสิทธิภาพที่ได้มานั้นถือว่าคุ้มมากครับ

0005_3dlabsGlint300sx_2

ภาพ 3DLabs GLINT 300SX

ในปี 1995 3DLabs ได้ทำชิพราคาถูกออกมาชื่อ Gigi สำหรับขายผู้ใช้งานในระดับทั่วไป(สำหรับตลาด PC) ซึ่งประสิทธิภาพที่ได้จะด้อยกว่าชิพในตระกูลที่ 3DLabs ทำออกมาสำหรับตลาด WorkStation

ช่วงปลายปี 1995 กราฟฟิกชิพในตลาดระดับ PC เริ่มมีออกมามากขึ้นเรื่อยๆ 3DLabs จึงได้นำ Gigi มาพัฒนาต่อเป็น Permedia

3DLabs Permedia มีคู่แข่งคือ 3Dfx Voodoo, ATI Rage, S3 VIRGE 3D และ PowerVR PCX

ในเรื่องการเล่นเกม Permedia นั้นอยู่ระดับที่เรียกว่าดี แต่ยังไม่ดีที่สุด(แพ้ Voodoo) แต่ถ้าในแง่ของการทำงาน 3D ที่มีการใช้ OpenGL เป็นหลัก เช่นงานออกแบบจำพวก CAD/CAM นั้น ไม่ชิพกราฟฟิกตัวไหนสามารถเอาชนะ Permedia ได้เลย (เพราะการ์ดจอที่ใช้ชิพ 3DLabs Pemedia นั้นจะต้องมีชิพ 3DLabs GLINT Delta สำหรับการคำนวนเลขาคณิต(Geometry) ติดมาด้วยนั้นเองครับ)

และแทนที่ Permedia จะได้รับความนิยมในตลาดเกม แต่กลับได้รับความนิยมในตลาด Workstation เป็นอยากมาก นั้นเพราะ Permedia นั้นมีราคาถูกมากหากเทียบกับการ์ดจอต่างๆที่มีอยู่ในระดับ Workstation ในเวลานั้นด้วยเหตุนี้ Permedia จึงเป็นการ์ดจอ Low-cost OpenGL ตัวแรกครับ

0006_3DLabsPermedia

ภาพ 3DLabs Permedia

เกร็ดความรู้ : S3 VIRGE 3D ได้รับสมยานามว่า Graphice De-accelerator

ในช่วงปี 1996 3DLabs ได้ออกชิพ Permedia2 ซึ่งเป็นชิพกราฟฟิกตัวแรกที่มีการ integrade หน่วยประมวลผลทางด้าน Geometry เข้าไปไว้ในชิพตัวเดียวกับกราฟฟิกชิพ ได้สำเร็จเป็นตัวแรก สำหรับคู่แข่งของ Permedia2 นั้นได้แก่ NVIDIA RIVA 128, ATI RAGE PRO, Matrox Millenium II, PowerVR PCXII, Number Nine Ticked to Ride, 3dfx Voodoo และ 3dfx Voodoo Rush

0007_Diamon_FireGLPro1000

ภาพการ์ดจอ Diamond FireGL Pro1000 ซึ่งใช้ชิพกราฟฟิก 3DLabs Permedia2

0008_spectPermedia2_

0009_MotoracerVoodoo

ภาพข้างบน เกม Motoracer ที่ได้จาก 3dfx Voodoo (คลิกรูป ดูภาพใหญ่)

0010_MotoracePemedia2

ภาพข้างบน เกม Motoracer ที่ได้จาก 3Dlabs Permedia2 สังเกตุที่การเกรียสีบนพื้นถนนจะทำได้ไม่เนียนเท่า 3dfx Voodoo (คลิกรูป ดูภาพใหญ่)

0011_3d3dx113

สำหรับการทดสอบ Direct3D 3DLabs Permedia2 (Diamond FireGL 1000 Pro) ยังทำได้ไม่ดีนัก

0012_OpenGL

สำหรับในการทดสอบ ที่มีการใช้งาน OpenGL นั้นไม่มีชิฟกราฟฟิกตัวใดเทียบชั้นกับ 3DLabs Pemedia2(Diamond FireGL 1000 pro)ได้เลยครับ

ปี 1998 3DLabs ได้ออกการ์ดจอ 3DLabs Pemedia 3 Creat! ซึ่งเป็นการ์ดจอระดับ Low-Cost ตัวสุดท้ายของ 3DLabs และก็เช่นเคยครับ การ์ดของ 3DLab นั้นเหมาะกับการ์ทำงาน 3D กับ OpenGL มากกว่า ที่จะเอามาเล่นเกม ดังนั้นหลังจากการ์ดรุ่นนี้แล้ว 3DLabs ก็หายไปจากวงการการ์ดจอสำหรับเล่นเกมเป็นเวลานานเลยครับ

0013_Permedia3_Creat

ภาพ การ์ดจอ 3DLabs Permedia

0014_Quake2

สำหรับการเล่นเกม 3DLabs ก็ยังทำได้ไม่ดีเช่นเคย

0015_3Dstmax

แต่ในการทำงาน 3D นั้น 3DLabs ก็ยังคงเป็นการ์ดที่ใช้เวลาในการ Render น้อยที่สุดอยู่ดีครับ

หลังจากที่ Permedia 3 Create ไม่ประสบความสำเร็จในตลาดเกม 3DLabs จึงได้รู้ตัวชิพกราฟฟิกของตนนั้นเหมาะกัยการทำงานมากกว่า การที่จะนำมาเล่นเกม 3DLabs จึงยอมวางมือจากตลาดเกม และมุ่งทำตลาด WorkStation อย่างเดียว

ต่อมาเมื่อ NVIDIA ประสบความสำเร็จเป็นที่ 1 ในตลาดเกมด้วยชิพ GeForce 256 ทาง NVIDIA ได้นำชิพตัวนี้ไปปรับแต่งให้เป็นชิพกราฟฟิกระดับ WorkStation โดยใช้ชื่อว่า Quadro เตรียมบุกตลาดสำหรับคนทำงาน 3D ที่ทาง 3DLabs ครอบครองอยู่

*หมายเหตุ ชิพ NVIDIA Quadro บางตัวก็ไม่ได้เกิดจากการปรับแต่งชิพ GeForce น่ะครับ เพราะว่าชิพ Quadro บางรุ่นก็ถูก NVIDIA ออกแบบมาให้เป็น Quadro โดยกำเนิดก็มีครับ

แม้ในตลาดเกมจุดเด่นของ NVIDIA จะอยู่ที่คุณสมบัติ T&L ซึ่งมีอยู่ในตัว GeForce 256

แต่จุดของ NVIDIA ตรงนี้กลับไม่ใช่สิ่งใหม่เลยในตลาด Workstation นั้นเพราะชิพ GLINT Gamma ซึ่งเป็นชิพประมวลผลทาง Geometry ของ 3DLabs นั้นก็มีคุณสมบัติ T&L เช่นกัน

และทาง 3DLabs ก็โจมตี Quadro ว่าการที่ Quadro ใช้ชิพเพียงตัวเดียวทำงานทั้งการ Render และคำนวณทาง Geometry นั้น จะมีประสิทธิภาพในการทำงานสู้ การ์ดจาก 3DLabs ที่ใช้ชิพ เฉพาะทางในการทำงานแต่ละด้านไม่ได้ (แม้ใน Permedia 2 และ 3 ซึ่งเป็นการ์ดจอ Low-cost จะใช้ชิพเพียงตัวเดียวทำงานทุกอย่าง แต่การ์ดในระดับ WorkStation ทาง 3DLabs ยังคงใช้ชิพต่างๆแยกกัน เพื่อแบ่งกันประมวลผลในแต่ละด้าน เช่นการ Render ก็จะใช้ชิพตัวนึง และการคำนวณทาง Geometry ก็จะใช้ชิพอีกตัวหนึ่ง)

ทีนี้เราลองมาดูกันสิ ว่าแนวความคิดของ NVIDIA และ 3DLabs ใครจะดีกว่ากัน

0015_3Dlabs Oxygen GVX1

3DLabs Oxygen GVX1 ประกอบด้วยชิพ 2 ตัว ตัวที่อยู่ข้างบนคือ GLINT R3 ทำหน้าที่ในการ Render และตัวที่อยู่ด้านล้างคือ GLINT Gamma G1 สำหรับคำนวน Geometry (รวมถึง T&L เพราะการประมวลผล T&L ถือว่าเป็นการทำงานทาง Geometry อย่างนึงครับ)

0016_3Dlabs Oxygen GVX210

3DLabs Oxygen GVX210 ประกอบด้วยชิพ 3 ตัว ตัวที่มีพัดลม 2 ตัว คือ GLINT R3 ทำหน้าที่ในการ Render และตัวที่ใช้ sink สีดำ ไม่มี คือ GLINT Gamma G2 สำหรับคำนวน Geometry

0017_Diamond_firegl1pro_full

Diamond FireGL 1Pro ใช้ชิพ IBM Rasterizer 256 bit (เป็นชิพที่ทำหน้าที่ Render ภาพอย่างเดียว)

0018_lightning1200_full

E&S รุ่น Lighting 1200 มีชิพ 3 ตัว ตัวที่อยู่ใกล้ๆกับ D-sub คือ Ramdac ครับ(ของผู้ผลิตรายอื่นๆเขายัด Ramdac รวมไว้ในชิพตัวเดียวกับชิพที่ทำหน้าที่ Render ภาพกันหมดแล้ว) ส่วนตัวที่มีพัดลม คือชิพที่ทำหน้าที่คำนวณ Geometry ส่วนตัวที่อยู่ด้านบนของตัวที่มีพัดลมคือชิพที่ทำหน้าที่ Render ภาพ

0019_gloriaii_full

Elsa GLoria II ใช้ชิพ NVIDIA Quadro ชิพเดียวทำได้หมดทุกอย่าง

0020_Rasterizer

0021

0022

0023

0024

0025

งานนี้เรียกได้ว่า เจ้าพ่อแห่งวงการกราฟฟิกระดับ WorkStation โดนน้องใหม่อย่าง NIVIDIA Quadro อัดเหละเลยครับ แต่ศึกนี้ยังไม่จบ

O

0 ความคิดเห็น: