กว่าจะพัฒนามาได้ !!!
ถ้าเกิดใครเป็นสาวกเกมมือถือแล้วผ่านหน้าผ่านตามาทั้ง IOS และ Android หรือแม้กระทั่งไม่เคยเล่น IOS แต่ก็คงจะเคยได้ยินชื่อเกมว่า Infinity Blade กันบ้างไหมครับ ? เพราะถ้าเราย้อนเวลากลับไปสักสักช่วงปี 2010 - 2013 ช่วงนั้นจะเป็นช่วงที่ IPod Touch กำลังนิยมอยู่แล้วก็มีการชวนการกันเล่นต้นตำรับเกมปัดหน้าจอทางซ้ายทางขวา เพื่อฟันศัตรูจนเป็นต้นตำรับให้กำเนิดเกมตามๆมาอย่าง Blood And Glory, Real Boxing, Horn และเกมอื่นอีกมากมายภาพจากเกม Infinity Blade บน IOS ซึ่งภาพสวยสดงดงามแม้กระทั่งปัจจุบันก็ยังต้องยอมรับ ! |
IPhone 4
CPU | 1.0 GHz Cortex-A8 |
GPU Ram | PowerVR SGX535 512 MB |
นี่มันอะไรกัน !!! Spec เพียงเท่านี้ก็สามารถเล่นเกมภาพสวยขนาดนี้ได้ (ในปี 2010 - 2013 ) แล้วถ้าอย่งานั้นปัจจุบันนี้ล่ะที่ Spec ทั้ง Android และตัว IOS เดิมเองก็ทิ้ง IPhone 4 ไปไกลยิ่งกว่าดาวพลูโตเสียอีก
ส่วนในของฝั่ง Android ช่วงเวลาแถวๆนั้นก็เป็นช่วงที่ชิป Tegra 3 ของ Nvidia เปิดตัวแล้วเป็นข่าวฮือฮาถึงเรื่องสเปคความเทพต่างๆที่ออกมาแข่งกัน Tegra3 เปิดตัว
Horn เกมชูโรงกราฟฟิคของ Tegra 3 บนเครื่อง Android อย่าง HTC One X, LG Optimus 4x |
ซึ่งทั้งหมดที่ผมกล่าวขึ้นมาเบื้องต้นคงจะเหมือนย้อนเวลากลับไปหาอดีตให้หลายคนได้คิดถึงกันใช่ไหมครับ ? เอ๋... ถ้าอย่างนั้น Spec ของมือถือต่างๆที่อัดกันเข้าไปอย่างไม่หยุดยั้งและพัฒนาต่อๆมาเรื่อยๆ แต่อะไรกันที่เป็นสิ่งเล็กๆ ไม่จำเป็นต้องมีชิป CPU ไม่ต้องอัด Ram กันเข้าไปเยอะๆ แต่สามารถเพิ่มประสิทธิภาพได้ ?
Software คือคำตอบ !
ใช่แล้วครับเราลองมองข้ามเรื่อง Hardware ออกไปก่อนนะครับ เพราะเราทุกคนรู้โดย Common Sense พื้นฐานอยู่แล้วว่า โอเคเกมมันกระตุกอะ อัพสเปคคอมใหม่ล่ะกันนะ ? แต่จริงๆแล้วสเปคคอมเรามันกากจริงเรอะ ? หรือคนทำเกมเค้าทำมาไม่ดีกันแน่ ?!
ตัวอย่างเกม PUBG
Texure ตัวละครมันหายไปไหนกันฟร้าาา 40 GB เลยนะโว้ยย?!! - ลัทธินักฆ่า |
นั่นก็เป็นเพราะเรื่องของการทำงานของโปรแกรม (App บลาๆ แล้วแต่จะเรียกเลยครับ) ที่เราใช้อยู่มันอาจจะยังไม่สามารถดึงประสิทธิภาพของ Hardwaare มาใช้ได้อย่างคุ้มค่านั่นเองเสมือนเรามีรถ Ferrari แต่ใช้งานไม่คุ้มนั่นเอง
อธิบายศัพท์
Hardware พวก RAM, CPU, Disk ต่างๆบนมือถือหรือคอมพิวเตอร์เราที่จับต้องได้ (คนทำงาน)
Software เหล่าโปรแกรมต่างๆเช่น PUBG, Microsoft Word, Google Chrome (งานสักอย่างที่ต้องทำ)
API Application Program Interface เป็นสื่อกลางที่ใช้ในการติดต่อระหว่าง Hardware กับ Software (คนแจกจ่ายงาน)
รู้จัก OpenGL กันก่อน
ตัว OpenGL เองนั้นก็คือ API ที่ช่วยให้คนสร้างเกมหรือกราฟฟิคต่างๆลดปัญหาเรื่องการต้องไปนั่งคิดว่าจะแสดงภาพกราฟฟิคได้อย่างไรเช่น ก้อนสี่เหลี่ยม หรือก้อนวงกลมหน้าคนหรือจะเป็นวัตถุกราฟฟิคตต่างๆครับ ถ้าอธิบายง่ายๆ ให้คนไม่เคยเขียนโปรแกรมฟัง ก็คือจริงๆแล้วคอมพิวเตอร์เราเป็นเลขฐาน 0101110 อะไรแบบนี้ถูกไหมครับ แล้วถูกเกิดจะไปบอกว่า จงแสดงรูปในเกมมาซิ !!! เราจะทำได้อย่างไรกัน ? ตรงนี้เองก้เลยมีคนออกแบบมาตราฐาน API มาช่วยว่าก็สมมติพิมคำว่า drawCube(สูง 20, ลึก 20, กว้าง 20) แล้วคอมพิวเตอร์จะเข้าใจและเอาภาพมาแสดงให้นั่นเองครับ พูดง่ายๆคือกราฟฟิคที่เราเห็นในเกมจริงๆก็คือตัวเลขนั่นแหละ ! (DirectX ก็เช่นกันครับ) ทีนี้มาดูข้างล่างกันดีกว่า
โดยตัวอย่างจากภาพคือเรื่องเของการแบ่งงาน Software เช่นเล่นเกมก็ต้อง โหลดแสง เงาสะท้อน คำนวนกระสุนที่ลอยไปแล้วว่าไปไกลแค่ไหนยิงโดนมั้ย แล้วเราลงแยกงานเหล่านี้ออกเป็นส่วนๆดูครับ แต่เนื่องจากชิ้นส่วนต่างๆมีเยอะมาก ! ถ้าหากเราให้คนสั่งคนที่ทำหน้าที่ตรงกลาง ( API) เป็นคนสื่อสารไปหาคนใช้แรงงานอย่าง Hardware แต่ว่า งานนี้ มันจะไม่หมูหน่ะสิครับเพราะว่าเมื่อมี Order งานจาก Software เข้ามาแล้ว API ยังต้องมานั่งคิดว่าว่า เอ๊ะ ?! งานมันมีแค่ไหนฟร้ะ โอะแล้วต้องแบ่งยังไง แบ่งแค่ไหน แล้วเกิดงานมีปัญหาต้องทำไงบอกแรงงานยังไงดี ?
ซึ่งปัญหาเหล่านั้นล้วนอยู่บน OpenGL ซึ่งอยู่กับเหล่ามาตั้งแต่ยุคนู้นนน จำไม่ได้เลยทีเดียวว่ายุคไหน ก็ยุคยอดฮิตคือปี 1992 เลยจ้าาา แก่ไหมครับ แตกหนึ่ง !!!
OpenGL ทำไมแกถึงต้องให้ชั้นยำโค้ดทุกอย่างไว้ในจุดเดียวฟร้าา แม่งอะไรกันฟร้ะเนี่ยโคตรเยอะ !!! |
เข้าสู่ยุคใหม่ Vulkan API !!!
Vulkan API ที่ใช้บนเกม Talos Principle (มีบน Tegra Android) |
ซึ่งด้วยเหตุนี้นั่นเองนี่หล่ะครับทำให้เกมมือถือของเราในปัจจุบันสามารถดึงประสิทธิภาพมาได้เต็มที่ด้วยความที่ Vulkan ยังสามารถกระจายงานไปให้ CPU หลายๆตัวอีกด้วยสังเกตดูจากภาพด้านล่างครับการทำงานบน OpenGL นั้นสามารถทำได้แค่บน CPU ตัวเดียวแล้วรับการทำงานคนเดียวไปเต็มที่แต่ในขณะเดียวกัน Vulkan API กับใช้หลักการกระจายงานไปให้ CPU ตัวอื่นๆรอบๆตัวมันทำให้สามารถทำงานได้อย่างเต็มที่ โดยที่ CPU แต่ล่ะตัวโหลดยังแทบจะไม่ถึง 20 % ด้วยซ้ำ !!! ซึ่งนอกจาก App จะต้องรองรับแล้วอุปกรณ์มือถือเราก็ต้องรองรับด้วยเช่นกันนะครับจึงจะสามารถใช้งานหรือเล่นเกมที่ทำบน Vulkan ได้อย่างฟินสุดๆไปเลยเช่น Xiaomi MIX 2 ของผมเป็นต้น หรือจะตัวอื่นๆก็มีอีกมากมายอยู่ข้างล่างเลยครับสำหรับสเปคในรุ่นนี้
"สังเกตดูที่เรื่องของการใช้งาน CPU ฝั่งซ้าย Open GL ฝั่งขวา Vulkan " |
สรุป Vulkan API
+ เพิ่มประสิทธิภาพการทำงานให้กับ Hardware เพราะทำงานได้เต็มที่ไม่ไป load ที่ตัวเดียว
+ ประหยัดแบตมากขึ้น
ส่วนใครที่ชอบ Emulator แล้วพึ่งซื้อเครื่องมาใหม่ก็ลองเช็คดูนะครับว่าเครื่องรองรับ Vulkan ไหมแล้วลองมาเล่นดูครับบน ppsspp แบบใช้ Vulkan render ขอบอกเลยภาพเนียนๆลื่นหัวแตก 60fps เลยครับ
เพิ่มจาก Wololo.net |
ภาพกราฟฟิคจาก Xiaomi Mix 2 บนเครื่องผมเองครับ
Need For Speed No Limit กราฟฟิคเทพเจ้าไม่ต้องอวย |
Vulkan Benchmark สังเกตว่ามีพวกฝุ่นๆละอองเยอะมากในฉากซึ่งต้อง Render หนักมากครับ |
ถ้าพื้นโล่งๆล่ะก็ Render สบาย ! |
เกมที่รองรับ Vulkan API
โหลดเลย VainGlory
โหลดเกม : HIT
ซึ่งแต่ล่ะเกมข้างต้นจะเห้นว่าภาพสวยขั้นเทพทั้งนั้นก็เป็นเพราะรับพลังจาก Vulkan API ไปเต็มๆเลยนี่หล่ะครับ
ก็ขอจากลาเพื่อนๆไปแต่เพียงเท่านี้นะครับหวังว่าเพื่อนๆจะได้ความรู้ในการเลือกซื้อมือถือที่เหมาะสมและโดนใจแก่ตนเองนะครับหากชอบบทความแบบนี้บอกเราเลยครับ จะได้นำไปปรับปรุงและจัดเต็มให้สนุกมากขึ้นครับ :)
สุดท้ายแล้วถ้าในปีนี้ใครเล็งมือถือตัวใหม่ก็ขอแนะนำเครื่องที่ลองรับ Vulkan API ด้วยนะครับโดยเช็คได้ผ่านทางนี้ครับ Vulkan API
Company | Hardware | Software support: Vulkan 1.0 | ||||||
---|---|---|---|---|---|---|---|---|
Microarchitecture | Available since | GPUs (chips) | Graphic cards / SoCs | Android[a] | Linux | Microsoft Windows[b] |
ImaginationTechnologies | ||||||
PowerVR Series 8 | February 2016 | GE8200, GE8300 | PowerVR Graphics SDK v4.1[94] | |||
PowerVR Series 7 | November 2014 | GE7400, GE7800, GT7200, GT7400, GT7600, GT7800, GT7900 | Apple A9, A9X, A10 Fusion, Helio X30 (MT6799) | |||
PowerVR Series 6 | January 2012 | G6100, G6200, G6230, G6400, G6430, G6630, RK3368, G6050, G6060, G6100 (XE), G6110, GX6240, GX6250, GX6450, GX6650 | Apple A7, A8, A8X, MediaTek MT8173, MT8176, MediaTek MT6595M, MT6595T, MT6595M, MT6795, MT8135, Helio X10 (MT6795), LG H13, Atom Z3460, Z3480, Z3530, Z3560, Z3570, Z3580 | |||
PowerVR Series 5 | January 2009 | SGX543, SGX544, SGX554 | Apple S1, A5, A5X, A6, A6X, NovaThor L8540, L8580, L9540, TI OMAP 4470, 5430, 5432, MediaTek MT5327, MT6589M, MT6589T, MT6589, MT8117, MT8121, MT8125, MT8389, Atom Z2460, Z2520, Z2560, Z2580, Z2760, Exynos 5410 | not supported | ||
Qualcomm | ||||||
Adreno 500 series | Adreno 510, Adreno 530, Adreno 540
Adreno 512
| Snapdragon 430, 625, 650, 652, 660,820, 821, 835 | 1.0[95] | |||
Adreno 400 series | Adreno 418,Adreno 420,Adreno 430 | Snapdragon 415, 615, 616, 617, 805, 808, 810 | 1.0(Adreno 418,430)[96] | |||
Adreno 300 series | Snapdragon 200, 208, 210, 212, 400, 410, 412, 600, 800, 801 | not supported | ||||
ARM | ||||||
Bifrost[97] | June 2016 | Mali-G71, … | Kirin 960, 970, Exynos 8895, MediaTek Helio P23 (MT6763T), Helio P30 | 1.0[98] | ||
Midgard 4th | Q4 2015 | Mali-T860, Mali-T830, Mali-T880 | Exynos 8890, Exynos7880, Exynos 7870, Kirin 950, 955, MediaTek MT6738, MT6750, Helio X20 (MT6797), X25 (MT6797T), P10 (MT6755), P20 (MT6757) | |||
Midgard 3rd | October 2013 | Mali-T760, … | Exynos 7420, Exynos 5433, MT6752, MT6732, RK3288 | |||
Midgard 2nd | August 2012 | Mali-T600 series, T720 | Exynos 5250, 5260, 5410, 5420, 5422, 5430, 5800, 7580, Mediatek MT6735, MT6753, Kirin 920, 925, 930, 935 | not supported |
อ้างอิง
Vulkan (API)
*หากนำไปอ้างอิงกรุณาใส่ Credit ให้ด้วยครับ