Обновить
4
0.1

Пользователь

Отправить сообщение

Использование Global Illumination в собственных шейдерах в Unity 5

Время на прочтение9 мин
Охват и читатели16K
image
Привет, Хабр! Unity 5 предоставляет нам из коробки систему глобального освещения (Global Illumination, GI), которая позволяет в реальном времени получать действительно очень приятную картинку, что разработчики продемонстрировали в своем нашумевшем ролике The Blacksmith. Наряду с системой глобального освещения универсальный материал Standard перевел в разряд устаревших все прежние материалы. Несмотря на крутость стандартного материала (а он, ни много ни мало, основан на физической модели), я задался вопросом, а можно ли подключить систему глобального освещения к собственному поверхностному шейдеру. Что из этого получилось, а также с чем мне пришлось столкнуться в процессе, читайте под катом.
Читать дальше →

Вперёд в п(р)ошлое. TBDR — the Power We Are

Время на прочтение17 мин
Охват и читатели14K
Ага, вот эти ребята!


Imagination Technologies — одни из тех немногих, доказавших, что в этом мире точно можно существовать сразу в двух сущностях: в тени и в прибыли. Если уж кто и знает, как оптимизировать рендеринг 3D-сцены, так Kristof Beets всегда знает больше. В «былые годы» мужчина был лицом PowerVR (подразделение Imagination Technologies, занимающееся разработкой 3D-графических чипов) и вещал нам о том, как он совместно с ещё парой человеков придумали новый способ рендеринга. В рекламных брошюрах, которыми пестрил каждый обзор видеоплат на базе их чипов, всегда можно было найти очень грубое объяснение традиционного метода рендеринга и его блестящую эволюцию — тайловый рендеринг, который так прогремел в 2001 году, что… вы не слышали? А было громко!

3D-Пайплайн как он был


Сегодня на операционном столе у нас… кто бы вы думали?



PowerVR Series 3! О да, его-то мы и вскроем как следует, но сначала немного истории. На момент выхода на рынок ему пришлось соревноваться с такими гигантами, как ATI R100 и NVIDIA Жираф 3. То были серьёзные решения, но PowerVR и не собирались участвовать в гонке за мегагерцами. По заявлению PowerVR, те двое рисуют 3D-графику устоявшимся бесперспективным традиционным методом или же это можно было называть immediate-mode rendering. Чтобы понять, как это, нам придётся потревожить такое понятие как Графический конвеер (далее — 3D-пайплайн).
3D-пайплайн?
Точно! Но подождите, на него ещё нужно попасть…

А для начала нам нужно построить 3D-сцену в каком-то приложении. Вспомните уроки черчения: как вы рисуете, например куб? Вот и в 3D-моделлировании (3-Dimensional Modelling) вы тоже рисуете в проекции на плоскости (которую определяете сами), каждая точка которой может быть описана как: xyzнает где. Но изначально перед вами необъятный космос (space), а вам нужно задать в нём хотя бы одну вот эту вот плоскость. И тут-то на помощь и приходит такая простая фигура как треугольник,- он отлично с этим справится. Дальнейший сценарий самый разнообразный, например, на этой плоскости мы можем разместить что-нибудь или мы можем присоседить к нашей плоскости другую плоскость…

Итак, классические фигуры (примитивы) для построения любых других геометрических фигур (полигонов) в концепции 3D-моделирования — это треугольники. Почему:
  • Треугольник плоский. Вы можете быть уверены, что все три его вершины находятся в одной плоскости.
  • Все остальные полигоны можно построить из них. Причём даже очень быстро методом triangle strips.
    Сейчас сразу найдутся умники, которые спросят: «А как же из треугольников сделать круги?» Да, с этим будут проблемы… Хорошо, а как из линий? ;) Да точно так же.


Кстати на самом деле приложение передаёт видеокарте вовсе не готовую 3D-модель сцены, а всего лишь координаты вершин полигонов в нашем космосе.

Ну и вот, наконец, данные о сцене (координаты вершин) получены видеокартой и дальше они попадают на графический конвеер (3D-пайплайн). 3D-Пайплайн — это стандартизированный алгоритм работы 3D-акселератора (видеокарты, если хотите).
На первом этапе видеокарта должна будет преобразовать координаты вершин несколько раз в другие координаты для того, чтобы получить 3D-модель сцены и только после этого приступить к освещению, затенению, текстурированию и прочим этапам 3D-пайплайна, о которых можно почитать здесь.

В итоге в буфере конечного кадра (фреймбуфер) формируется один полный кадр и выводится. В идеале таких вот кадров нужно успевать хотя бы 25 в секунду (это и назвали FPS — Frames per Second), иначе человеческий глаз заметит, что изображение на экране показывается прерывисто.

Хочется попутно развинтить очередной миф: Если забыть про VSync, то скорость игры от fps не зависит. Скорость игры зависит от того, успевает ли HDD, CPU и RAM. А вот плавность изображения — да, вот за это ответственна видяха с её FPS. Вспомните тот же Unreal на ранних 3D-видеокартах, например, когда вы понимали, что вас убили ещё до того, как вы это увидели.
До недавнего времени де-факто стандарт был FPS = 60, что даёт очень плавную картинку, по сравнению с FPS = 25. Сегодня при наличии монитора с частотой обновления больше 60Гц вы можете попробовать посмотреть современные игры, в которых также есть поддержка вывода FPS > 60. Говорят, ничего так ;)


Классический 3D-пайплайн глазами PowerVR

Ну так вот, вернёмся к нашей скотине immediate-mode rendering (далее — IMR). На протяжении всех своих лет существования на рынке pc-видеоплат PowerVR давали нам такую вырезку из классического 3D-пайплайна, который применяется в IMR-видеокартах:

image

Если верить схеме, то классический 3D-пайплайн представляет из себя ровно следующее:
Приложение генерирует кадр с полигонами в оперативной памяти и отдаёт его на съедение видеоплате. Каждый полигон в gpu сначала растеризуется и текстурируется, а только потом идёт проверка на перекрытие его другим полигоном в сцене. Т.е., по сути получается, что мы можем сначала подготовить в памяти сложное дерево, следом подготовить такого же сложного человека, и только потом сообразить, что человек практически полностью закроет собой всё это дерево. Да, у IMR получается как-то неэффективно. Получается overdraw.

Что предлагает PowerVR

А PowerVR уже который год предлагают нам: "Think before you start to render!".
Казалось бы, ведь это так просто! Нам всего лишь необходимо поменять местами первые две стадии на рисуночке.

image

Но за всем этим кроется одна большая проблема: в то время весь 3D-пайплайн был аппаратно зашит в чипы (от геометрии до вывода во фреймбуфер). Посему PowerVR в своих чипах круто изменили 3D-пайплайн, заодно придумав собственный метод рендеринга: Tile Based Deferred Rendering!!! Ключевое слово Deferred, потому что были, например, видеокарты Intel GMA, которые использовали Coined Zone Rendering, который по сути тоже Tile-Based.

Intel uses a similar concept in their integrated graphics solutions. However, their method, coined zone rendering, does not perform full hidden surface removal (HSR) and deferred texturing, therefore wasting fillrate and texture bandwidth on pixels that are not visible in the final image.

en.wikipedia.org/wiki/PowerVR

А на самом деле...


… конечно, всё было не совсем так. А именно:

  1. Поначалу (1995 — 2000 гг.) у карт с IMR всё складывалось неплохо и карты с TBDR не имели особого преимущества, оставаясь в тени. Но и в 2001 году карты PowerVR, на самом деле, особо не выехали. Потому что вендорами IMR-чипов были своевременно проведены независимые расследования и, в результате, без интриг и скандалов, до вендоров быстро дошло, что типичный 3D-мир становится всё комплекснее и многослойнее. Всем стало ясно, что теперь боттлнеком является видеопамять с её пропускной способностью, и, что нужно оптимизировать работу с этой вот памятью и обязательно с z-buffer'ом.
    Так практически одновременно в 2001 году увидели свет такие разные технологии, как HyperZ у ATI и Lightspeed Memory Architecture у NVIDIA. И, если первая на заре своего появления отсеивала overdraw уже только непосредственно перед растеризацией, то вот вторая делала это ещё на уровне геометрии!

  2. Помимо того, конечно, PowerVR немного лукавили. На приводимой ими схеме классического 3D-пайплайна IMR (см. Классический 3D-пайплайн глазами PowerVR) явно не хватало шейдеров, которые уже были в зачаточной стадии даже на жирафе 2 (это называлось NSR). Ну а у каждого уважающего себя чипа 2001 года (ATI R100, NVIDIA Жираф 3) уже были полноценные пиксельные или даже вершинные шейдеры, открывающие «полигоны возможностей» управления 3D-пайплайном.
    Однако же заметьте, что TBDR всё же был придуман задолго до шейдеров!


По указанным выше причинам PowerVR снова оказались в тени и дальнейшая судьба их сложилась в другом сегменте (привет владельцам IPhone). Но на что же на самом деле был способен чип PowerVR Series 3, карты на котором так и не доехали до нас?
Читать дальше →

Глава 1. «Что такое Виртуальные Миры и как они возникли». Перевод книги Ричарда Бартла «Designing Virtual Worlds»

Время на прочтение15 мин
Охват и читатели18K
Приглашаю всех присоединиться к переводу книги. За перевод первой главы спасибо Лилии Кутуевой.
Начало тут.

imageНесмотря на то, что могут быть (и есть) и более фундаментальные определения этого понятия, тем не менее, Виртуальные Миры (ВМ) всегда придерживаются определенных условий, отличающих их от других родственных виртуальных пространств. Самыми основными будут следующие:

  1. В основе ВМ лежат базовые автоматизированные правила, которые побуждают игроков производить в нем изменения (однако, они не могут менять сами правила, которые дают им такую возможность). Таковы физические основы ВМ.
  2. Игроки играют своих персонажей «внутри» мира. Они могут обладать частичным или полным влиянием на войско, команду или группу людей, но в этом мире есть лишь одна игровая сущность, которой они представлены и с которой прочно связаны – это их персонаж. Поэтому и все взаимодействия с миром и другими игроками опосредованы этим персонажем.
  3. Взаимодействие с миром осуществляется в режиме реального времени. Соответственно, когда вы что-то в нем делаете, можете ожидать немедленной ответной реакции.
  4. Этот мир – многопользовательский.
  5. Этот мир – стабилен (по крайней мере, до некоторой степени).

Игровой чат не является ВМ, потому что не имеет заданных физических параметров. Варгейм-стратегия не проецирует игрока на персонажа, которым он играет. Игра по электронной почте не происходит в режиме реального времени. Игра с одним игроком не является многопользовательской. Мир шутера от первого лица неустойчив.
В некоторых примерах аргументы не столь однозначны. Например, являются ли настольные РИ виртуальными мирами? Нет, потому что они не автоматизированы, но уже недалеки от этого. Может ли образовательный МПМ из двух игроков быть назван виртуальным? Возможно. Будет ли таковым мир игры на 500 игроков, мир столь большой, что некоторые игроки могут никогда друг с другом и не встретиться? Да, но это спорный вопрос.
На поверку определить, является ли мир виртуальным или нет, довольно легко – достаточно проверить его происхождение. Если его устройство в значительной степени списано с устройства существующего ВМ, почти наверняка это – ВМ; если же нет, тогда почти наверняка это не он.
Читать дальше →

C# — Моделирование «разумной» жизни на базе нейронных сетей

Время на прочтение4 мин
Охват и читатели85K
Данная статья посвящена исследованию возможностей нейронных сетей при их использовании в качестве основы для индивидуального разума моделируемого объекта.

Цель: показать, способна ли нейронная сеть (или ее данная реализация) воспринимать «окружающий» мир, самостоятельно обучаться и на основе собственного опыта принимать решения, которые можно считать относительно разумными.

image
Читать дальше →

Google не прощает ошибок: противостояние с Google Play

Время на прочтение6 мин
Охват и читатели83K
Перед вами очередная история инди разработчика без счастливого финала. Я Android быдлокодер разработчик уже три года и большую часть из них вне закона на Google Play.

image
Читать дальше →

Deephack: хакатон по глубокому обучению с подкреплением, или как мы улучшали алгоритм Google Deepmind

Время на прочтение6 мин
Охват и читатели13K
С 19 по 25 июля проходил хакатон Deephack, где участники улучшали алгоритм обучения с подкреплением на базе Google Deepmind. Цель хакатона — научиться лучше играть в классические игры Atari (Space Invaders, Breakout и др.). Мы хотим рассказать, почему это важно и как это было.

Авторы статьи: Иван Лобов IvanLobov, Константин Киселев mrKonstantin, Георгий Овчинников ovchinnikoff.
Фотографии мероприятия: Мария Молокова, Политехнический музей.

Почему хакатон по обучению с подкреплением это круто:
  • Это первый в России хакатон с использованием глубокого обучения и обучения с подкреплением;
  • Алгоритм Google Deepmind — одно из последних достижений в области обучения с подкреплением;
  • Если вас интересует искусственный интеллект, то эта тема — очень близка к этому понятию (хотя мы сами и не хотели бы называть это ИИ).


Читать дальше →

Когда размер имеет значение

Время на прочтение6 мин
Охват и читатели18K


Иногда встречаются задачи, для которых уменьшение размера приложения, а точнее, правильный баланс между размером и производительностью, является даже более приоритетным, чем скорость его выполнения. Такого рода проблемы существуют, в частности, при разработке для встраиваемых (embedded) систем. Для них приложения «затачиваются» под конкретный тип процессора с очень ограниченным размером памяти, а значит размер нашего приложения будет напрямую влиять на стоимость конечного продукта. Кроме того, можно добавить больше функциональности и улучшить качество самого кода.

Компиляторы Intel обычно отдают предпочтение производительности и слабо заботятся о размере получаемого на выходе приложения. По умолчанию, фокус на максимальную скорость. Задача разработчика заключается в умении найти правильный баланс между скоростью выполнения приложения и используемыми оптимизациями компилятора, и его размером. В компиляторе Intel C/C++ имеется целый ряд возможностей, позволяющий контролировать этот баланс и делать размер приложения более приоритетным, чем его производительность. Давайте рассмотрим эти возможности.
Читать дальше →

Платформер под Android на Unity3D

Время на прочтение3 мин
Охват и читатели97K
image

Пожалуй, даже после выхода нового UI, создание интерфейса для Android’а осталось больной темой для многих.
Новая система “UI”, которая появилась в Unity 4.6 сильно упростила жизнь разработчикам, но все же, хотелось бы прояснить некоторые моменты, которые относятся к Android’у.

Из плюсов:
-Мощный набор инструментов
-Корректное масштабирование на разных разрешениях, что в свою очередь устраняет кучу лишней работы
-Поддержка сенсорного управления без дополнительных настроек
-Гибкость и простота в использовании
Читать дальше →

Как обычному сайту на Wordpress набрать 99/100 в PageSpeed Insights

Время на прочтение5 мин
Охват и читатели137K
Началось все с того что Adsense в очередной раз понизил оценку эффективности страниц:
image
А все мы знаем, что скорость сайта – один из факторов ранжирования в выдаче Гугла.

И если раньше удавалось исправить ситуацию простыми действиями, включить кэширование или сжать JS, то теперь, похоже, пришло время взяться за сайт основательно.

Изначально имеется сайтик со статьями, коих в интернете миллионы: CMS Wordpress 4.2, два десятка плагинов, тема, сверстанная фрилансером и shared хостинг.
Читать дальше →

Почерк нейронной сети притворяется почерком человека

Время на прочтение2 мин
Охват и читатели19K
image

Около года назад учёный из университета Торонто Алекс Грейвс опубликовал научную работу «Generating Sequences With Recurrent Neural Networks» (pdf) на arXiv.org, однако только недавно пользователи Hacker News обратили на неё внимание. Это произошло благодаря тому, что демонстрационная часть статьи доступна в интернете в виде простого сайта, функциональность которого заключается в имитации нейронной сетью человеческого почерка.
Узнать подробности

Магия тензорной алгебры: Часть 2 — Векторные и тензорные операции. Ранги тензоров

Время на прочтение10 мин
Охват и читатели148K

Содержание


  1. Что такое тензор и для чего он нужен?
  2. Векторные и тензорные операции. Ранги тензоров
  3. Криволинейные координаты
  4. Динамика точки в тензорном изложении
  5. Действия над тензорами и некоторые другие теоретические вопросы
  6. Кинематика свободного твердого тела. Природа угловой скорости
  7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
  8. О свертках тензора Леви-Чивиты
  9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
  10. Получаем вектор угловой скорости. Работаем над недочетами
  11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
  12. Параметры Родрига-Гамильтона в кинематике твердого тела
  13. СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
  14. Нестандартное введение в динамику твердого тела
  15. Движение несвободного твердого тела
  16. Свойства тензора инерции твердого тела
  17. Зарисовка о гайке Джанибекова
  18. Математическое моделирование эффекта Джанибекова


Введение


Несказанно рад, что читателям понравилась предыдущая статья. Сразу сделаю оговорку — просто рассказать о таком ёмком понятии как тензор не получится — велик объем информации. Могу обещать, что к концу цикла мозаика сложится.

А в прошлый раз мы остановились на том, что рассмотрев представление вектора в косоугольном базисе, и определив, что он представляется двумя разными (ковариантными и контравариантными) наборами координат, получили общие выражения для скалярного произведения, учитывающие изменение метрики пространства. Таким образом, мы весьма осторожно подошли к понятию тензора
Тензор — математический объект, не изменяющийся при изменении системы координат, представленный набором >своих компонент и правилом преобразования компонент при смене базиса.

Скалярное произведение — это хорошо. Но как же быть с остальными операциями? Как они связываются с геометрией пространства и представимы ли в тензорном виде? Разумеется представимы, ведь векторы — это… тензоры! И скаляры — это тоже тензоры. Привычные нам математические объекты лишь частные примеры более общего понятия, коим является тензор.

Вот об этом мы и поговорим под катом.
Читать дальше →

Сказ о том как спектральные характеристики освещения влияют на нашу жизнь

Время на прочтение9 мин
Охват и читатели56K
Граждане читатели, технари и гуманитарии, вы находитесь в опасности, немедленно переместитесь на улицу под теплое летнее солнышко (если погода позволяет), это не учебная тревога! Повторяю это не учебная тревога! Ну а если окружающие не оценят вашу попытку провести эвакуацию, то устраивайтесь поудобнее и давайте поговорим с вами об освещении. Если в двух словах, статья про воздействие бытового (внутреннего) освещения на наш с вами организм. Я постараюсь не перегружать статью техническими сведениями, для всех любознательных коллег оставлю соответствующие ссылки. Однако, без графиков все же не обойдемся (люблю я их просто). Статья получилась длинная, так что в итоге я решил что мы рассмотрим в первую очередь спектральную характеристику освещения (тут подробнее).

Итак, представьте, друзья, что живет где-то на свете среднестатистический человек, назовем его Василий. И вот значится жил себе жил Василий 20 лет на опушке леса в средней полосе нашей бескрайней родины, да вот захотелось ему «кофе от лучших бариста», свитшотов, да «айфонов» глянцевых и решил Василий в город податься. А чтобы ему совсем не сладко жилось, то решил он податься в офис на цокольном этаже в славный город Мурманск, ну в общем в «бетонную коробку офисную», дабы трудится там не покладая рук и света божьего не видеть.

А вот, что же там Василия ждало, спрятано под катом, всех любознательных милости просим.

Статья будет большая и по смыслу делиться на три части
1 – Спектральные характеристики источников света
2 – Как можно померить спектр с помощью прямых рук и «синей изоленты»
3 – Кратко о воздействии света на человека


Читать дальше →

Здоровье гика: как не закиснуть к старости

Время на прочтение7 мин
Охват и читатели82K
Привет, Geektimes! Сегодня мы поговорим — внезапно! — о здоровье. А если быть точным — о том, как влияет многочасовое ежедневное сидение за компьютером и как можно минимизировать этот вред, чтобы в старости радоваться жизни и продолжать работать сидя за компом, а не жаловаться на жизнь на приёмах у врачей.


Наверное, многие гики считают, что уж вот их никак и никогда не посетят все сопутствующие болячки — дескать, не сутками же сидим, гулять ходим, да и вообще мы же не дальнобойщики. Грустно, но факт — проблемы случаются и от меньшего, поверьте. Поэтому стоит задуматься об этом уже сейчас. Тем более что радикально менять свой образ жизни и перестать гиковать не нужно :) Достаточно выделить суммарно пару часов в неделю на выполнение несложных физических упражнений.

Условно все «компьютерные» упражнения можно поделить на три блока — для глаз, для суставов кистей и для осанки. Итак, поехали.
Читать дальше →

Зачем нужно ASIO для аудиофилов?

Время на прочтение8 мин
Охват и читатели278K
Каждый, кто сталкивался с вопросом о качественном воспроизведении звука рано или поздно встречается с аббревиатурой ASIO, как важной и необходимой опцией.



Что это и в чем практический смысл?
Читать дальше →

О бытовом заблуждении

Время на прочтение4 мин
Охват и читатели37K
Каждому иногда приходится размышлять над тем, что же происходит в ИТ, как оно будет дальше развиваться, и как потом с этим жить. Хотелось бы этим постом ответить на статью «Мысли об идеальном языке программирования».

Что мы видим в оригинальной статье? Осведомленный о современных тенденциях языкостроения автор оценивает один из флагманских языков системного программирования, рассуждая, каких еще положительных концепций и архитектурных решений можно воткнуть в современный язык методом наращивания фич силами огромного общемирового сообщества.
А на самом деле...

Пролог – декларативный язык, способный решать любые ребусы и доказывать теоремы

Время на прочтение13 мин
Охват и читатели53K
Представьте себе высокоуровневый язык, в котором не нужно указывать КАК получить результат, вместо этого нужно просто указать ЧТО вы хотите получить. При этом область применения языка не ограничена и язык способен решать те же задачи, что и любой другой высокоуровневый язык, наподобие JAVA. Кажется фантастикой, не правда ли? Однако такой язык есть и называется он PROLOG. Посмотрим как PROLOG справляется с этой задачей на примере загадывания прологу некоторых загадок и попросим PROLOG выдать доказательство теоремы.

image

Читать дальше →

Нейропластичность в искусственных нейронных сетях

Время на прочтение17 мин
Охват и читатели54K
Привет, Хабр, давно не виделись. В этом посте мне хотелось бы рассказать о таком относительно новом понятии в машинном обучении, как transfer learning. Так как я не нашел какого-либо устоявшегося перевода этого термина, то и в названии поста фигурирует хоть и другой, но близкий по смыслу термин, который как бы является биологической предпосылкой к формализации теории передачи знаний от одной модели к другой. Итак, план такой: для начала рассмотрим биологические предпосылки; после коснемся отличия transfer learning от очень похожей идеи предобучения глубокой нейронной сети; а в конце обсудим реальную задачу семантического хеширования изображений. Для этого мы не будем скромничать и возьмем глубокую (19 слоев) сверточную нейросеть победителей конкурса imagenet 2014 года в разделе «локализация и классификация» (Visual Geometry Group, University of Oxford), сделаем ей небольшую трепанацию, извлечем часть слоев и используем их в своих целях. Поехали.
Читать дальше →

Как сделать персональный шрифт из своего почерка за три минуты

Время на прочтение1 мин
Охват и читатели106K
image

Стартап MyScriptFont.com предлагает прекрасный по простоте, и к тому же бесплатный метод изготовления своего собственного шрифта. Создание и редактирование векторных фигур вручную уходит в прошлое.
Читать дальше →

Оптимизация ASP.NET — практические советы по работе с IIS

Время на прочтение12 мин
Охват и читатели107K
В данной публикации речь пойдёт о настройке важных параметров пула ASP.NET-приложений при вызове удалённых веб-сервисов и активной работе с сетью на стороне сервера через стандартные классы .NET.



Введение


Приходилось ли вам когда-нибудь самим настраивать производственные веб-сервера (production servers) под управлением ОС Windows Server 2008 R2/IIS 7.5 и выше? Для системных администраторов, имеющих большой опыт работы с IIS, скорее всего, это тривиальная задача, но вот для веб-разработчиков, которым по различным причинам порой приходится самим участвовать в настройке «боевых» серверов, данная информация может оказаться весьма полезной.

Итак, приступаем. Ускоряем сайт на ASP.NET — экономим деньги предприятия и нервы администратора.
Читать дальше →

«Трудности» перевода приложений для Windows Store

Время на прочтение4 мин
Охват и читатели9.5K


У меня было локализованное приложение для Windows Store. В нем была возможность переключить язык на английский, но даже с английским интерфейсом приложение продолжало удивлять англоязычных пользователей русскими кириллическими «иероглифами» на заставке и логотипах. А русскоязычные пользователи в свою очередь удивлялись тому, что приложение называлось не по-русски. О том, как получилось такое безобразие и как сделать хорошо эта статья.

Всех, кому интересна разработка универсальных приложений Windows, приглашаю под кат.
Читать дальше →

Информация

В рейтинге
3 128-й
Зарегистрирован
Активность