אופטימיזציה של צללים דינמיים למכשירים ניידים

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

היכולות שלנו

שירותי סטודיו אחרים

יישומי VR/AR/MR מותאמים אישית

טבלו לקוחות וצוותים בחוויות דיגיטליות חדשות

פיתוח משחקי Unity

מקונספט לשחרור — משחקים שאנשים זוכרים

מידול ואנימציה בתלת-ממד

החיו את המוצר שלכם בגרפיקת תלת-ממד ואנימציה

סימולטורי ציוד VR תעשייתיים

אמנו מפעילים על ציוד בבטחה, ללא השבתה

הוראות AR לייצור

הנחיות שלב-אחר-שלב ישירות על הציוד — ללא נייר

סימולטורי VR לבטיחות

תרגול תגובה לשעת חירום ללא צורך בהגעה לשטח

תוכניות הכשרה ב-VR/AR

הכשרת עובדים בשירות, קליטה ומיומנויות רכות ב-VR

חידוני הכשרה לעובדים

בדיקת ידע באמצעות משחקים — בקלות וללא לחץ

הוראות וידאו ארגוניות

סרטונים ברורים להכשרת העובדים והלקוחות שלכם

גיימיפיקציה עסקית

הניעו צוותים עם מכניקת משחק ב-KPI ובמשאבי אנוש

יישומי קיוסק אינטראקטיביים

מסכים אינטראקטיביים לקמעונאות, תערוכות ומשרדים

מתקני VR/AR

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

תערוכות ומוזיאונים וירטואליים

התערוכות שלכם מגיעות לכל פינה בעולם, 24/7

מסעות אירועים ומשחקי מותג

משחקים בלתי נשכחים לכנסים ולאירועי לקוחות

שאלות נפוצות

העבודות האחרונות

  • פיתוח משחקים עבור Mortal Motors
    פיתוח משחקים עבור Mortal Motors
    1638
  • משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    1123
  • פיתוח משחק עבור חברת Second term
    פיתוח משחק עבור חברת Second term
    751
  • אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    830

אופטימיזציה של צללים דינמיים למכשירים ניידים

לעתים קרובות אנו רואים פרויקטים שבהם GPU נייד עם Shadow Map ברזולוציה של 2048×2048 ללא קסקדות הוא דרך ישירה ל-18 אלפיות השנייה על ה-framebuffer רק עבור מעבר הצל. על Adreno 640, זה צורך את התקציב התרמי לפני שעיבוד הגאומטריה הראשית בכלל מתחיל. צללים בנייד אינם "הגדר ושכח" — זהו איזון מתמיד בין איכות ויזואלית למגבלות תרמיות. אנו מעריכים את הפרויקט שלך ומציעים פתרון מפתח ב-2–4 ימים.

למה הגדרות ברירת המחדל של Shadow Distance ב-Unity פוגעות בביצועים בנייד

הטעות הנפוצה ביותר היא השארת Shadow Distance בברירת המחדל (150 מ') ושימוש ב-Hard Shadows ב-URP ללא קסקדות. ה-GPU אז מעבד Shadow Map עבור כל הגאומטריה הנראית בסצנה, כולל אובייקטים במרחק 80 מטר שהשחקן לעולם לא יתקרב אליהם מספיק כדי להעריך את הצל.

מקרה קלאסי נוסף הוא שימוש ב-Realtime GI עם Enlighten בנייד יחד עם צללים דינמיים. Enlighten מחשב מחדש lightmaps בכל פעם שמקור אור זז, מה שגורם ב-Mali-G72 עם 4 ליבות לירידות קבועות ל-24 FPS במעברים בין אזורי תאורה. הפתרון הוא להעביר את כל האובייקטים הסטטיים ל-Mixed Lighting עם Subtractive Mode ולהשאיר Realtime רק על דמויות.

צללים קסקדיים (Cascade Shadow Maps) בנייד דורשים גם הם זהירות. שתי קסקדות במקום ארבע במרחקים של 8/40 מ' במקום 10/30/60/150 מ' נותנות רווח ביצועים ניכר. יש להגדיר Shadow Bias ידנית לכל סצנה — הערך האוטומטי של URP גורם לעיתים קרובות ל-Peter Panning על משטחים שטוחים בגלל depth buffer נייד (16-bit במכשירים רבים).

איזה stack אנו משתמשים לאופטימיזציה של צללים

אנו עובדים ב-Unity URP עם Custom Renderer Feature. הכלים העיקריים — Frame Debugger, מודול GPU Profiler ב-Unity Profiler, Snapdragon Profiler ו-Mali Graphics Debugger ללכידת נתונים מהמכשיר. הגדרה נכונה של קסקדות צל יכולה להפחית את עומס ה-GPU בעד 60%.

התהליך מתחיל בלכידת baseline: FPS, זמן GPU, מספר Shadow Caster Draw Call. בפרויקט טיפוסי עם 300+ אובייקטים בסצנה, Shadow Caster Pass מייצר 180–220 draw calls — חצי מהתקציב המומלץ לנייד (400 בסך הכל).

עבודה נוספת:

  • העברת אובייקטים סטטיים קטנים (סלעים, מדרכות, קישוטים) ל-Shadow Static — הם נכנסים ל-Shadow Atlas הסטטי ואינם מצוירים מחדש בכל פריים.
  • לדמויות ואובייקטים דינמיים, השתמש ב-Screen Space Shadows במקום Shadow Map היכן שעומק הסצנה מאפשר (עובד על Vulkan/Metal).
  • הגדר Shadow Fade Distance עם מעבר חלק ל-Blob Shadow (צל מטקסטורה מוקרנת) מעבר ל-15 מ' — בלתי מורגש ויזואלית, עלות מינימלית.
  • ב-GPUs מבוססי tile (Adreno, Mali), הפעל Early-Z Culling באמצעות מיון נכון של Render Queue: גאומטריה אטומה ראשונה, שקופה אחרונה.

לפרויקטי VR ב-Quest 2/3, יש סיפור נפרד — Multiview Rendering (single-pass stereo) מעבד את ה-Shadow Map פעם אחת לשתי העיניים. אבל אם בסצנה יש אובייקטי Shadow Caster עם Culling Masks שונים לעין שמאל/ימין, מעבר הצל מתפצל לשני מעברים עצמאיים, מה שמוסיף מיד +8–12 אלפיות השנייה. זו מלכודת באגים בלתי נראית ב-Editor. פתרון — איחוד Culling Masks לצללים.

איך להגדיר Shadow Map ל-30 FPS יציב בנייד

תוכנית שלב-אחר-שלב לפרויקט טיפוסי:

  1. צור URP Asset חדש לנייד: השבת Soft Shadows, הפחת את רזולוציית הצל ל-1024.
  2. הגדר Shadow Distance ל-30–50 מ', השתמש ב-2 קסקדות עם חלוקה של 60/40.
  3. לאובייקטים סטטיים, החל Baked Lightmap דרך Mixed Lighting.
  4. לאובייקטים דינמיים, הפעל Screen Space Shadows. אם המכשיר לא תומך בכך (OpenGL ES 3.0), יישם ידנית Blob Shadow לאובייקטים רחוקים מ-15 מ'.
  5. בדוק את Render Queue: אובייקטים אטומים (Geometry) צריכים להופיע לפני שקופים למחצה (Transparent). זה מפעיל Early-Z Culling.

שיטה זו חוסכת עד 60% מזמן ה-GPU בהשוואה ל-Shadow Map מלא — ההבדל נראה בבדיקות: Shadow Map רגיל ב-Quest 2 נותן 62 FPS, בעוד Screen Space + Blob נותן 71 FPS עם פחות ייצור חום.

מה כלול בעבודה: שלבים ותוצרים

ביקורת סצנה. אסוף נתונים מהמכשיר היעד דרך ADB + Unity Profiler: מספר Shadow Caster, זמן GPU Shadow Pass, הגבלה תרמית במשך 5 דקות של עומס. כולל: דוח עם מדידות baseline והמלצות.

מפרט טכני. בהתבסס על תוצאות הביקורת, קבע מה ניתן להמיר ל-Baked, מה נשאר Mixed, ומהו Shadow Distance ריאלי עבור המשחקיות של אותו פרויקט. תקבל מסמך תוכנית עבודה.

יישום. הגדר URP Asset, Renderer Feature, Culling Groups לצללי LOD, כתוב Shadow Caster Pass מותאם אישית אם הסטנדרטי לא מכסה את הצרכים (למשל, לצמחייה עם Alpha Cutout). כולל: הגדרת פרויקט, קוד pass מותאם, אינטגרציה ל-pipeline שלך.

בדיקת חומרה. הרץ על לפחות שלושה מכשירים מטריצת היעד: נמוך (Snapdragon 665), בינוני (Snapdragon 778G), גבוה (Snapdragon 8 Gen 2). בדיקת הגבלה תרמית — 15 דקות של סשן משחק רציף. כולל: דוח בדיקות.

פרופיילינג ואיטרציה סופית. השווה ל-baseline, הוסף מעבר Blob Shadow נוסף במידת הצורך. צור קשר כדי להעריך את הפרויקט שלך ביום אחד. הניסיון שלנו: 5+ שנים בגרפיקה ניידת, 50+ פרויקטים מוצלחים עם Unity URP.

איך לבצע אופטימיזציה של צללים במכשירי VR?

ל-VR (Quest 2/3), אנו משתמשים בעיבוד סטריאוסקופי single-pass, שמחצה את מעבר הצל. אבל המפתח הוא להימנע מכפילות של מעבר הצל עקב Culling Masks שונים. אנו גם מיישמים Screen Space Shadows למישור הקרוב (עד 10 מ') ו-Blob Shadows למרחק. זה נותן 72 FPS יציב ללא הגבלה תרמית.

השוואת גישות:

שיטה FPS ב-Quest 2 זמן GPU איכות
Cascade Shadow Maps (4 קסקדות) 58–62 16–18 אלפיות השנייה גבוהה
Cascade Shadow Maps (2 קסקדות) 68–71 10–12 אלפיות השנייה בינונית
Screen Space + Blob Shadow 71–72 6–8 אלפיות השנייה מקובלת

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

איך לבדוק את זמן מעבר הצל במכשיר 1. הפעל את Unity Profiler מחובר למכשיר דרך ADB. 2. הפעל את מודול GPU Profiler. 3. סנן לפי "Shadow" או "ShadowCaster". 4. השווה את זמן ה-GPU מול התקציב (16.6 אלפיות השנייה ל-60 FPS).
היקף המשימה לוח זמנים משוער
ביקורת + הגדרת URP בסיסית (סצנה אחת) 2–4 ימים
אופטימיזציית צללים מלאה (3–5 סצנות) 1–2 שבועות
פרויקט VR עם Multiview + Custom Renderer Feature 2–4 שבועות

העלות מחושבת בנפרד לאחר ביקורת הפרויקט וניתוח הדרישות.

טעויות נפוצות שאנו רואים בפרויקטים

אי הגדרת Render Shadow Maps לכל אובייקט — כל האובייקטים מעבדים Shadow Map ללא קשר למרחק מהמצלמה, למרות שניתן להסיר אובייקטים רחוקים דרך ShadowCastingMode.Off ברמת LOD2.

שימוש ב-Light.shadowCustomResolution = 4096 בסקריפט ללא בדיקת SystemInfo.graphicsMemorySize — בטלפונים תקציביים עם 2 GB RAM, זה מבטיח קריסה בזיכרון נמוך.

ערבוב MSAA x4 עם צללים דינמיים על אותו Render Target ב-Mali ישן — הדרייבר נופל לתוכנה, FPS יורד פי 2–3. במכשירים אלה, חייבים לכפות MSAA x2 או להשבית דרך QualitySettings.antiAliasing.

קבל ייעוץ — ננתח את הפרויקט שלך ונספק פתרונות. הזמן ביקורת.