
למה חשוב להשתמש ב-Ray Tracing בניידים
טכנולוגיית Ray Tracing מאפשרת לכם ליהנות מתאורה, משתקפות ומצללים ריאליסטיים, כדי להעמיק את הצוללת שלכם לעולם הפנטזיה האפלולי של Abyss of Dungeons. גרפיקה מרהיבה היא חיונית במשחקים לנייד, אבל השגת אפקטים באיכות גבוהה כמו עיבוד נתונים ב-ray-trace הייתה אתגר משמעותי. בעבר, המגבלות על ביצועי המשחקים לנייד הגבילו את השימוש בשיטות רינדור מתקדמות, והובילו לפשרות באיכות החזותית בהשוואה לחוויה במחשב ובקונסולה.
המטרה של Krafton Abyss of Dungeons הייתה להתגבר על המגבלות האלה. המטרה הייתה לשלב את טכנולוגיית ה-ray tracing, שמשמשת בדרך כלל לפלטפורמות מתקדמות, בגרסה לנייד של Unreal Engine 5 (UE5). המטרה של המאמץ הזה הייתה לשפר באופן משמעותי את חוויית המשתמש של השחקנים על ידי הצגת גרפיקה מציאותית ועשירה יותר מבחינה חזותית במכשירים ניידים. הצוות נאלץ לטפל בצווארי בקבוק בביצועים, להתאים צינורות עיבוד גרפיים מורכבים כמו Lumen של UE5 ולהבטיח יציבות בחומרה ניידת מגוונת. זהו צעד משמעותי לקראת הצגת גרפיקה באיכות של קונסולה במשחקים לנייד.
השיפור החזותי במעבר מ-Rasterization ל-Ray Tracing
רסטרטיפיקציה רגילה היא הסטנדרט לעיבוד תמונה בניידים בגלל המהירות שלה. הוא מקרין אובייקטים תלת-ממדיים על מסך דו-ממדי פיקסל אחרי פיקסל. השיטה הזו יעילה, אבל היא מפשטת את האינטראקציות של האור, וכתוצאה מכך הצללים והשיקופים פחות מציאותיים.
עיבוד קרניים מציע גישה שונה. הוא מדמה את הנתיב בפועל של קרני האור ומחשב את האינטראקציות שלהן עם אובייקטים. כך מתקבלות תאורה, צלליות והשתקפויות מדויקות ומציאותיות מאוד. עם זאת, הריאליזם הזה מגיע במחיר של עומס חישובי גבוה. חישוב הנתיב והאינטראקציות של כל קרן מחייב כוח עיבוד משמעותי.
השוואה בין רסטרטיזציה לבין Ray Tracing
בטבלה הבאה מפורטים ההבדלים העיקריים בין רסטרטיזציה לבין מעקב קרניים:
תכונה | יצירת רשת נקודות | ניתוב קרניים |
---|---|---|
מהירות | מהירה | איטית |
ריאליזם | נמוך יותר | גבוה יותר |
שימוש במשאבים | נמוכה | רחב |
עוצמת המשאבים הזו מהווה אתגר למכשירים ניידים, שיש להם כוח עיבוד מוגבל בהשוואה למחשבים. בעבר, המגבלה הזו הקשתה על השימוש ב-ray tracing בפלטפורמות לנייד.
בחירת Ray Tracing והטמעתו ב-Android: גישה שיטתית

כדי להטמיע את ה-ray tracing ב-Android באמצעות Vulkan, נבחנו שתי שיטות עיקריות: Ray Queries ו-Ray Pipelines. שאילתות Ray סיפקו גישה פשוטה יותר, שמאפשרת לנהל את הקרניים באופן ידני בתוך שיבוטים, וקל יותר לשלב אותן במערכות קיימות.
עם זאת, צינורות עיבוד נתונים של קרניים (Ray Pipelines) סיפקו פתרון עם יכולת התאמה טובה יותר, שמאפשר ל-Vulkan לנהל את המעבר והחיתוך של קרניים. בהתחלה, שאילתות Ray היו מהירות יותר במעט בסצנות פשוטות יותר, אבל צינורות עיבוד נתונים של Ray הוכיחו יכולת התאמה טובה יותר וביצועים טובים יותר באפליקציות מורכבות יותר של מעקב קרניים, ולכן הם בחירה טובה יותר לפיתוח לטווח ארוך ולדרישות חזותיות מורכבות. בחרנו לאזן בין קלות הפיתוח הראשונית לבין יכולת ההתאמה לעתיד והביצועים הכוללים, תוך התמקדות בשלמות החזותית של המשחק לטווח הארוך.
התאמת Lumen ב-UE5 לנייד: משימה עצומה

Lumen של UE5 היא מערכת של התאורה הגלובלית וההשתקפות בזמן אמת, שחוללה מהפכה בתאורה בסביבות המשחק. עם זאת, הוא תוכנן במקור למחשבים ולקונסולות עם ביצועים גבוהים, ולא למכשירים ניידים. המורכבות של Lumen והדרישות למשאבים היוו אתגר משמעותי לשילוב בנייד. כדי להתאים את Lumen ל-Android, נדרשו שינויים נרחבים בצינור עיבוד הנתונים לעיבוד תמונה ובמרכז הידור ה-shader של UE5, וגם אופטימיזציה של Acceleration Structures (AS) כדי לנהל ביעילות נתוני סצנה מורכבים. הצוות ניסה למלא את הפער הזה, כדי לאפשר למכשירים ניידים לטפל בחישובים המתוחכמים של התאורה ב-Lumen בלי להתפשר על הביצועים או על היציבות. המאמץ הזה תרם גם לקוד הבסיסי הרשמי של Unreal Engine, והועיל לקהילה הרחבה יותר של מפתחי המשחקים וקידם את יכולות הרינדור לנייד.
צללים והשתקפויות ב-Ray Tracing: שיפור הריאליזם החזותי


כדי להטמיע את הצללים של Ray Tracing, צריך לעקוב אחרי קרני האור ישירות מהמשטחים למקורות האור, וכך לקבל רמת דיוק גבוהה יותר בהשוואה למפות צללים רגילות. התהליך כלל שלב מקדים של עומק, צללים של שאילתות קרניים, הסרת רעשי נתונים ושילוב עם שלב התאורה. הצללים הרכים הושגו ביעילות באמצעות קרן אחת עם רעידות, ולאחר מכן הסרה של רעשי הרקע. כדי ליצור שיקוף, הצוות הטמיע תהליך רב-שלבי שכולל שלב של מעביר G-buffer, אחסון של נתוני שיקוף והיטים של טרסינג קרניים, המרה של מזהה החומר, שלב של פתרון (יצירת התמונה המשתקפת) ושלב של מיזוג (שילוב השתקפויות בסצנה הראשית). שיפורים לאופטימיזציה כמו קריאה חוזרת של מעבד (CPU), גישות של חלוקה לריבועים, קיבוץ מכונות ו-builds אסינכרוניים של AS שיפרו באופן משמעותי את הביצועים והפחיתו את התקורה, תוך התמקדות בצריכת המשאבים הרבה של התהליכים האלה במכשירים ניידים.
ההשפעה על הביצועים ואסטרטגיות אופטימיזציה


ההשפעה של מעקב קרניים על הביצועים, במיוחד עם השתקפויות, הייתה תלויה מאוד בסצנה. בסצנות עם משטחים גדולים ומחזירי אור, ההשתקפויות עלולות להשתמש בחלק משמעותי מזמן הפריימים (30-40%). אופטימיזציות היו חיוניות כדי להפוך את מעקב קרני האור לאפשרי. הצוות השתמש בשיטות רבות כדי לצמצם את התקורה ולהגביר את היעילות: שימוש בגישה של רינדור מבוסס-אריחים כדי למזער את זמן העיבוד המבוזבז, קיבוץ של מכונות עם אותו חומר וגיאומטריה כדי לצמצם את מספר הקריאות לציור, בניית מבני Acceleration רק לגיאומטריות גלויות ושימוש במחשוב אסינכרוני ליצירת מבני AS. האסטרטגיות האלה מקצרות באופן משמעותי את זמן העיבוד ומפחיתות את העומס על המעבד הגרפי, כך שאפשר לבצע מעקב אחר קרניים בזמן אמת בחומרה לנייד.
מקורות מידע נוספים


המשחק Abyss of Dungeons של Krafton הוכיח שבעזרת התאמות אסטרטגיות ואופטימיזציות אפשר להביא טכניקות עיבוד מתקדמות כמו טריאסינג (ray tracing) לפלטפורמות לנייד. הצוות הצליח להתאים את מערכת Lumen של UE5, הטמיע פתרונות עיבוד תמונה בהתאמה אישית ופתר מכשולים טכניים רבים כדי לספק חוויית משחק חזותית משופרת. המאמץ הזה לא רק שיפר את האיכות החזותית של Abyss of Dungeons, אלא גם סיפק תובנות ושיטות חשובות לפיתוח משחקים לנייד בעתיד. המשחק הזה מדגים את היכולת של שיתוף פעולה בין מפתחי משחקים לבין ספקי טכנולוגיה לחדש ולשפר את חוויית הגיימינג בנייד, ולהתקרב לאיכות של משחקים במחשבים ובקונסולות. אפשר לקרוא על האופטימיזציות המפורטות של אימון קרניים באתר למפתחים של Samsung.