การเดินทางวันนี้: Anti-Aliasing
- Anti-aliasing เป็นศิลปะรูปแบบหนึ่งที่พัฒนามาตลอดหลายทศวรรษ ผ่านคณิตศาสตร์ เทคนิคที่สร้างสรรค์ และนวัตกรรมที่ไม่หยุดนิ่ง
- มีแนวทางหลากหลาย เช่น SSAA, SMAA, DLAA ซึ่งต่างก็พยายามบรรลุเป้าหมายเดียวกันด้วยวิธีที่แตกต่างกัน
- บทความนี้จะพาไปดูว่าวิธีเหล่านี้ทำงานอย่างไร และแนะนำวิธีใหม่ในการแก้ปัญหาที่เรียกว่า analytical anti-aliasing
การตั้งค่า
- เพื่อทำความเข้าใจอัลกอริทึม anti-aliasing มีการใช้แคนวาส WebGL เพื่อวาดวงกลมที่เคลื่อนไหวและนำมาใช้ในการอธิบาย
- หากความละเอียดสูงเกินไปจนมองไม่เห็น aliasing สามารถลดความละเอียดลงเพื่อสังเกตได้
การวิเคราะห์เชิงเทคนิค
- การเข้าใจโค้ด GPU ไม่ใช่สิ่งจำเป็น แต่ช่วยให้เข้าใจส่วนที่เป็นเชิงวิเคราะห์ได้มากขึ้น
- วงกลมไม่ได้ถูกวาดขึ้นด้วยเรขาคณิตโดยตรง แต่ถูกวาดด้วย shader
SSAA
- SSAA ย่อมาจาก super-sampling anti-aliasing เป็นวิธีที่เรนเดอร์ด้วยความละเอียดที่ใหญ่กว่าแล้วค่อย downsample
- นำไปใช้งานได้ง่าย แต่ต้องใช้หน่วยความจำและการคำนวณสูง
- ต้องมีการจัดวาง sample ที่เหมาะสม และต้องผสานเข้ากับ rendering pipeline อย่างลึกซึ้ง
MSAA
- MSAA จะทำ super-sampling เฉพาะที่ silhouette ของโมเดล เรขาคณิตที่ซ้อนทับกัน และขอบของ texture เท่านั้น
- ถูกนำไปใช้โดยฮาร์ดแวร์ และการรองรับขึ้นอยู่กับฮาร์ดแวร์แต่ละชนิด
- ในบางสถานการณ์อาจไม่มีต้นทุนด้านประสิทธิภาพเลย
Post-process Anti-Aliasing
- ในปี 2009 งานวิจัยของ Alexander Reshetov ทำให้ MLAA ถือกำเนิดขึ้น
- FXAA เป็นอัลกอริทึมที่พัฒนาขึ้นโดยได้แรงบันดาลใจจาก MLAA โดยมีต้นทุนด้านประสิทธิภาพต่ำและนำไปใช้ได้ง่าย
- มีประสิทธิภาพมากกว่าในฉากที่ซับซ้อน
Analytical Anti-Aliasing
- Analytical anti-aliasing เป็นการแก้ปัญหาแบบย้อนกลับ โดยรู้รูปทรงที่ต้องการล่วงหน้า แล้ววาดพิกเซลที่ผ่านการ anti-aliasing แล้วลงบนหน้าจอ
- ไม่ต้องใช้บัฟเฟอร์เพิ่มเติมหรือข้อกำหนดด้านฮาร์ดแวร์ และสามารถทำงานได้แม้บน WebGL 1.0 หรือ OpenGLES 2.0 พื้นฐาน
- ทำให้ขอบของรูปทรงค่อย ๆ จางลงด้วยการคำนวณขนาดพิกเซล
การนำไปใช้
- การใช้ signed distance field ช่วยให้ทราบระยะทางจากแต่ละจุดที่ sample ไปยังรูปทรงที่ต้องการ
- วิธีคำนวณขนาดพิกเซลใช้ฟังก์ชัน dFdx, dFdy และ fwidth
- การ blend ทำได้ด้วย alpha blending หรือ MSAA + Alpha to Coverage
- สามารถใช้ linearstep แทน smoothstep เพื่อเพิ่มประสิทธิภาพได้
บทสรุป
- Analytical anti-aliasing ให้ขอบที่เรียบเนียนโดยทำให้ขอบของรูปทรงค่อย ๆ จางลงอย่างแม่นยำ
- มีวิธีการนำไปใช้ได้หลากหลาย และสามารถเลือกตามสมดุลระหว่างประสิทธิภาพกับความแม่นยำ
1 ความคิดเห็น
ความเห็นจาก Hacker News