תהיתם פעם מה אומר המושג Anti-aliasing? נאבקים להגדיל את ה-FPS ועדיין לשמור על גרפיקה סבירה? זה המדריך בשבילכם!
היום הגדול הגיע. אתם נכנסים לחנות, עומדים בתור ושואפים לקרבכם את הריח המתוק של סיליקון מעוצב ומוליכים למחצה טריים ישר מהמפעל . אחרי כמה דקות, אתם נפרדים בכאב ממשכורת חודשית או שתיים, ויוצאים מהחנות עם חיוך ניצחון וכרטיס גרפי חדש מהניילונים (או מחשב שלם, אם להרכיב זה לא בדיוק הקטע שלכם). כולנו מכירים את העונג שבשדרוג וקנייה של ציוד מחשוב חדש, אבל מה קורה 4-5 שנים מאוחר יותר, כשמפלצת הטכנולוגיה שקנינו כבר לא כל כך מפלצתית, או רחמנא ליצלן, כשמגיע דור קונסולות חדש שמקפיץ את דרישות המערכת בצורה דרסטית?
במקרה כזה, בהנחה שאין לנו כסף מיותר בקופת הגיימינג לשעת חירום, כל מה שנותר לעשות זה לשחק עם הגדרות הגרפיקה בתקווה לאזן בין איכות התמונה לבין כמות הפריימים על המסך, ולהתפלל שלא נשרוף את המעבד בתהליך. הבעיה היא, שרוב המושגים במסך ההגדרות הגרפיות ברורים בערך כמו כתב יד של רופא, וגם נשמעים כמו משהו שהרופא רשם לקחת פעמיים ביום. אז איך אמורים לדעת בכלל מה המשמעות של כל אחת מההגדרות, ואיך שינוי בכל אחת מהן ישפיע על הגרפיקה ועל הביצועים?
אז בדיוק כדי לענות על השאלה הזו, הכנו לכם את המדריך המלא להגדרות הגרפיקה, כתוב וערוך בשפת הקודש, ומסודר בסדר יורד לפי גודל ההשפעה על הביצועים. בהצלחה לחומרה של כולנו, And may the Frames be with you!
לפני שמתחילים
כדי להסביר בצורה טובה את הפיצ'רים שאתאר בהמשך, אנסה להסביר בפשטות שני מושגי יסוד:
- פיקסל – אבן הבניין (כמעט) הכי קטנה המאפשרת להציג אור וצבע על מסך. ניתן להקביל פיקסל למעין נורה צבעונית שיודעת להציג צבע כלשהו כשהיא דלוקה, ואפשר לכבות אותה או לחסום את התאורה שלה כדי להציג שחור. כיום טכנולוגיית המסכים מתקדמת הרבה יותר והדברים לא כל כך פשוטים, אבל למען הפשטות נתייחס לפיקסל כנקודת צבע על המסך.
- טקסטורה – "העור" של האובייקט. קובעת מה יהיה הצבע של כל עצם, ומאיזה "חומר" הוא יהיה עשוי. טקסטורה של זכוכית לדוגמה, תהיה קצת שקופה ותחזיר השתקפויות אור, לעומת טקסטורה של אבן שתהיה אטומה לגמרי ואולי יהיו בה חריצים, בהתאם לסוג האבן.
Ambient Occlusion
אפקט הצללה. קובע האם וכיצד אובייקטים מטילים צל על אובייקטים אחרים, ומאפשר להם אפילו להצל על עצמם.
ההסבר הפשוט לעניין הוא שבחיים האמיתיים, אין מקור אור אחד ויחיד. גם אם אני בחדר סגור והדבר היחיד שמאיר עליי הוא מנורה, האור של המנורה ישתקף מכל מיני עצמים נוספים במרחב ו"ייצור" מקורות אור נוספים וחלשים יותר. כדי ליצור משהו דומה לאפקט הריאליזם הזה נוצרה טכניקת ה-SSAO, שיוצרת מעין "מקור אור כללי", שמאפשר לי לדעת אילו עצמים יצרו צל על עצמים אחרים בסצנה.
בפועל, האלגוריתם משתמש בפונקציות גיאומטריות ובעצם "מחשיך" מקומות שהאור לא אמור להגיע אליהם. גרסאות מתקדמות של האפקט מסוגלות גם לקבוע האם אלמנטים שלא מופיעים באותו הרגע בסצנה, ושהשחקן לא רואה אותם כרגע, ישפיעו על מה שהוא כן רואה. אם לדוגמא יש עץ גדול מאחוריי, והשמש גם היא מאחוריי – האם אני אראה את הצל של העץ מוטל על האדמה לפניי, למרות שהעץ בכלל לא בטווח הראייה שלי? אם אפעיל את האופציה של Ambient Occlusion, כנראה שכן.
האופציות הנפוצות לAmbient Occlusion:
- SSAO – ישן יחסית, עלול להזיק לגרפיקה במשחקים חדשים, אך נראה טוב על ישנים.
- HBAO, HDBA – טכניקות מקבילות של AMD ו-Nvidia, המייצגות אפשרויות ביניים. בניגוד ל-SSAO, הטכניקות הללו לא מחשיכות כל פיקסל בנפרד, אלא מחלקות את הסצנה לכמה חתיכות קטנות ומחשבות את ההצללות בכל חתיכה, כך שיש השפעה גדולה יותר לסביבה והצללים מדוייקים יותר.
- RTAO – הטכניקה שנמצאת בשימוש במה שאנחנו קוראים לו Ray Tracing כדי ליצור סימולציה קרובה למציאות ככל האפשר של החזרת קרני האור מעצמים.
רמת שיפור גרפי: בינוני.
השפעה על קצב הפריימים: מקסימלית.
Anti-aliasing
דמיינו שאתם מנסים ליצור קו אלכסוני באמצעות הצמדה של ריבועים אחד לשני. מה שתקבלו זה משהו שדומה יותר לפסל שבכיכר הבימה מאשר לקו:
אפקט דומה נוצר כשאנחנו מנסים לעשות קווים מעוגלים וזוויות באמצעות פיקסלים, שהם לצורך העניין, מעין "ריבועים" קטנים של אור. הניסיון הזה לייצר קווים מריבועים מחוברים מביא לאפקט של "מדרגות" על הפיקסלים במסך, שנראה מאוד לא מציאותי. (דמיינו את משחקי מריו הישנים והדו מימדיים או את מיינקרפט לצורך העניין). מה הפיתרון ? להקטין את הריבועים ככה שייראו כמו נקודות, ואז ליצור מהם קווים - המוח לעולם לא ירגיש בהבדל!
אז איך עושים את זה? מגדילים את כמות הפיקסלים, כלומר את הרזולוציה. כשאני מדליק 5 ריבועים ברצף מתוך 100, העין תצליח להבחין שמשהו פה מוזר, אבל אם אני אדליק 500 ריבועים מתוך 100 מיליון, הבעיה הזו פחות תורגש.
אבל חכו שנייה, מי אמר שאפשר להכניס 100 מיליון ריבועים במסך? זה אפשרי בכלל מבחינת חומרה? בדיוק את הבעיה הזו Anti Aliasing בא לפתור: הרעיון עליו מפתחים חשבו הוא ליצור את התמונה מראש ברזולוציה גבוהה במיוחד, ואז לבצע מעין פעולת "דחיסה" של התמונה לרזולוציה נמוכה יותר, כך שמצד אחד יהיה ניתן להציג אותה ברזולוציה הנורמלית והרגילה שבמסכים שלנו, אבל מצד שני לא נראה את הפיקסלים בצורה של מדרגות.
החדשות הרעות הן שליצור כל תמונה ברזולוציה הגדולה פי 4 מגודלה המקורי ואז לדחוס אותה, זו טכניקה שדורשת הרבה כוח עיבוד. הטכניקה הזו נקראת Supersampling או SSAA, והיא כל כך תובענית שהיא כבר לא בשימוש. עם הזמן פיתחו טכנולוגיות הרבה יותר מתקדמות שמאפשרות לעשות אותו הדבר פחות או יותר אבל בצורה יותר יעילה. ברשימה חלקית בלבד נוכל למצוא את הטכניקות הבאות:
- SSAA – הכי ותיק
- FXAA
- TAA או TXAA
- MFAA
- *DLSS – הכי חדיש
וכמובן ככל שהמספר ליד הטכנולוגיה (x4,x8 וכו') גבוה יותר, כך היא מבצעת עבודה יותר טובה אך גם תובענית יותר מבחינת כוח עיבוד.
רמת שיפור גרפי: שיפור משמעותי ברזולוציות נמוכות, מינימלי ברזולוציות 4K ומעלה.
השפעה על קצב הפריימים: משמעותית.
*DLSS היא בעצם יותר מסתם טכניקת AA. באופן הכי פשטני, ניתן להגיד שהיא משתמשת במערכת למידה עמוקה כדי לעזור לכרטיס הגרפי במחשב שלנו "לחקות" תמונות שנוצרו מראש על מחשבי על ברזולוציה גבוהה פי 64 מהמקורית, כולל הצללות ואפקטים נוספים. הטכניקה דומה במקצת לAA, ועובדת רע מאוד אם מפעילים אותה עם אלגוריתם AA נוסף, לכן היא מופיעה דווקא כאן.
Tessellation
או בעברית, ריצוף. היכולת לחלק אלמנט כמו דמות או מבנה למשולשים יותר ויותר קטנים, ואז לתת לכל אחד מהם בנפרד תחושת עומק באמצעות תהליך בשם "תזוזת טקסטורות" . המשולשים הם יחידת הבנייה הבסיסית של הטקסטורה. הם קובעים כיצד אובייקט תלת מימדי יראה בעזרת חלוקה שלו לעשרות אלפי חלקים קטנטנים בעלי שיפועים שונים שיוצרים ביחד את תחושת העומק. כלל האצבע הוא שככל שהעצם מחולק ליותר משולשים, כך האיכות שלו תהיה יותר טובה וניתן יהיה להבחין בהבדלים קטנים מאוד בעצם או בדמות, עד לרמת השקעים שנוצרים בסלע או הקמטים בפרצוף של אדם.
השיטה מאפשרת להקנות לטקסטורות השונות את האפקט הוויזואלי של חומרים שונים – יותר משולשים ייצרו חומר מחוספס עם בליטות וקצוות חדים, כדוגמת אבן או קריסטל, ופחות משולשים יצרו משטח חלק יותר, כמו שיש לדוגמה. הפעלת האופציה של "ריצוף" תחדד את ההבדלים האלה במרקם ותגרום להם להיות יותר מורגשים.
רמת שיפור גרפי: משתנה ממשחק למשחק - תלוי טעם אישי יותר מאשר חומרה.
השפעה על קצב הפריימים: משתנה ממשחק למשחק.
Anisotropic Filtering
כדי לא להעמיס על המעבד, המחשב משתמש בטקסטורות ברזולוציה גבוהה יותר להצגת אלמנטים הקרובים לשחקן, כמו אבני הריצוף של הדרך או הדשא שממש ליד הרגליים, ובטקסטורות ברזולוציה נמוכה יותר לאלמנטים שמרוחקים מהשחקן כמו הרים או בניינים בקצה השני של העיר. ההבדל ברזולוציות יוצר טשטוש על המסך ככל שהאלמנט רחוק יותר, ולא מדובר בטשטוש מהסוג האומנותי והטבעי אלא בטשטוש שנראה כמו מריחת צבע.
כדי למנוע את האפקט הלא רצוי הזה, ניתן להפעיל את האופציה של Anisotropic Filtering. האלגוריתם נותן אפקט יותר ברור ונעים לעין ככל שהטכניקה שבה משתמשים טובה ומודרנית יותר. לרוב האופציות יהיו:
- Bilinear - טכניקה מיושנת יותר, אפקט המריחה עדיין ניתן להבחנה, דורש פחות משאבי מערכת.
- Trilinear
- x2
- 4x
- 8x
- 16x – טכניקה מודרנית, לא ניתן להבחין במריחה ברזולוציות גבוהות, דורשת יותר משאבי מערכת.
החדשות הטובות הן שההשפעה של האופציה הזו על ביצועי המערכת זניחה לעומת התמורה שהיא מספקת והרגשת החדות בתמונה, לכן באופן אישי אני ממליץ תמיד ללכת על האופציה של 16x.
רמת שיפור גרפי: משמעותי.
השפעה על קצב הפריימים: מינימלית.
כמובן שיש עוד אפשרויות מעניינות כמו Bloom, Vsync,Field of View ואפשר לדבר ולהרחיב גם עליהן, אבל השתדלתי להתמקד בדברים שמשפיעים יותר ודווקא פחות מובנים מאליהם. אתם מוזמנים לשחק עם ההגדרות השונות לראות אם ההורדה של טכניקות כמו God Rays, Motion Blur, Depth of Field ועוד מספקת לכם את התוצאות הרצויות.
על איזה פיצ'רים אתם לא מוכנים לוותר, ואיזה פיצ'ר אתם מכבים עוד לפני הלחיצה על New Game? מוזמנים לספר לנו בתגובות!
*רוצים לקבל את כל החדשות החמות ישר לנייד? הצטרפו לערוץ הטלגרם של Vgames!*
תגובות
1
21:13 18.03.2021 | elad9219
כתבה מצוינת, תודה רבה.
2
| פורסם ע"י