Ռենդերինգի և գրաֆիկայի տեխնոլոգիաները ժամանակակից փղերում
Ժամանակակից փղը տեսողական 2D/2 է։ 5D բեմը կինոնկարների անիմացիաներով, մասնիկներով և փոստի էֆեկտներով, որը պետք է կայուն աշխատի ռուսական հեռախոսների և զննարկիչների վրա։ Գրագետ ռենդեր Սթեքը տալիս է
1. նիշերի ընթերցում և հաղթում, 2։ կայուն 60 FPS առանց գերտաքացման, 3։ թեթև ավազակ և արագ սկիզբ, 4։ «վաու էֆեկտները» առանց փոխզիջման արդյունքի ազնվության հետ (տեսողական ամեն ինչ արդեն հաշվարկված արդյունքի վերևում է)։
Ներքևում տեխնոլոգիայի համակարգային պարամետրն է, որը համապատասխանում է pline և metriks-ին։
1) Render-Stack-ը, որից այն կազմված է
2D/WebGL/Canvas — PixiJS, Phaser, in-house движки (HTML5/WebView).
2. 5D/3D - Unity (WinGL/winle), PlayCanvas, Three։ js.
NoGPU (հայտնվում է) - շեյդերների/փոփի գործընթացների աճը և հիշողության վերահսկումը։- Աուդիո/թայմլին - Windows Audio/Unity Audio + անիմացիայի թայմլայնը (GSAP/Spine/Unity Timeline)։
- Ասետները սպրեյտների ատլասներ են, SNF/MSDF տառատեսակներ, Spine/DragonBones, տեսահոլովակներ/վեբ կոդեր, թեմային տեքստեր։
- Գործիքները Spector են։ Js/DevToome/Unity Profiler, ատլաս փաթեթներ, ASTC/ETC2/BCn։
2) Գրաֆիկական մոդելները ՝ 2D, 2։ 5D և չափավոր 3D
Մաքուր 2D 'հարթ հարվածային գործիքներ, UI շերտերի, ֆիլտրերի և դիմակների վրա։ Արագ և կանխատեսելի։
2. 5D 'խոստումնալից հարվածային գործիքներ, զուգահեռ, թեքություն/կլորացում, 3D տարրեր 2D UI վերևում։ «Վաու/պերֆորմանսի» լավագույն հարաբերակցությունը։
Ամբողջական 3D 'բոնուսների/ինտրոյի տեսարաններ, հաջողության անիվներ, «շուրջը տեսախցիկ»։ Պահանջում է կարգապահություններ 'LOD, նյութերի սահմանափակումներ, որոնք պարզեցված են։
Առաջարկություն 'փղի մեջ հիմնական ընթերցումը 2D/UI շերտերում է։ 3D-ը ինտրոյի և հազվագյուտ սեթերի համար է։
3) Շեյդերները և փոստի էֆեկտները (անվտանգ և տնտեսապես)
Տիպիկ շեյդեր բլոկներ
Glow/Engine խորհրդանիշների/հաղթողների համար (PPF/բլյուեր ռենդեր-target)։- Color Grading/HSV Shift-ը ռուսական փուլերի համար (օր/գիշեր, բոնուս)։
- Distortion/Heatwave-ը ֆոնի վրա, որ չի խանգարում տեքստին։
- Meditive particles-ը հրավառությունների համար (էժան բլենդինգով)։
- Disks/Stencils-ը «պատուհանի» համար թմբուկի վրա, overdrance խնայելը։
Խելացի մակարդակի փոստի գործընթացը 'Bloom-ից downsample chain, Vignette, Chromatic Aberration (նվազագույն)։ Բջջային, անջատենք/պարզեցնենք LOD-ը։
4) Անիմացիա ՝ թայմլայններ, մեջքեր և «հաղթելու զգացում»
Timline: state machine 'Idle no Spin to Stop no Count no Celebrate ", անիմացիաները ժամանակի ընթացքում դետերմինացված են, արդյունքը արդեն հայտնի է։
Կմախքի անիմացիան (Spine/DragonBones) 'հերոսներ/դիմակահանդեսային խորհրդանիշներ, տնտեսական հիշողությամբ, հեշտ է փոխել տեսահոլովակները։
Tweening (GSAP/Animae) 'ինտերֆեյսի և հաղթողի հաշվարկների թվային անիմացիաները (east OutExpo) «աճի զգացողության» համար։
Ձայնային համաժամացումը 'հիմնական պահերը (թմբուկի/կոմբոյի կանգառը) - թայմլեյնի գծապատկերների միջոցով, ոչ թե ալյումինե տրամաբանությամբ։
Motion-հասանելիությունը '«ավելի քիչ շարժման» ռեժիմը, շեյքերի/զուգահեռ անջատումը։
5) Տեքստուրներ, ատլասներ և թեմեր
Սպրեյտների ատլասները 'մեծ ատլասները (2048-4096), որպեսզի նվազեցնեն տեքստերի անցումները։ խմբավորում է բլենդինգին։
Սպիտակուցիա- ASTC (iOS/ժամանակակից Android), ETC2 (Android), BCn (desktop/BL2), fallback WEBP/PNG։
- Մենք պահպանում ենք mip մակարդակները 3D և մեծ ֆոնների համար (նվազեցնում է shimmering)։
- Վերականգնված ալֆա-ջրանցք 'ճիշտ խառնուրդ և ավելի քիչ ընկույզներ։
- DRDF/WPF տառատեսակներ 'հստակ վերնագրեր/թվեր, որոնք ունեն կոնտուրային/մոմենտով առանց հսկայական տեքստերի։
6) Մասնիկները (GPU-friendly)
Բիլբորդները ատլաս + GPU instancing (3D) կամ բատչինգը (2D)։
Delitive/Alpha-blend շերտերով; սահմանափակում ենք արտադրողների տևողությունը։- Բարակ դեղաչափը 'մասնիկները «ասում են» հաղթանակը, բայց չեն արգելափակում խորհրդանիշները։
- Pooling օբյեկտները, որպեսզի չօգտագործեն GC սպայկին։
7) Բեմի իրականացումը և նկարելու կարգը
Слои: Back → Reels → Symbols → FX → UI → Overlay.
Սկզբում անթափանց, ապա կիսաթափանցիկ։- Դիմակներ/ստենսիլներ թմբուկի վրա, որպեսզի ֆոնը չփոխվի "թափանցիկ ոլորտների տակ։
- Հստակ Z-կարգը, խորության անջատումը 2D-ում, որպեսզի ավելորդ թեստեր չլինեն։
8) Displine assets և բեռնումը
Ատլասների գեներացիան (Textom Packer/Spine Export), ավտոմատ կտրում, հեշի անուններ ("icon. ab12. png`).
Բոնուսային տեսարանների և ծանր FX (lazy) հետաձգված բեռնումը։- Տառատեսակների անջատումը (SNDF), կորերի անիմացիաների արտահանումը։
- CDN & kes-basting: immutable-ասետներ, կարճ TTL մանիֆեստի մոտ։
- ExpresscreenCanvas-ը main thread-ից դուրս ռենդերինգի համար (որտեղ հասանելի է)։
9) Արտադրողականություն ՝ նպատակներ և չափումներ
Նպատակներ ՝ 60 FPS-ը հանրաքվեով։ First Playable <5-10 վեբ/< 10 հետ Altail; կայուն ջերմաստիճանը։
Հիմնական SLI
Windowcalls (ավելի շատ բատչինգ, ավելի քիչ տեքստերի անցումներ)։- Overdr.ru (ջերմային քարտեզը խուսափում ենք թափանցիկ «պարզ»)։
- GPU time/CPU time (timing render և տրամաբանություն առանձին)։
- Memory/VSA (պիկի, արտահոսքեր)։
- Խմբավորման չափը և p95 ասսեթների բեռնումը։
- Stutters/GC (col-w և տևողությունը)։
Գործիքներ ՝ Spector։ js, Chrome DevTools/Performance, Safari Web Inspector, Xcode/Android GPU Inspector, Unity Profiler/Frame Debugger.
10) Օպտիմիզացում, որոնք «անում են եղանակը»
Բատչինգ 'մենք խմբավորում ենք նյութերով/ատլասամ/բլենդինգին։ Pixi-ում '«ParticleContainer »/« Geometry» արտոնագրերը։
LOD 'Մենք անջատում ենք ծանր շեյդերներ/մասնիկներ թույլ սարքերում։ այլընտրանքային ատլասները ավելի փոքր են։
Պիքսել-պարկուճը և նպատակաուղղված դիրքերը ավելի քիչ են, քան թմբուկի ճեղքման ժամանակ։- Թափանցիկության նվազումը, մենք փոխարինում ենք մեծ ալֆա-պլաստմասսաները թեքված պայուսակների/դիմակների վրա։
- Kashirum render նպատակներ (RTT) կրկնվող էֆեկտների համար։
- Մենք կրճատում ենք տառատեսակները 'մեկ MSDF հավաքածու դինամիկ ոճերով, փոխարեն տասնյակ PNG տառատեսակների։
- Փոստի գործընթացը կիսագնդի լուծման վրա (quarter/half res) + բիլատերալ ապսկեյլ է։
- Հաշվարկների անիմացիաները 'ֆրեյմ կլամպ (ոչ ավելի, քան N-ը մեկ վայրկյանում)։
- Խելացի ֆիզիկա 'ոչ մի «ծանր» սիմուլյացիա, միայն նախօրոք պատրաստված կորեր։
11) Գույնը, գամման և ընթերցանությունը
SRGB/գծային ռենդեր 'ճիշտ գույներ և խառնուրդ։- UI-ի հակադրություն 'հաղթական թվերը բարձր հակադրություն և ստվեր/աուտլայն են։
- Color-blind friendly: խուսափել քննադատական համադրություններից (կարմիր/կանաչ առանց դոպինգի ձև)։
- Ընկերության color grading-ը զգույշ է, չի սպանում խորհրդանիշների ընթերցանությունը։
12) Գրաֆիկայի համաժամացումը խաղային և աուդիո հետ
Մեջքի/բոնուսի արդյունքը հաշվարկվում է մինչև անիմացիան։ գրաֆիկը միայն վերարտադրում է սցենարը։- «Creschendo» կետերը (թմբուկի կանգառ, մեգա-հաղթական) - ռուսական թայմլինում։ ձայնը և թրթուրը կապված են դրանց հետ։
- Duration budget: թմբուկի ոտքերը <1։ 2–1. 6 s, հաշվարկում է հաղթանակը 'արագ և հնարավորությամբ «սկիպ»։
13) Գրաֆիկայի որակի փորձարկումը
Տեսողական սարքավորումը (regression) 'խորհրդանիշներ, տառատեսակներ, դիրքեր։- Դեվիսների մատրիցը 'Android (Mali/Adreno), հին iPhone/iPad, desktops։
- Ջերմային քարտեզները overdr.ru և GPU պրոֆիլները։
- Յուզաբիլիտները կարդալու համար ՝ 3-5 հարցվողներ, տարբեր պոլիգոնալներ/պայծառություններ, գլարե պայմաններ։
- Հասանելիությունը '«քիչ շարժում», մեծ CTA, բարձր հակադրության ռեժիմը։
14) Մինի բաղադրատոմսեր (պատրաստի ձևանմուշներ)
A. Baraban հետ կեղծ-3D
Նիշերի հարթ ժապավենը + պատուհանի դիմակը։- Ֆոն թեթև զուգահեռ (երկու հյուսվածքներ, տարբեր արագություններ)։
- Շեյդերը «կլորացված» է և թեթև ստվեր պատուհանի ներսում։
- Անիմացիոն վիճակների տեղափոխումը թայմլայնի վրա, ոչ RNG տրամաբանությամբ։
Բ. «Մեծ հաղթանակների» էֆեկտը
Scale-bounce վերնագիր (0. 9 → 1. 1 → 1. 0, easeOutElastic).
Հրավառության մասնիկները 0։ 8–1. 2 ս
Glow SNF տեքստ + sport bloom-ի վրա կես թույլտվության վրա։- «Բաց թողնելու» կոճակը միշտ հասանելի է։
C. «Էժան» կասկադի ռիթմը
Մեկ կոմպոզիտային ձայն մարկերների հետ։ գրաֆիկները միայն «հանգստացնում են»։- Հաշվարկիչ X-ը աճում է քայլերով, նիշերի պարունակությամբ 'MSDF entine-ի միջոցով։
- Post-էֆեկտները անջատվում են LOD-ով թույլ սարքերի վրա։
15) Հաճախակի սխալներ և ինչպես խուսափել դրանցից
Հսկայական թափանցիկ սպրեյտները նպաստում են վայրի overdrance-ին։ Լուծումը 'կտրել «ձևով «/դիմակներ/RTT։- Չափազանց շատ տառատեսակներ/VIM պայթյուններ։ Լուծումը 'մեկ MSDF-2019, շեյդերի մեջ։
- Տեսախցիկները առանց հակամարմինների/դադար են տալիս կադրերի/տաքացման։ Լուծումը 'կարճ ցիկլներ, ցածր բիթրեյթ, սթոպը, երբ պտտվում է։
- Պատահական GC-ն հաղթանակների հաշվարկման ժամանակ։ Լուծումը 'object poo.ru, wwarm արտադրողներին։
- Timing camps-ը ժամանակի փոխարեն հաստատեց ռասինխրոնը։ Լուծումը 'կապել «www.TatTime »/timline։
- Չափազանց պայծառ բլոումը «օճառ» է։ Լուծումը 'downsample chain + ինտենսիվության սահմանափակում։
- Դժվար փոստի էֆեկտները բոլորի վրա։ Լուծումը 'LOD/դրոշները dewiss-ով։
16) Գրաֆիկական խառնուրդի չեկի թերթիկը
Պերֆորանսը
- 60 FPS հանրաքվեներում; Պիկային շրջանակ <բյուջեի բյուջե
- Systecalls միջանցքում; Ատլասամ/նյութեր
- Overdr.ru չի «կարմիր» թմբուկի և UI-ի վրա։
- Հիշողությունը/VSA-ն, առանց արտահոսքի, առանց արտահոսքի
Ասացվածքներ
- Atlass hashas, սպիտակուցներ ՝ ASTC/ETC2/BCn + fallback։
- DRF/MSDF տառատեսակներ, մեկ հավաքածու նախագծի համար
- LOD տարբերակները էֆեկտների/ֆոնային տեսարանների
Անիմացիա/թայմլին
- Բոլոր հիմնական իրադարձությունները 'ըստ մարկերների, «սկիպը» հասանելի է
- Համաժամեցված աուդիո/վիբրոյի հետ
- Motion-reduced ռեժիմը միացված է
Թեստեր
- Տեսողական կեղևները կանաչ են
- Pupails GPU/CPU-ի մատրիցի վրա։
- Բեռի տեսարաններ (մուլտֆիլմ-հաղթանակներ, «շատ մասնիկներ»)
Բաշխում
- CDN-ն տաքանում է, քեշ-բաստինգը աշխատում է
- Lazy-loading բոնուսներ և ծանր FX
- Բանդլը վերելակում, First Playable-ը նպատակին
Փղերի գրաֆիկը գեղագիտության և ճարտարագիտության հավասարակշռությունն է 'շեյդերներ և էֆեկտներ հույզերի համար, մարտկոց և հակադրություն արագության, վերահսկվող դրամայի, բոլոր խաղացողների համար։ Թիմերը հաղթում են, երբ նրանք ձևավորում են 71-driven տեսողությունը, չափում են ամեն ինչ www.calls-ից մինչև overdr.ru, պահում են ավազակները թեթև և տալիս խաղացողին «wau» առանց FPS-ի կորստի և ընթերցանության։ Հենց այդպես են ծնվում ժամանակակից արցունքները 'գեղեցիկ, արագ և ազնիվ։