אני חושב שיש הנחה מוטעת שקיימת ברוב קהילת הגיימינג והסיבה להנחה הזאת גם מאוד סבירה. הרי אתה רואה משחק בלי RT רץ ב-100FPS, אז מדליקים השתקפויות RT והמשחק נופל מ-100FPS ל-40FPS. מסקנה? RT הוא קטסטרופה לביצועים ולכן אולי בעצם כדאי לוותר על RT ולעשות גרפיקת רסטוריזציה קלאסית מתקדמת יותר כי המחיר של RT פשוט לא שווה את זה.
הבעיה היא שההנחה הזאת מוטעת, אפילו אם היא נראת נכונה כשמסתכלים על נתוני ביצועים יבשים. RT דורש הרבה, אבל גם רסטוריזציה דורשת הרבה. רסטוריזציה דורשת ערימות על גבי ערימות של זיופים בכדי להגיע לגרפיקה של משחק כמו TLOU. מזייפים תאורה, מזייפים צל, מזייפים GI, מזייפים AO וכך הלאה וכל אותן פעולות דורשות לא מעט עבודה מה-GPU. אתה יכול לראות משחקים ב-PC שרק הורדה של איכות הצל פתאום נותנת בוסט של 15% בביצועים ו-GI איכותי כמו SVOGI של המנוע של קרייטק זולל מספיק ביצועים שהוא לא בר ישום על הפס4 בלי לשלם מחיר כבד מדי. כלומר גם רסטוריזציה זה כבד.
אז למה RT מצטייר כמו שהוא מצטייר עכשיו? מכמה סיבות:
1) כי מפתחים שמים אותו במשחקים קיימים. זה אומר שאי אפשר ממש לעקור את המערכות מהשורש ולהשתמש ב-RT בלב של המנוע כי רוב המשתמשים לא יכולים להשתמש ב-RT. כלומר RT הוא תבלין נחמד, לא חלק אנטגראלי במנוע. יש שימושים ל-RT שלוקחים 1% מכמות הקרניים שאפקט השתקפות דורש (סאונד, התמצאות AI, ראיה של AI, פרופרגציה של עשן/אש/נוזלים/גז, hit detection, פיסיקה, DOF ועוד) אבל אתה לא באמת יכול להשתמש בהם בלי שתכננת את המשחק מהיום הראשון להשתמש בהם, זה לא משהו שיגיע בפאטצ' רנדומאלי בדיעבד. ולעשות אפקט אחד ויזואלי כבד? זה הכי פשוט והכי תובעני אז זאת התוצאה שאתה מקבל היום.
2) בגלל שהיום אתה עושה אפקט וחצי, זה אומר שאתה עושה ערמות של עבודת GPU, CPU וזיכרון רק בשביל להכין את הקרקע ל-RT (בונה מבנה BVH כמעט כל פריים ועושה denoising כל פריים, רצח עם ל-GPU וגם משפיע על ה-CPU ותופס המון זיכרון) אבל בסוף משתמש בו רק במקום או שניים כי זה רק תלאי, לא חלק מהמנוע שלך. זה מקביל ללקחת את אשתך ביום הולדת לסושיה, לשלם לבייביסיטר 300 שקלים ובסושיה 200 שקלים. 500 שקלים זה ממש לא בילוי זול, אז מזל שהלכתם לסושיה, כן? אבל יכלתם ללכת לאונאמי ולצאת עם חשבון כפול של 400 שקלים ובמבט שטחי נראה שזה יעלה לך כפול - 1000 שקלים במקום 500, אבל בעצם זה עולה לך 700 שקלים כי הבייביסיטר זה מחיר קבוע שתשלם אותו כך או כך. כלומר ברגע שעשית את עבודת ה-GPU, ה-CPU והזיכרון בכדי להכין את הקרקע ל-RT, אתה יכול להשתמש ב-RT בהמון מקומות והפגיעה בביצועים היא לא כפולה ומשולשת, היא קטנה בהרבה.
3) כי אנחנו משווים ביצועי RT לביצועי רסטוריזציה של הדור הקודם. צל של משחק פס5 בלעדי יכול להיות זללן משאבים גדול מצל RT. הרי אתה מצפה שרמת התאורה, הצל, ה-GI וכו' יעלו דרגה על הפס5 וה-XS, כן? ולדברים האלה יהיה מחיר. כשאתה משווה ביצועי RT למערכת תאורה של משחק פס4 אולי המחיר נראה כבד, אבל כשאתה משווה למערכת תאורה של משחק פס5? לאו דווקא. אגב, יש מצגת של EPIC שמדברת על זה שממספר מסויים של עצמים על המסך, צל RT אשכרה מבצע טוב יותר מצל רסטוריזציה קלאסי כי צל רסטוריזציה קלאסי הופך למאוד כבד כשמגיעים לרזולוציות גבוהות של צל ועולם מאוד מפורט. אם נרצה שיותר עצמים על המסך יטילו צל ושהצל יהיה באיכות גבוהה יותר, מחיר הביצועים יכול להיות בסופו של יום גבוה משל צל RT.
4) בגלל ש-RT עוזר לעשות חישובי תאורה אמיתית, זה אומר שברגע שמשלבים מספיק ממנו במערכת תאורה, אפקטי רסטוריזציה מסויימים נהפכים למיותרים. לדוגמה במשחק כמו TLOU2 עושה תאורה ישירה (נניח פנס, שמש או מנורה שמטילים אור על הסביבה) ובנפרד עושים GI (נניח האור של השמש מקפץ מהקיר לרצפה), צל של תאורה ישירה (נניח צל שנוצר מפנס), צל של תאורה עקיפה (אני בספק אם הם טורחים) ו-AO שהוא אפקט שגורם להחשכה של פינות ואזורים צפופים כי במציאות אזורים יותר דחוקים מקבלים פחות תאורה לא ישירה ולכן הם חשוכים יותר. כלומר סכמנו פה 5 אפקטים:
- תאורה ישירה
- צל תאורה ישירה
- תאורה עקיפה (GI)
- צל תאורה עקיפה (אגב, נדיר ולדעתי לא קיים באף מנוע היום)
- AO
ומה אתה צריך לעשות עם RT בשביל להגיע לאותה תוצאה? סליחה, לא אותה תוצאה, תוצאה מרשימה בהרבה. אתה צריך לעשות בדיוק דבר אחד - תאורה ישירה ב-RT ואז לתת לקרניים להמשיך לקפוץ קצת אחרי הפגיעה הראשונה (ואפשר לעשות את זה אקיומולטיבית, כלומר להמשיך לחשב קפיצות של קרניים בפריימים הבאים ולצבור).
הפעולת RT הבודדת הזאת היא בדיוק מה ש-A4 עושים במנוע החדש שלהם והיא גורמת ל:
- תאורה ישירה (כי ירית קרניים מכל מקור אור, אז חשבת את ההתפשטות של האור)
- צל תאורה ישירה (אם התאורה עובדת כמו תאורה אמיתית, איפה שאין אור -> יש צל. הרי צל הוא חוסר של אור)
- תאורה עקיפה (אם חישבת לאיפה הקרניים מקפצות אחרי הפגיעה הראשונה, בעצם חשבת תאורה עקיפה, GI)
- צל תאורה עקיפה (איפה שאין אור -> יש צל. קבלת צל GI שזה משהו שלדעתי לא קיים באף משחק ברסטוריזציה, הכי דור הבא שיש)
- AO (כי AO בא לזייף צל GI מקפיצות מרובות, אם חישבת כבר GI אמיתי מקפיצות מרובות, נוצר לך AO באופן טבעי)
זה אומר שמשני אפקטים (טכנית אפקט אחד שחוזר על עצמו), יש לך מערכת תאורה שלמה שהיא עליונה בכל צורה למערכת תאורה הקיימת שהייתה צריכה לזייף 5 אפקטים נפרדים בכדי להשיג תוצאה פחות מרשימה. ומעבר לזה, היא דינאמית ב-100%, אתה יכול לעשות מחזורי יום ולילה, אתה יכול לעשות סביבה הריסה, אתה יכול להזיז כל מקור אור איך שבא לך ובעצם יש לך חופש מוחלט בעיצוב משחק ובעיצוב השלבים. כלומר אתה יכול להגיד שתאורת RT זה יותר מדי לספיידרמן, אבל מסתבר שגם תאורת רסטוריזציה זה יותר מדי לספיידרמן כי הכל שם אפוי לתוך הטקסטורות ואין שינוי ב-time of day בגלל זה. עולם פתוח בלי מחזור יום לילה זה מדכא
We're just normal men. We're just innocent men