בפרויקט VR, אפקט אש המשתמש ב-200 חלקיקי billboard גורם ל-overdraw של פי 12 — במקום פיקסל אחד, מצוירות 12 שכבות. קצב הפריימים יורד מ-120 ל-45 FPS ב-Quest 3. המשימה שלנו היא להפחית את ה-overdraw לפי 2 מבלי לאבד מאיכות חזותית. במהלך השנים ייעלנו VFX עבור למעלה מ-30 פרויקטי VR: מסימולטורים ועד משחקים. לפי תיעוד הפרופיילינג של Unity, overdraw נותר הגורם העיקרי לירידות FPS ב-VR.
מדוע VFX סטנדרטי לא מתאים ל-VR?
Particle System עם Render Mode = Billboard וחומר חצי-שקוף הוא מקור קלאסי ל-overdraw. כל חלקיק חופף אחרים מספר פעמים. 200 חלקיקים עם חפיפה של 50% משמעותם מעל 300 פעולות פיקסל לכל פיקסל מכוסה. במצב RenderDoc Overdraw Heatmap, מערכת חלקיקי אש עם שלוש שכבות (להבה ראשית, עשן, גיצים) מראה בקלות overdraw של פי 8-12 במרכז. עם תקציב פריים של 8.3 אלפיות השנייה (120 הרץ ב-Quest), זה בלתי מתקבל על הדעת.
פתרון: להפחית את מספר החלקיקים ולהגדיל את גודל כל חלקיק. פחות אובייקטים עם אטלס טקסטורות גדול יותר במקום חלקיקים קטנים רבים. אטלס של 4×4 עם צורות עשן שונות — חלקיק אחד "מקפץ" על פני האטלס כדי לדמות אנימציה, ומחליף 16 חלקיקים נפרדים.
גישה שנייה: שימוש ב-VFX Graph במקום Particle System. VFX Graph רץ על ה-GPU (Compute Shader), והחלקיקים שלו לא יוצרים עומס על ה-CPU. עבור אפקטים מורכבים עם אלפי חלקיקים, VFX Graph על Quest 3 מהיר באופן ניכר. עם זאת, הוא דורש URP ו-Unity 2022+ עם תמיכה ב-Compute ב-Android — לא כל המכשירים תומכים בכך.
כיצד VFX Graph פותר את בעיית הביצועים?
VFX Graph — Visual Effect Graph ב-Unity — הוא גישה שונה מהותית. הגרף בנוי מצמתים: Spawn → Initialize → Update → Output. לוגיקת תנועת חלקיקים, התנגשויות, הצמדות למשטחים — הכל על ה-GPU דרך Compute Shader.
עבור VR, תכונות מפתח: GPU Events — חלקיקים יוצרים חלקיקים אחרים בעת התנגשות (ניצוץ מפגיעה → מספר ניצוצות משניים), הכל על ה-GPU ללא מעבר דרך ה-CPU. Depth Collision — חלקיקים מתנגשים עם depth buffer של הסצנה ללא colliders פיזיים. ב-Quest יש להיזהר: התנגשות עומק על GPU מבוסס-אריחים של Snapdragon עלולה לגרום ל-tile flush ולאבד את יתרון הסימולציה על ה-GPU.
מקרה מעשי: אפקט הריסת סלע. Particle System קלאסי: 300 חלקיקי פסולת עם פיזיקת Rigidbody על ה-CPU — 4.5 אלפיות השנייה רק לעדכון הפיזיקה. VFX Graph עם Mesh Particles ואנימציית GPU Flipbook: אותם 300 חלקיקי פסולת — 0.4 אלפיות השנייה על CPU, 1.2 אלפיות השנייה על GPU. זה פי 2.5 מהר יותר עבור אפקט מורכב.
מדוע Mesh Particles עדיפים על Billboard באפקטים קרובים?
Billboards ב-VR הם בעיה ידועה. חלקיק billboard תמיד פונה לווקטור המצלמה. במצב מונו זה עובד. בסטריאו, העין השמאלית והימנית מסתכלות מזוויות שונות — ה-billboard מכוון נכון רק לעין אחת. ההבדל קטן (~6 ס"מ מרחק בין אישונים), אבל עבור אפקטים קרובים (התזות מים, ניצוצות ליד הידיים) זה יוצר תחושת "שטיחות" מורגשת.
עבור VFX קרובים, Mesh Particles עדיפים: גיאומטריות תלת-ממדיות במקום ספייטים שטוחים. ניצוץ הוא אוקטהדרון מוארך קטן. טיפת מים היא כדור מעוות. רסיס מעופף הוא mesh מותאם עם LOD. חלקיקי mesh יקרים יותר במספר ה-vertices אך מבטלים את פער הסטריאו ונראים משכנעים משמעותית ב-VR.
פשרה: חלקיקים רחוקים וקטנים — billboard; קרובים וגדולים — mesh. קבוצת LOD ברמת Particle System מוגדרת דרך Level of Detail Bias בהגדרות האיכות — מופעים קרובים עוברים ל-renderer של mesh.
| טכניקה | עומס CPU | עומס GPU | Overdraw | המלצה ל-VR |
|---|---|---|---|---|
| Billboard Particle System | גבוה | בינוני | פי 8-12 | רק אפקטים רחוקים |
| Mesh Particles (VFX Graph) | נמוך | גבוה | ~פי 2 | אפקטים קרובים, ניצוצות |
| VFX Graph עם אטלס | נמוך | בינוני | פי 4-6 | אש, עשן, מערכות מורכבות |
כיצד להפחית Overdraw ב-VFX ל-VR: 3 שלבים
- החלף חלקיקי billboard בחלקיקי mesh עבור אפקטים קרובים מ-50 ס"מ מהמצלמה.
- השתמש ב-VFX Graph עם GPU Events עבור מערכות שבהן חלקיקים יוצרים אפקטים משניים.
- הגדר LOD ואטלס טקסטורות: חלקיק אחד עם אנימציית אטלס מחליף כמה חלקיקים נפרדים.
נוחות: מה לא לעשות עם VFX ליד הפנים
אפקטים סטרובוסקופיים — אורות מהבהבים, צבעים בהירים מתחלפים במהירות — מסוכנים במיוחד ב-VR למשתמשים עם אפילפסיה רגישה לאור. חנות Meta Quest דורשת עמידה בהנחיות לגבי תדירות הבזקים (לא יותר מ-3 הרץ עבור הבזקים במסך מלא). האילוצים מובנים ב-Particle System דרך Max Particle Lifetime ו-Emission Rate — אין טעם ליצור אפקט שמפר את הכללים האלה.
אפקטים שחוסמים את כל שדה הראייה (פיצוץ ישירות מול הפנים, מסך מלא בחלקיקים) גורמים לאי-נוחות. כלל: אם חלקיקים יכולים להגיע לטווח של 50 ס"מ ממצלמת ה-HMD, הוסף Min Particle Distance או דעיכת מרחק דרך עקומת Size over Lifetime הקשורה ל-Distance to Camera.
דרישות טכניות ל-VFX בפלטפורמות VR
| פלטפורמה | תקציב פריים | Render Pipeline | שיקולים מיוחדים |
|---|---|---|---|
| Meta Quest 2/3 | 8.3 אלפיות השנייה | URP | טקסטורה מקסימלית 256x256, VFX Graph עם GPU |
| PSVR2 | 11 אלפיות השנייה | HDRP | עיבוד foveated עם מעקב עיניים |
| PC VR (SteamVR) | 16 אלפיות השנייה | HDRP או URP | DirectX 12, shaders מותאמים |
מה כלול בעבודת ה-VFX שלנו
- ניתוח דרישות: בחינת רפרנסים, מסמכי עיצוב משחק, פלטפורמת יעד.
- אב-טיפוס: 2-3 אפשרויות יישום עם בדיקות ביצועים.
- פיתוח: יצירת מערכות חלקיקים, shaders, הגדרת LOD ו-culling.
- אופטימיזציה: פרופיילינג ב-RenderDoc, סימולציית עומס, התאמות לתקציב.
- אינטגרציה: שילוב בפרויקט, כוונון פרמטרים לגיימפליי.
- תיעוד: תיאור הגדרות, המלצות שימוש.
- תמיכה: שיפורים באחריות תוך חודשיים לאחר המסירה.
לוחות זמנים משוערים
| סוג VFX | לוח זמנים משוער |
|---|---|
| 3-5 אפקטים פשוטים (Particle System, אטלס) | 3-7 ימים |
| סט VFX למשחק (10-20 אפקטים) | 2-5 שבועות |
| מערכת VFX Graph עם לוגיקה מותאמת | 3-8 שבועות |
המחיר מחושב לאחר ניתוח דרישות ופלטפורמת היעד. כדי להעריך את הפרויקט שלך, צור איתנו קשר — נמצא פתרון יעיל ומקיף. הזמן פיתוח VFX עם אחריות לביצועים.





