ปรับภาพเกมยังไงดี: Anti-Aliasing

มีความคิดมาสักพักแล้วว่าภาษาไทยไม่ค่อยมีบทความเรื่องการปรับภาพเกม บางคนเห็นไม่เข้าใจมีอะไรให้ปรับลากให้สุดไว้ก่อน แม้แต่ FOV

บทความชุดนี้ประกอบด้วย

  • Anti-Aliasing
  • VSync
  • FOV
  • อื่นๆ ที่ไม่ยาวพอ

Anti-Aliasing

ปกติภาษาไทยเราก็จะเรียกมันว่าลบรอยหยัก ก่อนอื่นอธิบายถึงทฤษฎีก่อนแล้วกันครับว่าทำไมเกมถึงมีรอยหยักตามขอบภาพ

สมมุติว่ามีเส้นตรงเส้นนึงที่เราจะแสดงผลบนจอ ทีนี้บนจอภาพเราน่าจะทราบดีว่าประกอบด้วยจุดพิกเซลต่างๆ

ถ้าเส้นนั้นมันตัดไม่เต็มจุดพิกเซลล่ะครับ… จะแสดงผลยังไง

Screenshot from 2016-02-07 17-44-04

วิธีที่คอมพิวเตอร์ใช้ตัดสินใจเรียกว่า Sampling ครับ วิธีการคือใน 1 pixel นั้นจะกำหนด 1 ตำแหน่งขึ้นมาเป็นตำแหน่งแทนพิกเซลนั้นๆ ถ้าจุดนั้นมีสีอะไร ก็ให้ทั้งพิกเซลนั้นมีสีนั้นไปด้วย

ก่อน
ก่อน

หลัง
หลัง

มองแบบนี้ก็เริ่มเห็นแล้วนะครับว่า เส้นมันไม่เป็นเส้นแล้ว เราจะแก้ไขปัญหาอย่างไรดี..?

SSAA

วิธีแรกง่ายมากครับ SSAA = Supersampling AA หรือบ้างก็เรียก FSAA = Full screen AA หลักการก็คือ render เกมให้ใหญ่กว่าจอของเรา แล้วย่อภาพลงมาให้พอดีจอ ทำให้ภาพที่ได้จะมีความคมชัดมาก

ภาพประกอบ: PC Gamer

(ถ้าเล่นเกมบนจอ 4k แล้วเปิด 4x SSAA นี่แปลว่าเกมมันทำงานในความละเอียด 8k อยู่นะครับ!)

MSAA

ปัญหาคือ SSAA โคตรกินเครื่องเลยครับ ก็เลยมีคนคิดค้นวิธีอื่นๆ ขึ้นมาอีก

MSAA (Multisampled AA) เป็นวิธีคล้ายๆ กับ SSAA แต่ shader จะรันในความละเอียดเท่ากับความละเอียดแสดงผล ทำให้กินเครื่องน้อยลง

ภาพประกอบ: The Danger Zone

FXAA/MLAA

Fast Approximate AA เป็นวิธีฉลาดแกมโกงครับ โดยเอาภาพที่ render เสร็จแล้วมาหาขอบต่างๆ แล้วก็ blur ทิ้ง! ง่ายมั้ยล่ะ…

ข้อเสียคือเบลอแบบนี้ก็จะทำให้ texture เบลอไปด้วย

Source: Hardforum
ภาพประกอบ: Hardforum

MFAA

ใน driver NVIDIA จะมีให้เปิด Multiframe Anti-Aliasing ครับ ซึ่งหลักการคือจะใช้จุดอ้างอิงหลายๆ จุดในเฟรมแล้วก็เฉลี่ยค่าสีกัน ปัญหาก็คือวิธีนี้มันก็คล้ายๆ SSAA ใช่มั้ยล่ะครับแล้วมันก็จะช้า

วิธีแก้ของ MFAA คือการใช้หลายๆ เฟรมเข้ามาอ้างอิงแทนครับ เฟรมแรกใช้จุดนึงอ้างอิงสี เฟรมถัดมาเปลี่ยนจุดแล้วเฉลี่ยไป ฉะนั้นก็จะทำให้ไม่กินเครื่อง

ข้อเสียของ MFAA คือถ้า framerate ไม่ถึง 40 ใช้ไม่ได้นะครับ และถ้าภาพเป็นภาพเคลื่อนไหวก็จะทำให้เกิด ghosting หรืออาการภาพค้างจางๆ

ภาพประกอบ: PCPer
ภาพประกอบ: PCPer

SMAA

Enhanced Subpixel Morphological หรือ SMAA เป็นเทคนิคใหม่จาก Crytek ครับ ปัจจุบันยังไม่เห็นเกมไหนรองรับ ถ้าจะใช้ต้องใช้ SweetFX หรือ injectSMAA

หลักการทำงานคล้ายๆ กับ FXAA คือเบลอขอบภาพ แต่วิธีการหาขอบจะใช้วิธีที่ใช้ตรวจการทำงานของ shader ใน MSAA ฉะนั้นแล้วจะทำให้ภาพมีคมชัด ไม่เบลอ texture มาก และกินเครื่องไม่มากไปกว่า FXAA เท่าไร

ภาพประกอบ: RadeonPro
ภาพประกอบ: RadeonPro

แบบไหนดี?

ปกติแล้วเกมจะมีให้เลือกปรับชนิดได้ 1-3 แบบนะครับ แล้วก็อาจจะมีตัวคูณไปอีก ตรงนี้ก็ปรับแล้วแต่ความชอบเลย แต่โดยทั่วไปแล้วนะครับ

  1. SSAA คมสุด กินเครื่องสุด
  2. MSAA
  3. SMAA ภาพดี กินเครื่องไม่เยอะ
  4. FXAA

อาจจะมีตัวอื่นๆ นอกเหนือจากนี้ อันนี้ลองหาข้อมูลเพิ่มเติมดูครับเพราะจะยกมาเฉพาะตัวที่สำคัญๆ เท่านั้น

Source