ترتبط كل هذه الكلمات بتطوير الهاتف المحمول أكثر مما يبدو للوهلة الأولى: تساعد مسرعات سداسية بالفعل في تدريب الشبكات العصبية على الأجهزة المحمولة ؛ الجبر والماتان في متناول اليد للحصول على وظيفة في شركة Apple ؛ لا تتيح لك برمجة GPU تسريع التطبيقات فحسب ، بل تعلمك أيضًا رؤية جوهر الأشياء.
في أي حال ، كما يقول رئيس تطوير بريزما المحمول
أندريه فولودين . وأيضًا حول كيفية تدفق الأفكار إلى تطوير الأجهزة المحمولة من GameDev ، وكيف تختلف النماذج ، ولماذا لا يتمتع Android بطمس أصلي - وأكثر من ذلك بكثير ، تم إصدار إصدار منتج من AppsCast. تحت الخفض ، سنتحدث عن تقرير أندريه على
AppsConf دون المفسدين.
AppsCast هو بودكاست مؤتمر مطور تطبيقات MobileConf . كل قضية هي ضيف جديد. كل ضيف هو متحدث في المؤتمر الذي نناقش معه تقريره ونتحدث عن الموضوعات المتعلقة به. يستضيف البودكاست أعضاء لجنة برنامج AppsConf ، أليكسي كودريافتسيف ودانييل بوبوف.أليكسي كودريافتسيف: مرحباً بالجميع! أندري ، من فضلك أخبرنا عن تجربتك.
أندريه فولودين : نحن في بريزما نقوم بتطوير منتجات مرتبطة بشكل أساسي بمعالجة الصور ومقاطع الفيديو. لدينا التطبيق الرئيسي هو بريزما. الآن نحن بصدد إنشاء تطبيق Lensa آخر للوظائف الشبيهة بـ Facetune.
أقود تطوير الهاتف المحمول ، لكنني مدرب ألعاب. لدي الجزء الأساسي كله ، وأنا أكتب خطوط أنابيب GPU لجميع هذه التطبيقات. أقوم بتطوير أطر عمل أساسية حتى تعمل الخوارزميات والخلايا العصبية التي طورها فريق البحث والتطوير على الأجهزة المحمولة ، وتعمل في الوقت الفعلي. باختصار ، لقتل الحوسبة الخادم وكل ذلك.
أليكسي كودريافتسيف: لا يبدو هذا كأنه تطوير نظام iOS منتظم.
أندريه فولودين: نعم ، لدي مثل هذه التفاصيل - أنا أكتب على سويفت كل يوم ، ولكن في الوقت نفسه فهي بعيدة كل البعد عن ما يعتبر تطوير iOS.
دانييل بوبوف: لقد ذكرت خطوط أنابيب GPU ، ما هو كل شيء؟
Andrey Volodin: عند إنشاء برامج تحرير صور ، ستحتاج أيضًا إلى تكوين البنية وتحلل المنطق ، لأن التطبيق يحتوي على أدوات مختلفة. على سبيل المثال ، في Lensa هناك أداة خوخه تمويه الخلفية باستخدام الخلايا العصبية ، وهناك أداة إعادة لمس تجعل الشخص أكثر جمالا. كل هذا يحتاج إلى العمل بشكل أكثر كفاءة على GPU. علاوة على ذلك ، يُنصح بعدم نقل البيانات بين المعالج وبطاقة الفيديو في كل مرة ، ولكن بناء مجموعة من العمليات مسبقًا وتنفيذها في تشغيل واحد وإظهار النتيجة النهائية للمستخدم.
خطوط أنابيب GPU هي "كتل صغيرة" يتم من خلالها تجميع إرشادات بطاقة الفيديو. ثم تقوم بكل هذا بسرعة وكفاءة ، وتأخذ النتيجة في وقت واحد ، وليس بعد كل أداة. أتأكد من أن خطوط أنابيب GPU لدينا بأسرع ما يمكن وفعالة وموجودة بشكل عام من حيث المبدأ.
أليكسي كودريافتسيف: أخبرني ، كيف أتيت إلى هذا؟ يبدأ مطور نظام التشغيل iOS العادي بالتثبيت والقوالب ، ثم ينتقل إلى مكان ما عبر واجهة برمجة التطبيقات ويسعد. كيف حدث أنك تفعل شيئا مختلفا تماما؟
أندريه فولودين: بالنسبة للجزء الأكبر ، هذه صدفة. قبل أن أحصل على وظيفة ، صنعت ألعابًا لنظام التشغيل iOS. كان الأمر مثيراً للاهتمام بالنسبة لي دائمًا ، لكنني فهمت أنه لا يوجد مكان في روسيا على وجه الخصوص للتطور في هذا الاتجاه. لقد حدث أن وجدنا بعضنا البعض مع بريزما. لقد احتاجوا إلى مطور iOS يمكنه الكتابة على Swift وفي الوقت نفسه يعرف وحدة معالجة الرسومات GPU ، على وجه الخصوص ، Metal ، التي ظهرت للتو ، وأنا بالتأكيد أوافق هذا الوصف.
لقد استجبت لهذا المنصب الشاغر ، كان لدينا تآزر ، وللسنة الثالثة الآن كنت أعمق وأعمق في هذا الشيء. إذا حدث خطأ ما الآن ، فأنا أمتلك بالفعل جميع أجهزة Viper و MVVM - لا أعرف حتى كيف يتم فك تشفيره - وسيتعين علي أن أفهمه منذ البداية.
ماذا يفعل مهندس GPU
دانييل بوبوف: يقول
ملف التعريف الخاص بك AppsConf المهندس GPU. ماذا يفعل GPU المهندس معظم اليوم إلى جانب شرب القهوة؟
أندريه فولودين: من الضروري هنا أن نذكر كيف يختلف المعالج اختلافًا جوهريًا عن وحدة معالجة الرسومات. ينفذ المعالج العمليات كما لو كان بالتتابع. غالبًا ما يكون تعدد مؤشرات الترابط الموجودة لدينا مزيفًا: يتوقف المعالج ويتحول إلى عمل أجزاء صغيرة من المهام المختلفة ، ويقوم بها في بضع شرائح. يعمل GPU في الاتجاه المعاكس بالضبط. هناك n معالجات تعمل حقًا بشكل متوازٍ ، وهناك توازٍ بين العمليات والتوازي داخل وحدة معالجة الرسومات.
مهمتي الرئيسية ، بالإضافة إلى الأشياء الشائعة مثل تحسين العمل مع الذاكرة وتنظيم إعادة استخدام التعليمات البرمجية ، هي أن أقوم بنقل الخوارزميات التي تتم كتابتها لوحدة المعالجة المركزية إلى بطاقات الفيديو بحيث تكون متوازية. هذه ليست مهمة تافهة دائمًا ، لأن هناك خوارزميات فعالة جدًا مرتبطة تمامًا بالتنفيذ المتسلسل للتعليمات. مهمتي هي التوصل إلى ، على سبيل المثال ، تقريب مثل هذه الخوارزمية التي ، ربما ، ليس بالضبط نفس الشيء ، ولكن بصريا لا يمكن تمييز النتيجة. حتى نتمكن من الحصول على تسارع 100 مرة ، جودة التضحية قليلا.
أنا أيضا ترقية الخلايا العصبية. بالمناسبة ، سنصدر قريباً إصدارًا رئيسيًا مفتوح المصدر. حتى قبل ظهور Core ML ، كان لدينا نظيرنا الخاص ، وأخيراً نضجنا لوضعه في Open Source. نموذجها يختلف قليلاً عن Core ML. أنا ، بما في ذلك ، تطوير الجزء الأساسي.
بشكل عام ، أفعل كل شيء حول خوارزميات رؤية الكمبيوتر والحوسبة.
أليكسي كودريافتسيف: إعلان مثير للاهتمام.
أندريه فولودين: هذا ليس سراً ، لن نعلن ذلك بنوع من الضجة ، فقط سيكون من الممكن رؤية مثال على الأطر المستخدمة داخل بريزما.
لماذا الأمثل ل GPU
أليكسي كودريافتسيف: أخبرني ، من فضلك ، لماذا نقوم بتحسين الخوارزميات للجرافيك بشكل عام؟ قد يبدو أنه يكفي إضافة نوى إلى المعالج أو تحسين الخوارزمية. لماذا بالضبط GPU؟
أندريه فولودين: يمكن للعمل على وحدة معالجة الرسومات تسريع الخوارزميات بشكل كبير. على سبيل المثال ، لدينا خلايا عصبية تعمل على معالج Samsung S10 المركزي لمدة 30 ثانية ، وعلى GPU سيكون هناك إطار واحد ، أي 1/60 ثانية. هذا هو تغيير تجربة المستخدم بشكل لا يصدق. لا توجد شاشة تحميل أبدية ، يمكنك رؤية نتيجة الخوارزمية التي تعمل على دفق الفيديو ، أو لف شريط التمرير ورؤية التأثيرات هناك.
ليس من الرائع إطلاقًا أن نكتب على وحدة المعالجة المركزية ، لذلك نعيد كتابة كل شيء على وحدة معالجة الرسومات. باستخدام GPU له هدف شفاف - تسريع الأمور.
أليكسي كودريافتسيف: تعالج وحدة معالجة الرسومات عمليات مماثلة لبعضها البعض بشكل متوازٍ. هل لديك فقط مثل هذه العمليات ، وبالتالي تمكنت من تحقيق هذا النجاح؟
أندريه فولودين: نعم ، الصعوبة الرئيسية ليست في الترميز ، ولكن لإنشاء مثل هذه الخوارزميات التي يتم نقلها بشكل جيد إلى GPU. هذه ليست دائما تافهة. يحدث أنك تعرفت على كيفية القيام بكل شيء على ما يرام ، ولكن لهذا تحتاج إلى الكثير من نقاط المزامنة. على سبيل المثال ، تكتب كل شيء في خاصية واحدة ، وهذه علامة واضحة على أنها ستكون متوازية بشكل سيء. إذا كتبت الكثير في مكان واحد ، فستحتاج جميع مؤشرات الترابط إلى مزامنة لذلك. مهمتنا هي تقريب الخوارزميات بحيث تتوازي بشكل جيد.
أليكسي كودريافتسيف: بالنسبة لي ، كمطور للهواتف المحمولة ، يبدو الأمر وكأنه علم الصواريخ.
أندريه فولودين: في الواقع ، هذا ليس بالأمر الصعب. بالنسبة لي ، علم الصواريخ هو VIPER.
الشريحة الثالثة
دانييل بوبوف: يبدو أنه في مؤتمر Google I / O الأخير ، أعلنوا عن قطعة من الحديد لـ TensorFlow وأشياء أخرى. متى ستظهر الشريحة الثالثة أخيرًا في الهواتف المحمولة ، TPU أو ما الذي سيتم تسميته ، والتي ستؤدي أيضًا إلى سحر ML على الجهاز؟
أندريه فولودين: لدينا هذا الشيء بالذات ، إنه يتصل عبر USB ، ويمكنك قيادة الخلايا العصبية من Google عليه. لدى Huawei هذا بالفعل ، بل لقد كتبنا برنامجًا لمسرعاتها السداسية الخاصة بهم ، بحيث تطارد الخلايا العصبية التجزيئية بسرعة P20.
يجب أن أقول أنه في iPhone أنها موجودة بالفعل. على سبيل المثال ، في أحدث جهاز iPhone XS ، يوجد معالج مساعد يسمى NPU (وحدة المعالجة العصبية) ، لكن حتى الآن فقط Apple لديها حق الوصول إليه. يقوم هذا المعالج الثانوي بقطع وحدة معالجة الرسومات بالفعل في جهاز iPhone. تستخدم بعض طرز Core ML NPUs وبالتالي فهي أسرع من المعدن العاري.
هذا مهم ، نظرًا لأنه بالإضافة إلى الخلايا العصبية الأقل استدلالًا ، يتطلب Core ML الكثير من الإجراءات الإضافية. تحتاج أولاً إلى تحويل بيانات الإدخال إلى تنسيق Core ML ، وستقوم بمعالجتها ، ثم إعادتها بتنسيقها - تحتاج إلى تحويلها مرة أخرى ، وبعد ذلك فقط تظهرها للمستخدم. كل هذا يستغرق بعض الوقت. نكتب خطوط أنابيب خالية من النفقات العامة تعمل من البداية إلى النهاية على وحدة معالجة الرسومات ، في حين أن طرز Core ML أسرع على وجه التحديد بسبب عملية الأجهزة هذه.
على الأرجح ، في WWDC في يونيو سوف يعرضون إطارًا للعمل مع NPU.
هذا ، كما قلت ، هناك بالفعل أجهزة ، لا يمكن للمطورين فقط استخدامها حتى الآن. فرضيتي هي أن الشركات نفسها لم تفهم بعد كيفية القيام بذلك بعناية في شكل إطار عمل. أو أنهم لا يريدون التخلي عنهم من أجل الحصول على ميزة في السوق.
أليكسي كودريافتسيف: مع الماسح الضوئي لبصمات الأصابع ، كان الشيء نفسه في الآيفون ، كما أتذكر.
أندريه فولودين: إنه ليس بأسعار معقولة حتى الآن. يمكنك استخدامه من المستوى الأعلى ، لكن لا يمكنك الحصول على الطباعة نفسها. يمكنك فقط أن تطلب من Apple السماح للمستخدم باستخدامه. ما زال ليس الوصول الكامل إلى الماسح الضوئي نفسه.
مسرعات سداسية
دانييل بوبوف: لقد ذكرت مصطلح مسرعات سداسية. لا أعتقد أن الجميع يعرف ما هو عليه.
أندريه فولودين: هذا مجرد جزء من بنية الأجهزة التي تستخدمها هواوي. يجب أن أقول ، هي متطورة إلى حد ما. قليل من الناس يعرفون ، لكن في بعض Huawei ، هذه المعالجات ، ولكن لا يتم استخدامها ، لأن لديهم خلل في الأجهزة. أطلقت هواوي لهم ، ثم وجدت مشكلة ، والآن في بعض الهواتف ، أصبحت الرقائق الخاصة ثقيلة الوزن. في الإصدارات الجديدة ، كل شيء يعمل بالفعل.
في البرمجة ، يوجد نموذج SIMD (تعليمات أحادية ، بيانات متعددة) ، عند تنفيذ نفس التعليمات بالتوازي على بيانات مختلفة. تم تصميم الشريحة بطريقة يمكنها من معالجة بعض العمليات بالتوازي على عدة تدفقات بيانات دفعة واحدة. على وجه الخصوص ، سداسية يعني أنه في 6 عناصر على التوازي.
أليكسي كودريافتسيف: اعتقدت أن وحدة معالجة الرسومات تعمل مثل هذا: تعمل على توجيه مهمة وتنفيذ نفس العملية على بيانات مختلفة. ما هو الفرق؟
أندريه فولودين : GPU هو الغرض العام. على الرغم من حقيقة أن البرمجة لـ GPU منخفضة إلى حد ما ، فيما يتعلق بالعمل مع coprocessors أنها عالية المستوى للغاية. للبرمجة على GPU ، يتم استخدام لغة تشبه C. على نظام التشغيل iOS ، لا يزال يتم تجميع الشفرة باستخدام LLVM في تعليمات الجهاز على أي حال. وغالبًا ما تتم كتابة هذه الأشياء الخاصة بالمعالجات الثانوية بشكل مباشر - في المجمع ، بناءً على تعليمات الجهاز. لذلك ، هناك زيادة ملحوظة في الإنتاجية ، لأنها شحذ لعمليات محددة. لا يمكنك الاعتماد عليهم في أي شيء على الإطلاق ، ولكن لا يمكنك الاعتماد إلا على ما كان الغرض منه في الأصل.
أليكسي كودريافتسيف: ولماذا يتم تصميمها عادة؟
أندريه فولودين: الآن بشكل أساسي بالنسبة لأكثر العمليات شيوعًا في الشبكات العصبية: الإلتواء - الإلتواء أو نوع من التنشيط الوسيط. لديهم وظيفة ما قبل السلكية التي تعمل بسرعة فائقة. لذلك فهي أسرع بكثير في بعض المهام من وحدة معالجة الرسومات ، ولكن في كل البقية فهي ببساطة غير قابلة للتطبيق.
أليكسي كودريافتسيف: يبدو وكأنه معالجات DSP ، التي كانت تستخدم في الصوت ، وجميع الإضافات والتأثيرات عملت عليها بسرعة كبيرة. تم بيع أجهزة باهظة الثمن خاصة ، ولكن بعد ذلك نمت المعالجات ، والآن نقوم بتسجيل ومعالجة البودكاست مباشرة على أجهزة الكمبيوتر المحمولة.
أندريه فولودين: نعم ، عن نفسه.
GPU ليس فقط للرسومات
دانييل بوبوف: أفهم بشكل صحيح أنه الآن على GPU يمكنك معالجة البيانات التي لا تتعلق مباشرة بالرسومات؟ اتضح أن GPU يفقد غرضه الأصلي.
أندريه فولودين: بالضبط. كثيرا ما أتحدث عن هذا في المؤتمرات. الأول كان NVidia ، الذي قدم CUDA. هذه تقنية تجعل GPGPU (الحوسبة للأغراض العامة على وحدات معالجة الرسومات) أكثر بساطة. يمكنك أن تكتب عليها مجموعة من خوارزميات C ++ المتوازية على وحدة معالجة الرسومات.
لكن الناس فعلوا هذا من قبل. على سبيل المثال ، الحرفيين على OpenGL أو حتى DirectX الأقدم كتبوا ببساطة البيانات إلى النسيج - تم تفسير كل بكسل على أنه بيانات: أول 4 بايت في البيكسل الأول ، والثاني 4 بايت في الثانية. قاموا بمعالجة القوام ، ثم تم استخراج البيانات من النسيج وتفسيرها. كان مفتول جدا ومعقدة. الآن بطاقات الفيديو تدعم منطق الغرض العام. يمكنك إطعام أي مخزن مؤقت في وحدة معالجة الرسومات (GPU) ووصف الهياكل الخاصة بك ، وحتى التسلسل الهرمي للبنى التي ستشير فيها إلى بعضها البعض ، وحساب شيء ما وإعادته إلى المعالج.
دانييل بوبوف: بمعنى أنه يمكننا القول إن وحدة معالجة الرسومات هي الآن بو البيانات.
أندريه فولودين: نعم ، تتم معالجة الرسومات على وحدة معالجة الرسومات في بعض الأحيان أقل من الحسابات العامة.
أليكسي كودريافتسيف: تختلف بنية وحدة المعالجة المركزية (GPU) ووحدة معالجة الرسومات (GPU) في جوهرها ، لكن يمكنك التفكير فيها هناك.
أندريه فولودين : في الواقع ، في بعض النواحي وحدة المعالجة المركزية أسرع ، في بعض النواحي وحدة معالجة الرسومات. هذا لا يعني أن وحدة معالجة الرسومات هي أسرع دائمًا.
دانييل بوبوف: بقدر ما أتذكر ، إذا كانت المهمة هي حساب شيء مختلف تمامًا ، فمن الممكن أن يكون أسرع بكثير على وحدة المعالجة المركزية.
أندريه فولودين: يعتمد
أيضًا على كمية البيانات. هناك دائمًا النفقات العامة لنقل البيانات من وحدة المعالجة المركزية إلى وحدة معالجة الرسومات والعكس. إذا كنت تفكر ، على سبيل المثال ، في وجود مليون عنصر ، فإن استخدام وحدة معالجة الرسومات (GPU) عادة ما يكون مبررًا. لكن حساب ألف عنصر على وحدة المعالجة المركزية يمكن أن يكون أسرع من مجرد نسخها إلى بطاقة رسومات. لذلك ، يجب عليك دائمًا اختيار المهمة.
بالمناسبة ، كور ML يفعل ذلك. يمكن لـ Core ML تشغيل وقت التشغيل ، وفقًا لشركة Apple ، لاختيار المكان الأسرع لحسابه: على المعالج أو على بطاقة الفيديو. لا أعرف ما إذا كان هذا يعمل في الواقع ، لكنهم يقولون نعم.
المتشددين المعرفة GPU المهندس لمطور المحمول
أليكسي كودريافتسيف: لنعد إلى تطوير الأجهزة المحمولة. أنت مهندس GPU ، لديك الكثير من المعرفة المتشددين. كيف يمكن تطبيق هذه المعرفة على مطور برامج الجوّال؟ على سبيل المثال ، ماذا ترى في UIKit أن الآخرين لا يرون؟
أندريه فولودين: سأتحدث عن ذلك بالتفصيل في AppsConf. يمكنك تطبيق الكثير حيث. عندما أرى ، على سبيل المثال ، كيفية عمل واجهة برمجة تطبيقات UIKit ، يمكنني أن أفهم على الفور سبب ذلك ولماذا. ملاحظة انخفاض الأداء عند تقديم بعض المشاهدات ، يمكنني فهم السبب ، لأنني أعرف كيفية كتابة العرض في الداخل. أفهم: من أجل عرض التأثيرات التي تحدثها Gaussian blur فعليًا في الجزء العلوي من المخزن المؤقت للإطار ، فأنت بحاجة أولاً إلى تخزين المادة بالكامل مؤقتًا ، وتطبيق عملية تمويه ثقيلة عليها ، وإرجاع النتيجة ، والانتهاء من تقديم بقية المشاهدات ، ثم إظهارها على الشاشة فقط. كل هذا يجب أن يصلح في 1/60 من الثانية ، وإلا فإنه سيبطئ.
من الواضح للغاية بالنسبة لي سبب هذا الوقت الطويل ، لكن هذا ليس واضحًا لزملائي. لهذا السبب أريد مشاركة حيل التصميم التي نستخدمها غالبًا في GameDev ، ورؤيتي حول كيفية النظر إلى المشاكل ومحاولة حلها. ستكون تجربة ، لكنني أعتقد أنها ستكون ممتعة.
لماذا لا يوجد لدى Android طمس أصلي
دانييل بوبوف: لقد ذكرت الضبابية ، وكان لدي سؤال يثير قلق جميع مطوري Android ، على ما أظن: لماذا يوجد ضباب أصلي في iOS وليس في Android.
أندريه فولودين: أعتقد أن هذا بسبب العمارة. تستخدم منصات Apple بنية تقديم Tiled Shading. مع هذا النهج ، لا يتم تقديم الإطار بأكمله ، ولكن يتم عرض مربعات صغيرة ، أجزاء من الشاشة. يتيح لك ذلك تحسين تشغيل الخوارزمية ، لأن مكاسب الأداء الرئيسية عند استخدام GPU توفر استخدامًا فعالًا للذاكرة المؤقتة. في نظام التشغيل iOS ، غالبًا ما يتم عرض الإطار بحيث لا يستهلك الذاكرة على الإطلاق. على سبيل المثال ، في iPhone 7 Plus ، تبلغ الدقة 1920 * 1080 ، أي حوالي 2 مليون بكسل. نحن نضرب 4 بايت لكل قناة ، ويتبين حوالي 20 ميجابايت لكل إطار. 20 ميجابايت لتخزين مخزن إطار النظام ببساطة.
يتيح لك أسلوب Tiled Shading تقسيم هذا المخزن المؤقت إلى أجزاء صغيرة وجعله قليلاً. يؤدي هذا إلى زيادة عدد مرات الوصول إلى ذاكرة التخزين المؤقت بشكل كبير ، لأنه من أجل التمويه ، تحتاج إلى قراءة البكسلات المرسومة بالفعل وحساب توزيع Gaussian عليها. إذا قرأت الإطار بأكمله ، فسيكون معدل التخزين المؤقت منخفضًا جدًا ، لأن كل قطار سيقرأ أماكن مختلفة. ولكن إذا قرأت قطعًا صغيرة ، فسيكون معدل التخزين المؤقت مرتفعًا جدًا وستكون الإنتاجية أيضًا مرتفعة.
يبدو لي أن عدم وجود طمس أصلي في نظام أندرويد مرتبط بالمزايا المعمارية. ومع ذلك ، ربما هذا هو الحل المنتج.
دانييل بوبوف: في Android ، هناك RenderScript لهذا ، لكن هناك حاجة إلى المزج والرسم والتضمين بيديك. هذا الأمر أكثر تعقيدًا من وضع مربع اختيار واحد في نظام التشغيل iOS.
أندريه فولودين: على الأرجح ، الأداء أقل أيضًا.
دانييل بوبوف: نعم ، من أجل إرضاء قائمة الأمنيات الخاصة بالمصمم ، يتعين علينا تقليل حجم الصورة ، وصبغها ، ثم الارتقاء مرة أخرى من أجل الحفظ بطريقة أو بأخرى.
أندريه فولودين: بالمناسبة ، مع هذا يمكنك أن تفعل الحيل المختلفة. التوزيع الغوسي هو دائرة غير واضحة. يعتمد Gauss sigma على عدد وحدات البكسل التي تريد جمعها. غالبًا ، كتحسين ، يمكنك تقليل حجم الصورة وتضييق نطاق سيغما قليلاً ، وعندما تقوم بإرجاع المقياس الأصلي ، لن يكون هناك اختلاف ، لأن سيغما تعتمد مباشرة على حجم الصورة. كثيرا ما نستخدم هذه الخدعة في الداخل لتسريع التمويه.
دانييل بوبوف: ومع ذلك ، RenderScript في Android لا يسمح لك بعمل نصف قطر أكبر من 30.
أندريه فولودين: في الواقع ، نصف قطر 30 هو الكثير. مرة أخرى ، أفهم أن جمع 30 بكسل باستخدام GPU على كل سلسلة رسائل يعد مكلفًا للغاية.
ما هي أوجه التشابه بين تطوير المحمول و GameDev
أليكسي كودريافتسيف: في أطروحات تقريرك ، تقول إن تطوير المحمول و GameDev لديهما الكثير من العوامل المشتركة. قل لي قليلا ، ماذا بالضبط؟
أندريه فولودين: إن بنية UIKit تذكرنا بشكل كبير بمحركات الألعاب ، والقديمة. تلك الحديثة قد ذهبت في اتجاه نظام مكونات الكيان ، وهذا سيكون أيضا في التقرير. يأتي هذا أيضًا إلى UIKit ، وهناك مقالات تكتب كيف يمكنك تصميم طرق عرض للمكونات. GameDev, Component System Thief 98 .
, , Cocos2d, , , , . , Scene graph — , -, , iOS CGAffineTransform. 4*4, , . .
, UIKit . - — . : GameDev , UIKit setNeedsLayout, layoutIfNeeded.
— , - , , Apple.
AppsConf .
: , API Cocos2d iOS ( UI). , ?
: , - . Cocos2d 2008-2009 , UIKit UIKit, . , - , , .
, : core- Cocos2d Apple, Apple Cocos2d, . SpriteKit , Cocos2d. Apple .
: , , UIKit 2009, MacOS, . setNeedsLayout, layoutIfNeeded , .
: , GameDev , MacOS.
: !
: Cocos2d Apple, , GameDev. GameDev , — . , GameDev , , . , , .
: , - , — .
: , , , , — . Protocol-Oriented Programming Swift, , - . GameDev .
: : , . , , , .
GameDev
: : GameDev , GameDev ?
: , , . « , ». , . : , , .
GameDev- . : 30 60 , , , . , . — . -- 1/60 1/30 . , , , GPU , CPU . , .
: ?
: . - , , , . — . , , , — - , - , . , , .
. , GPU float, double, - . , , , . CPU , , , GPU .
, , — .
GameDev,
: , « GameDev, ».
, , . , GameDev — . , . GameDev.
: , enterprise- , GameDev . . , , GameDev, .
, . , 4*4. CGAffineTransform — , - , .
, , , , .
: ? , UIKit, , ? , , , . , ?
: — pet project.
, : GPU , . iOS GPU , . iOS , - NVidia AMD- . . API , , .
: API, , Cocos2d Unity, — - . , , , UIKit ?
: Cocos2d — Open Source . , , , , . objective-C, .
pet project, , , API, , , -. , API, VHS-. , GPU. , . , . , : « saturation Instagram, lightroom!» , , 4 — .
, .
— , , . , , - , , , .
: , - . , Cocos2d - — 5 , , , , . , , , ..
: . , . , , , , , , , , , .
: , . , , .
: . , , . , Apple, ARKit. , , . , , , , .
, , : «, IDE, , , , . ».
: — ?
: , , , .
: , , .
: , , , VR . Project Template Xcode, , , - . , .
: .
: - , GameDev GPU.
: . - , , , . , , , , , UI: , , runtime Objective-C — , , . . , : , — , X Y, !
, , - , GameDev GPU- — .
, . AppsConf 22 23 .