הבנת MetalFX, מגבר הביצועים הגרפי של אפל

בעוד Metal היא טכנולוגיית העיבוד הגרפי המהיר של אפל למשחקים, MetalFX מוסיפה שיפורים כדי לגרום לה לזרוח עלאפל סיליקון. הנה איך MetalFX עובד.

בשנת 2014 הציגה אפל את טכנולוגיית עיבוד הגרפיקה והמשחקים החדשה שלה בשםמַתֶכֶת.

Metal הוא ממשק API לעיבוד המספק ביצועים מהירים המותאמים לחומרה של אפל. עם הופעת מעבדי Apple Silicon GPU, מתכת זוכה לשיפור ביצועים גדול עוד יותר.

בעיה אחת בעיבוד גרפי של משחקי מחשב היא איך לצייר מספר רב של מודלים מצולעים במהירות עם הצללות ואפקטים משטחים ברזולוציה גבוהה במהירות. ככל שקצב הפריימים ומורכבות סצנת המשחק עלו, בעיה זו יצרה צווארי בקבוק בצינורות לעיבוד גרפי.

ה-Metal API הוא Apple C++ API שיש לו שפת הצללה משלו הנקראת, כפי שהייתם מצפים, Metal Shading Language (MSL). ה-Metal API הושווה ל-DirectX 12 ב-Windows, או לספריית העיבוד הגרפי של צד שלישי Vulkan.

יש גםמָהִירוגרסאות Objective-C של ה-Metal API.

עם זאת, מכיוון שמתכת היא מאפל ומיועדת לחומרה של אפל, היא מספקת את ביצועי העיבוד הגרפי הטובים ביותר מכל טכנולוגיית עיבוד זמינה במכשירים אלה.

אתה יכול לראות דוגמה של עיבוד מתכת בפעולה בכל פעם שאתה מתחילאפל ארקיידמשחק על אiOSאוֹtvOSהתקן - אנימציית הלוגו הקצרה של Apple Arcade שפועלת לפני שכל משחק של Apple Arcade מעובד באמצעות Metal.

משחקים רבים משתמשים בהאצת חומרה של GPU ובהצללות מחושבות מראש כדי להאיץ את העיבוד הגרפי. במטאל, פקודות גרפיקה מקודדות מראש ולאחר מכן נשלחות למעבדי GPU לעיבוד.

מצבי רינדור מחושבים מראש אומרים ל-GPU מראש כיצד להגדיר את צינור הרינדור לביצועים מקסימליים.

הצללות עיבוד, או תוכניות מחושבות מראש השולטות באור, חושך וצבע, משמשות במהלך עיבוד סצנה תלת-ממדית כדי לספק ריאליזם ואפקטים מיוחדים. ה-MSL מתאר כיצד פועלים הצללות מתכת.

Shaders הוצגו לראשונה בתוכנה מסחרית בשנת 1988 עם תוכנת RenderMan של פיקסאר, שיש לה היסטוריה ארוכה בתחוםמקחוזר עשרות שנים אחורה.

ברוב צינורות העיבוד המודרניים של GPU, הן נתוני תלת-ממד והן תוכניות שפת הצללה נשלחות ל-GPU לעיבוד, אשר לאחר מכן מנהל תהליך רב-שלבי או צינור שבאמצעותו כל פריים בסצנה נוצרת.

שלבי העיבוד כוללים בערך טרנספורמציות של גיאומטריה, פירוק מודלים למשולשים ומרובעים, החלת הצללות של קטעים, בדיקת עומק ושילוב, והדרה של משטחים וחפצים חסומים. השלב האחרון כולל שילוב של הכל למאגר הפריימים הסופי לצפייה.

כל זה קורה עשרות פעמים בשנייה בחומרת GPU מודרנית.

מתכת כוללת גם הצללות ביצועים - תוכניות שמאיצות את הרינדור תוך הפחתת עומס ה-GPU. הצללות ביצועים כוללות סינון תמונות, רשתות עצביות, מתמטיקה מתקדמת ומעקב אחר קרניים.

מעקב אחר קרניים משפר במידה ניכרת את משטחי האובייקטים, הטקסטורות וההשתקפויות של מודל תלת-ממד ממקורות אור.

בשנת 2020 הודיעה אפל שהיא העבירה מתכת למעבדי סיליקון ו-GPU של אפל כדי לספק ביצועים מהירים בהרבה. בְּWWDC2022, אפל הציגה תכונה חדשה במטאל בשםMetalFX.

MetalFX מאפשר עיבוד סצנה מהיר ומדויק יותר על ידי חישוב מחדש והחלפת מסגרות מסוימות כדי לחשב מחדש ולהחליק קצוות של אובייקט מעובד.

הנשק הסודי של MetalFX הוא טכנולוגיה שנקראת קנה מידה.

דוגמה לשינוי קנה מידה מימין. פיקסלים וקצוות אובייקט חדים וחלקים יותר.

הרעיון הוא לרנדר אובייקט או סצנה ברזולוציה נמוכה יותר, מה שהופך את רינדור מאגר המסגרת הכללי למהיר יותר. לאחר מכן, הוא מוסיף שלב נוסף לפני שהוא מוצג על ידי הגדלת הסצנה.

על ידי ביצוע רוב עיבוד הסצנות בממדים קטנים יותר, ניתן להציג סצנות מהר יותר ועם יותר פירוט ומורכבות. ברוב המקרים, זה בדרך כלל מהיר יותר לרנדק אובייקטים של סצנה בקנה מידה קטן יותר, ואז לשפר את הרזולוציה הכוללת של הפריים הסופי מאשר לרנדר את הסצנה כולה בממד סופי גדול יותר.

על ידי שימוש בשינוי קנה מידה, MetalFX יכול לספק גם עיבוד סצנה מהיר יותר וגם יותר פירוט וחדות של אובייקט.

דוגמה להגדלת קנה המידה של MetalFX. המסגרת מימין נראית חדה יותר.

MetalFX משתמשת בשני סוגי קנה מידה ברורים: הגדלה מרחבית ושינוי קנה מידה זמני.

בשינוי קנה מידה מרחבי, נוצרות שתי מחלקות מתכת - MTLFXSpatialScalerDescriptor ו- MTLFXSpatialScaler. האובייקט המתאר מתאר פרטים של אובייקט ה-Scaler המרחבי, והאובייקט MTLFXSpatialScaler מבצע את הקידוד בפועל (באמצעותוencodeשִׁיטָה).

כַּאֲשֵׁרencodeנקרא, האובייקט MTLFXSpatialScaler יוצר ושולח פקודות רינדור לאובייקט MTLCommandBuffer לצורך רינדור. תהליך זה חוזר על עצמו עבור כל פריים בסצנה.

העלאת קנה המידה המרחבית של MetalFX יכולה לספק בערך עד פי שניים את פרטי הסצנה ללא אובדן ביצועים מהותי.

יצירת אובייקטים של MTLFXSpatialScaler היא יקרה מבחינה חישובית וצריכה להיעשות רק כאשר יישום מופעל או תצוגה משנה רזולוציות.

בהגדלת קנה מידה זמני, נתונים מהמסגרת הקודמת משמשים כקלט להגדלת קנה המידה של המסגרת הנוכחית.

דגימה על ודגימה זמנית הן טכניקות המשתמשות בנתוני פיקסלים בודדים ממסגרות כדי להשיג שינוי קנה מידה. נתונים מכל פיקסל וגם פיקסלים ממספר פריימים נדגמים.

אנטי-aliasing זמני הוא מעט יותר עתיר מחשוב ודורש נתוני צבע, עומק ותנועה נוספים כדי לעבוד.

הנה דוגמה נוספת לשיפור קנה המידה של אנטי-alias ממצגת ה-WWDC של אפל:

1080p, שמאל - ו-4K מוגדלים מימין עם העלאת קנה מידה נגד כינוי.

רוב עיבודי ההגדלה של MetalFX אמורים להתרחש לאחר רינדור אך לפני ביצוע שלאחר עיבוד סופי כלשהו במסגרות.

שימוש אחד ב-MetalFX anti-aliasing upscaling הוא להגדיל את הרזולוציה של מסגרות 1080p כך שהם מתקרבים לרזולוציית 4K.

בדיוק כמו בשינוי קנה מידה מרחבי, MetalFX מספקת שתי מחלקות לשינוי קנה מידה נגד aliasing: MTLFXTemporalScalerDescriptor ו-MTLFXTemporalScaler.

שלם MetalFXתיעודזמין באתר המפתחים של אפל. אפל ערכה גם סרטון סשן של MetalFX ב-WWDC '22 שכותרתו "הגבר את הביצועים עם MetalFX Upscaling" המתאר את השימוש ב- MetalFX בפירוט, כולל קוד לדוגמה.

מספר כותרי משחק AAA כוללשמיים של אף אדםהשתמש כבר ב- MetalFX במכשירי אפל.

MetalFX מבטיחה טכניקות מחשוב גרפי מודרניות להגברת רזולוציית הסצנה וביצועי המשחק על חומרת GPU מודרנית. סביר להניח שטכנולוגיית המתכת החדשה תחולל מהפכה במשחקים במכשירי אפל.