איך להבחין בין שיידר שעובד לשיידר שנכשל?
מתכנת מוסיף מים לסצנה ומקבל מלבן כחול. ה-Asset Store מספק נכס מיושן עם ארטפקטים במובייל. פיתוח שיידרים הוא לא רק החלת טקסטורה—זו משימת הנדסה מורכבת: צריך להבין את ה-depth buffer, לדגום נורמלים במספר שכבות, ולארגן קצף במפגשים עם גאומטריה. בלי זה, השיידר או לא עובד או הורג את ה-FPS.
הצוות שלנו מתעסק בהנדסת שיידרים ו-VFX מעל חמש שנים—במהלך הזמן הזה עבדנו על עשרות פרויקטים מאינדי ועד AAA. פעם אחת, לקוח הביא סצנת מים מה-Asset Store: במכשיר מובייל, היא רצה ב-12 FPS בגלל חוסר LOD ו-batching שגוי. שכתבנו את השיידר ל-URP והשגנו 60 FPS תוך שמירה על הוויזואליה.
URP מול HDRP: מה כדאי לבחור לפרויקט שלך?
הבחירה ב-Render Pipeline נקבעת בהתחלה—שיידרים ל-HDRP לא עובדים ב-URP ולהפך. העריכו את הפשרות לפי הטבלה:
| פרמטר | URP | HDRP |
|---|---|---|
| פלטפורמות יעד | מובייל, PC, קונסולות | PC, קונסולות (High-end) |
| ביצועים | עומס נמוך, עד 40% מהיר יותר במובייל | עומס גבוה, פוטוריאליסטי |
| Screen Space Reflections | מוגבל (מגרסה 14) | מלא עם הגדרות |
| Volumetric Fog | דרך מותאם אישית | מערכת מובנית |
| מערכת מים | לא קיימת | מובנית |
| צמתי ShaderGraph | סט בסיסי | מורחב (Diffusion Profile, Eye) |
מסקנה: URP מספק עד +40% FPS במכשירי מובייל בהשוואה ל-HDRP. ל-RPG מובייל, בחרנו ב-URP—באייפון 8 קיבלנו 60 FPS יציב ללא אובדן איכות. HDRP מוצדק ב-PC/קונסולות שבהם נדרשים פוטוריאליזם ומערכת המים המובנית.
איך לפתח שיידרים ב-ShaderGraph: ממים ועד צמחייה
ShaderGraph הוא עורך מבוסס צמתים ללא HLSL, אבל הבנה של "מתחת למכסה" היא חיונית. בואו נפרק שיידר מים—הוא כולל כמה טכניקות.
תנועת נורמלים. שתי שכבות של normal maps המדוגמות במהירויות וכיוונים שונים:
Time → Multiply (speed1) → Add → Sample Texture 2D (normalMap) Time → Multiply (speed2) → Add → Sample Texture 2D (normalMap) → Normal Blend → Normal (фрагментный шейдер) שתי שכבות כיווניות מנוגדות יוצרות אפקט של גלים רצים ללא מחזוריות tiling. צריכה: 2 דגימות טקסטורה, מה שמתאים לתקציב של 40 draw calls למשטח מים.
עומק וקצף. באמצעות הצומת Time → Multiply (speed1) → Add → Sample Texture 2D (normalMap) Time → Multiply (speed2) → Add → Sample Texture 2D (normalMap) → Normal Blend → Normal (фрагментный шейдер) (יש להפעיל opaque texture ב-URP/HDRP), אנחנו מקבלים את ההפרש בין עומק הסצנה למיקום הפרגמנט של המים. עומק רדוד (מפגש עם החוף) → קצף דרך Step/Smoothstep. עומק עמוק → כחול רווי יותר, אטימות גבוהה יותר. קצף מוסיף 1-2 ms על GPU אבל מספק קו חוף ריאליסטי.
שבירה. Scene Depth + היסט UV לפי normal map—הקרקעית "שוחה". מים מעובדים ב-Transparent queue, אחרי כל הגאומטריה האטומה. הקפידו להפעיל Opaque Texture בהגדרות URP, אחרת השבירה לא תעבוד.
פרנל והשתקפויות. צומת Fresnel Effect—קרוב לנורמל המצלמה, המשטח שקוף יותר; בזוויות חדות, הוא משקף. נכון פיזיקלית עבור דיאלקטריים. מוסיפים cubemap או Reflection Probe מעל מסכת הפרנל. בפלטפורמות מובייל, החליפו Reflection Probe ב-cubemap ברזולוציה נמוכה (128x128)—חיסכון של 1-2 ms.
שיידר צמחייה. אנימציית שיחים ודשא ללא סימולציית פיזיקה—דרך vertex shader. ב-ShaderGraph: קחו קואורדינטות XZ של הקודקוד כהזזת פאזה, Scene Color עם פאזות שונות, הכפילו ב-Vertex Color ערוץ R (לבן = מתנועע, שחור = מקובע לקרקע). תוצאה: דשא מתנועע בגלים, הבסיס נשאר קבוע. עבור "רוח כשהשחקן רץ," הוסיפו פרמטר CPU Time → Sine. שיידר כזה מטפל ב-100,000 קודקודים ב-0.3 ms באייפון 11.
הנכס המקורי השתמש ב-4 שכבות normal map והשתקפויות cubemap דינמיות—במובייל, הוא סיפק 12 FPS. אחרי שכתוב ל-URP עם שתי שכבות, קצף מפושט, והשתקפויות אפויות, השגנו 60 FPS. זמן פיתוח שנחסך: יום אחד במקום 3 ימים להתאמת נכס.
VFX Graph: איך לנהל מיליוני חלקיקים על GPU
VFX Graph רץ כולו על GPU דרך Compute Shaders. בניגוד ל-Particle System (Shuriken), שעובד על CPU, כאן אפשר לנהל מיליוני חלקיקים ללא עומס CPU. דוגמה: פיצוץ עם רסיסים (200 חלקיקים) על GPU לוקח 0.05 ms, בעוד Particle System על CPU באותה מורכבות לוקח 0.8 ms.
הגרף מחולק להקשרים: Spawn (פרץ, קצב קבוע, טריגר אירוע), Initialize (מאפיינים ראשוניים), Update (כוח משיכה, טurbulence, התנגשויות), Output (Quad, Mesh, Lit/Unlit, Distortion).
דוגמה: פיצוץ עם רסיסים
Spawn: Single Burst (count: 200) ↓ Initialize: Position: Sphere Volume (radius: 0.1) Velocity: Spherical * Random(5, 15) Size: Random(0.05, 0.3) Lifetime: Random(0.5, 2.0) Color: Gradient по lifetime (белый → оранжевый → серый) ↓ Update: Gravity (force: -9.8) Drag (coefficient: 0.2) Turbulence (intensity: 2.0) Collision (SDF сцены или Depth Buffer) ↓ Output Quad (Unlit): Texture: искра Blend Mode: Additive טurbulence משתמש ב-Noise Field—רעש תלת-ממדי, חלקיקים סוטים אורגנית. אנימציות Flipbook בהקשר Output—אנימציית ספרייט לכל חלקיק.
איך לייעל VFX לפלטפורמות מובייל?
למכשירי מובייל, הפחיתו את מספר החלקיקים ל-50 ובטלו Collision—חיסכון של 3 ms. השתמשו ב-GPU instancing עם instancing אוטומטי של VFX Graph: אותו אפקט פיצוץ באייפון 11 רץ ב-0.02 ms לפרץ, מהיר פי 2.5 מהגדרה מבוססת CPU. כמו כן, הפעילו particle LOD דרך Quality Levels ב-VFX Graph: ספירות חלקיקים נמוכות יותר במכשירים בינוניים תוך שמירה על נאמנות ויזואלית במכשירים גבוהים.
למה post-processing דורש כוונון ספציפי לפלטפורמה?
Post-processing—אפקטים המוחלים על התמונה הסופית אחרי העיבוד הראשי. ב-Unity דרך מערכת ה-Volume (Local/Global Volume). ערימה טיפוסית לפרויקט אקשן:
| אפקט | מטרה | הערות |
|---|---|---|
| Bloom | זוהר של מקורות בהירים | Threshold 0.8, intensity 0.5—חוסך 1 ms |
| Tonemapping | ACES filmic לריאליזם, Neutral לסטייליזציה | סטנדרטי לפרויקטים ריאליסטיים |
| Color Adjustments | קונטרסט +10%, רוויה +5% | כוונון לאווירה |
| Vignette | הכהיית קצוות | Intensity 0.3—ממקד למרכז |
| Motion Blur | טשטוש לאורך וקטור תנועה | בטלו במובייל—חוסך 2 ms GPU |
| Depth of Field | Bokeh | זהירות ב-VR—שובר תפיסת עומק |
| Screen Space Ambient Occlusion | SSAO / HBAO | מכהה פינות גאומטריה, +1.5 ms |
לפלטפורמות מובייל, אנחנו מבטלים Motion Blur ו-SSAO, מפחיתים Bloom ל-2-3 מעברים—תקציב post-processing סופי של 3-4 ms. ב-PC/HDRP, הערימה יכולה לקחת 8-10 ms, אבל זה מפוצה בכוח GPU.
אילו תוצרים אתה מקבל?
- פיתוח שיידרים מותאם אישית ב-ShaderGraph (URP/HDRP): מים, צמחייה, אפקטי דמויות, הולוגרמות, dissolve.
- אפקטי VFX Graph: פיצוצים, אש, עשן, קסם, סביבה. ביצועים מקסימליים—עד 2 מיליון חלקיקים על GPU ב-60 FPS.
- הקמה ואופטימיזציה של Particle System (Shuriken) לפלטפורמות מובייל: החלפה ב-GPU instancing מפחיתה draw calls ב-70%.
- בניית ערימת Post-Processing המותאמת לסגנון הוויזואלי של הפרויקט, עם מדידת זמן עיבוד.
- העברת שיידרים בין URP ל-HDRP בעת שינוי pipeline: זמן ממוצע 0.5-1 יום לשיידר.
- אופטימיזציה של VFX לפלטפורמת היעד: GPU instancing, particle LOD, culling.
התוצרים כוללים קבצי מקור של שיידר ו-VFX graph, תיעוד התקנה, הדרכת צוות (ייעוץ של שעה), ותמיכה לחודש אחרי המסירה. נבחן את הפרויקט שלך ביום עסקים אחד—צור קשר. קבל ייעוץ לפרויקט שלך—נמצא את הפתרון האופטימלי ונספק לוחות זמנים.
מה הניסיון והאחריות שלנו?
מעל 5 שנים בפיתוח משחקים, 50+ פרויקטים (מובייל, PC, קונסולות). אנחנו מבטיחים שהשיידר יעבוד על פלטפורמת היעד ב-FPS המוצהר—אם לא, נשכתב אותו בחינם. דוגמה: עבור אולפן אינדי אחד, שכתבנו את כל השיידרים ל-URP—ה-FPS באייפון 8 עלה מ-25 ל-60, ותקציב זמן העיבוד ירד ב-40%. אנחנו משתמשים בגרסאות היציבות העדכניות ביותר של Unity (LTS) ו-Unreal Engine 5, ועובדים עם Vulkan, Metal, DirectX 12.
השוואה: נכס מוכן מה-Asset Store דורש לעיתים קרובות עיבוד מחדש (תאימות, ביצועים)—פיתוח שיידר מותאם אישית מהיר פי 2-3 מבחינת זמן מאשר התאמת קוד של מישהו אחר. ושיידר שנכתב מאפס למשימות שלך נותן לך שליטה של 100% על ביצועים וויזואליה. חיסכון בתקציב על פרויקט אחד יכול להגיע ל-30% בגלל היעדר קוד מיותר.
מהם שלבי העבודה?
- ניתוח: בחינת הסצנה, פלטפורמות היעד, דרישות FPS. לכידת הפניות ויזואליות.
- אב-טיפוס: יצירת שיידר/VFX graph, בדיקה על מכשיר ייחוס.
- אינטגרציה: שילוב בפרויקט, כוונון פרמטרים, אופטימיזציה של draw calls ו-batching.
- QA: בדיקה על כל פלטפורמות היעד (Android, iOS, PC, קונסולות), תיקון ארטפקטים.
- פריסה ומסירה: מסירת קבצי מקור, תיעוד, הדרכה. תמיכה לחודש.
לוח זמנים: 2 עד 10 ימי עסקים תלוי במורכבות. המחיר מחושב באופן אישי—כתבו לנו, נבחן את הפרויקט שלך. הזמינו פיתוח שיידר—קבלו תוצאה מוכנה עם אחריות ביצועים.





