Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Игра «История одной фермы» - увлекательное и бросающее вызов вашим серым клеточкам приключение, от которого невозможно оторваться!

История одной фермы - маджонг

Маджонг, Казуальные, Приключения

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Компиляция

С этим тегом используют

Политика Украина YouTube Юмор Twitter Подборка Программирование Все
297 постов сначала свежее
1364
Kuchka70
Kuchka70
1 год назад

Ангелы-хранители, конечно, хороши, но и самим нужно быть начеку⁠⁠

Продолжение:

Показать полностью 1
За секунду до Компиляция ДТП Везение Nearmiss Видео
120
NutrientElement
NutrientElement
1 год назад
Arduino & Pi
Серия Программирование

Немного подкопотника компиляторов⁠⁠

Под капотом компиляторов находятся различные этапы обработки исходного кода, такие как лексический, синтаксический и семантический анализ, оптимизация, генерация и компоновка кода. Каждый этап выполняет определенную задачу, например, разбиение кода на токены, построение дерева разбора, проверка типов и областей видимости, устранение лишнего или неэффективного кода, преобразование кода в машинные инструкции или байт-код, связывание модулей и библиотек в исполняемый файл и т.д.

Компиляторы могут быть разными по своему устройству, функциональности и целям. Например, есть компиляторы, которые транслируют код с одного языка на другой, например, Babel или TypeScript. Есть компиляторы, которые оптимизируют код для конкретной архитектуры или платформы, например, GCC или LLVM. Есть компиляторы, которые используют динамическую компиляцию, то есть компилируют код во время его исполнения, например, JIT-компиляторы в Java или .NET. Есть компиляторы, которые реализуют специальные возможности или фичи языков, например, векторизация, макросы, рефлексия и т.д.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

[моё] Программирование Программист IT Linux Разработка Компиляция Текст
0
241
Kuchka70
Kuchka70
1 год назад

СНОСное видео⁠⁠

Снос Подрыв Разрушение Компиляция Видео
32
1
Quizly
Quizly
1 год назад
Специфический юмор

[FMC#4] Смешная подборка смешных и мемных видео со всего мира!⁠⁠

Уже в YouTube (https://youtu.be/RVFecWDkqvw)

[моё] Мемы Смех (реакция) Юмор Забавное Популярное Животные Кот Собака Улыбка Отдых Хорошее настроение Компиляция Видео Laughing Подборка YouTube
4
157
AlexKud
AlexKud
2 года назад
Warhammer 40k

40000 способов подохнуть⁠⁠

Ну или немного меньше.

Warhammer 40k Wh Other Мемы Музыка Компиляция Из сети Видео
15
5
SmellyGranny
SmellyGranny
2 года назад
Уголок ретрогеймера

Duke Nukem 3D на кнопочном телефоне⁠⁠

Портирование Мобильные игры Компьютерные игры Шутер Sega Видеоигра Ретро-игры Моды Олдскул Компиляция Duke Nukem Duke Nukem 3D Видео YouTube
12
77
mknews
mknews
2 года назад

Компиляция шейдеров: почему фризят современные игры⁠⁠

Привет Пикабу! Фризы. Долгие загрузки. Мы привыкли винить в это разработчиков игр – но далеко не всегда виноваты они. Компиляция шейдеров - бич современных игр. Но что это такое? Как удобная технология стала проблемой?

Что такое шейдер?

И сразу же возникает только два вопроса – что такое шейдер и что вообще такое компиляция? Не будем усложнять. Мы постоянно слышим слово шейдер в контексте разработки игр, и на самом деле это просто кусок кода, программа, которая работает на вычислительных блоках видеокарты. В современных графических API, таких как DirectX 12 или Vulkan, существует семь категорий шейдеров.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Вершинные, геометрические, поверхностные и доменные шейдеры используются для формирования границ объектов 3D-мира. Проще говоря - в интернетах картинки, составленные из треугольников-полигонов?

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Вот за это и отвечают первые 4 категории шейдеров. В дальнейшем созданную картинку нужно раскрасить и сделать реалистичнее: за это отвечают пиксельные, а теперь еще и лучевые шейдеры. Эти нужны для правильного расчета освещения и затенения, эффектов прозрачности, взрывов, огня, воды – в общем, красивого отображения физики.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Ну и под конец – вычислительные шейдеры. Современные видеокарты отлично подходят для многих математических расчетов, и именно на такой тип шейдеров опирается Nvidia CUDA или OpenCL. А сейчас еще трудятся во всяких генеративных нейросетках рисуя нам картиночки.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Но вернемся в играм. Современные проекты манипулируют тысячами шейдеров для расчета красивой картинки на экране. Часть из этих кусков кода простые и легкие – например, если речь идет о текстурировании, то есть натягивании текстуры объекта на полигоны.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Это одна из тех причин, почему увеличение качества текстур в настройках игры минимально влияет на FPS – разумеется, если хватает видеопамяти. Но при этом существуют, например, лучевые шейдеры, которые нужны для правильной отрисовки освещений и теней при помощи трассировки лучей. И едва ли нужно рассказывать, насколько сильно RTX on роняет FPS.

Компиляция шейдеров

Хорошо, теперь стало понятно, как тяжелые шейдеры могут негативно влиять на расчет времени кадра и тем самым снижать FPS. Но где связь между ними и фризами или долгой первой загрузкой игры?

Все дело в том, что изначально шейдер пишется на высокоуровневом языке программирования. И прежде чем видеокарта сможет его использовать, процессор должен скомпилировать шейдер, иначе говоря перевести в понятный для GPU двоичный машинный код.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Это не вызывает проблем с десятком-другим шейдеров. Но когда их счет в современных играх идет на тысячи, а то и десятки тысяч, и с каждым кадром нужно подгружать десятки и сотни новых – разработчики оказываются буквально в тупике, вынужденные выбирать один из двух стульев как в том самом анекдоте, а то и пытаться усидеть сразу на обоих.

Самый простой вариант - скомпилировать все шейдеры в лоб при первом запуске игре.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

К чему это приводит – заметили бета-тестеры... вернее игроки в ремейк Last of Us, который даже на топовых ПК умудряется грузиться часами.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Хотя, надо сказать, тут очень важно умение программистов правильно распоряжаться библиотекой шейдеров и многоядерностью процессора. В самом худшем случае будут компилироваться абсолютно все шейдеры, даже те, которые не нужны на конкретной системе, и использоваться для этого будет лишь одно ядро. Как показывают тесты, с оптимизацией компиляции консольные программисты из Naughty Dogs справились так себе, что и вызвало бурю негодования от скучающих перед прогресс-барами пк-геймеров.

Второй вариант – комилировать шейдеры по мере необходимости во время самого игрового процесса. Как итог, это здорово снижает время загрузки игры – только вот платить приходится повышенной нагрузкой на процессор и накопитель, которым приходится работать не только с текущими данными, но и думать наперед. С учетом общей высокой вычислительной сложности современных игр это гарантированно вызывает фризы в моментах, когда нужно быстро скомпилировать сразу много шейдеров: например, во время перехода в новую локацию.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

На деле современные движки обычно комбинируют оба метода: при первом запуске компилируется основная часть шейдеров за разумное время, и в дальнейшем необходимые шейдеры обсчитываются во время катсцен или загрузочных экранов. Однако и здесь все сделать идеально не получается, особенно когда в игре огромный бесшовный мир: рано или поздно игрок все равно забредет в совершенно новую локации, грузить которую придется на ходу и с фризами.


И тут у многих скорее всего возникает логичный вопрос: а почему бы не скомпилировать шейдеры заранее, и скачивать уже полностью разжеванную игру? Проблема в том, что для улучшения производительности шейдеры приходится компилировать под каждую конкретную систему, видеокарту и даже драйвер для нее. Возможных комбинаций тут тысячи, поэтому в случае с ПК заниматься предварительной компиляцией шейдеров невозможно. Более того, апдейт драйверов вполне может вызвать их перекомпиляцию с новым ожиданием.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

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

Решение проблемы фризов

Можно ли как-то решить проблему компиляции шейдеров на ПК? Глобально – да, фактически – нет. Современные игры становятся все масштабнее и красивее, что увеличивает и количество, и сложность используемых шейдеров.

А с учетом тенденций по созданию бесшовного мира у разработчиков оказываются буквально связаны руки: используя комбинированный метод рано или поздно возникнет ситуация, когда нужно обсчитать множество шейдеров разом – и это вызовет гарантированный фриз и комментарии о криворуких игроделах. Конечно, можно вернуться к старой доброй компиляции всех шейдеров на старте – это снимет любые проблемы с ними во время игры, но, как показывают отзывы о Last of Us, геймеры не готовы ждать первого запуска по полчаса. С каждой игрой. Особенно с учетом того, что это будет повторяться после каждого обновления драйверов на видеокарту.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Поэтому все, что остается разработчикам – это оптимизировать сам процесс компиляции, лучше раскидывать его по ядрам и прогнозировать, какие шейдеры вскоре потребуются. Также хорошей практикой является внимательное изучение, какие именно шейдеры нужны для каждого конкретного объекта: нередко движки для расчета тех же материалов предлагают сразу полный набор от прозрачности до эффектов ткани, которые едва ли нужны обычной текстуре земли. Выкидывание лишних шейдеров разумеется положительно скажется на времени компиляции.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Можно ли как-то улучшить проблему с фризами самостоятельно? Да. Как минимум стоит отказаться от жестких дисков для установки современных игр – и хотя такой тип накопителей все еще поддерживается, на практике они слишком медленно работают с большим количеством мелких файлов, что гарантированно вызовет множество проблем от фризов при компиляции шейдеров до непрогруженных текстур.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Аналогично это относится и к процессору: именно он в современных играх отдувается за компиляцию шейдеров. Поэтому не стоит ему добавлять фоновых задач, это точно не прибавит плавности игровому процессу.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Также можно использовать хитрость под названием лок кадров. Дело в том, что компиляция шейдеров – процесс второстепенный, и если CPU в игре грузится по-полной, то на эту задачу выделяется слишком мало ресурсов, что и вызывает фризы при появлении новых объектов в кадре. Ограничение количества кадров разгрузит процессор и позволит ему тратить больше времени на шейдеры.

Компиляция шейдеров: почему фризят современные игры Компьютер, Компьютерные игры, Unreal Engine, Разработка, Компиляция, Шейдеры, Видео, YouTube, Длиннопост

Конечно, такой лайфхак снизит общую плавность картинки, но тут уже решать каждому, что важнее: фризы или высокий FPS. Использовать этот трюк можно вместе с понижением процессорозависимых настроек, таких как плотность толпы, дальность прорисовки, качество частиц и прочих параметров, которые затрагивают физику и качество отрисовки объектов.

Читайте нас в Телеграм - https://t.me/mknewsru/7322
Вконтакте - https://vk.com/mknews

Показать полностью 15
[моё] Компьютер Компьютерные игры Unreal Engine Разработка Компиляция Шейдеры Видео YouTube Длиннопост
14
3485
DELETED
2 года назад

За секунду до...⁠⁠1

Авария Авто Видео За секунду до ДТП Компиляция Подборка
184
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии