40000 способов подохнуть
Ну или немного меньше.
Ну или немного меньше.
3 Crazy Meme - это невероятно смешное видео, которое собрало в себе три самых смешных и забавных видео (мема), которые гарантированно развеселить вас. В этом видео вы найдете юмор, сарказм, насмешки и безумные приколы. Я подобрал для вас только лучшие мемы, которые вызовут у вас слезы смеха и поднимут настроение на весь день
Привет Пикабу! Фризы. Долгие загрузки. Мы привыкли винить в это разработчиков игр – но далеко не всегда виноваты они. Компиляция шейдеров - бич современных игр. Но что это такое? Как удобная технология стала проблемой?
И сразу же возникает только два вопроса – что такое шейдер и что вообще такое компиляция? Не будем усложнять. Мы постоянно слышим слово шейдер в контексте разработки игр, и на самом деле это просто кусок кода, программа, которая работает на вычислительных блоках видеокарты. В современных графических API, таких как DirectX 12 или Vulkan, существует семь категорий шейдеров.
Вершинные, геометрические, поверхностные и доменные шейдеры используются для формирования границ объектов 3D-мира. Проще говоря - в интернетах картинки, составленные из треугольников-полигонов?
Вот за это и отвечают первые 4 категории шейдеров. В дальнейшем созданную картинку нужно раскрасить и сделать реалистичнее: за это отвечают пиксельные, а теперь еще и лучевые шейдеры. Эти нужны для правильного расчета освещения и затенения, эффектов прозрачности, взрывов, огня, воды – в общем, красивого отображения физики.
Ну и под конец – вычислительные шейдеры. Современные видеокарты отлично подходят для многих математических расчетов, и именно на такой тип шейдеров опирается Nvidia CUDA или OpenCL. А сейчас еще трудятся во всяких генеративных нейросетках рисуя нам картиночки.
Но вернемся в играм. Современные проекты манипулируют тысячами шейдеров для расчета красивой картинки на экране. Часть из этих кусков кода простые и легкие – например, если речь идет о текстурировании, то есть натягивании текстуры объекта на полигоны.
Это одна из тех причин, почему увеличение качества текстур в настройках игры минимально влияет на FPS – разумеется, если хватает видеопамяти. Но при этом существуют, например, лучевые шейдеры, которые нужны для правильной отрисовки освещений и теней при помощи трассировки лучей. И едва ли нужно рассказывать, насколько сильно RTX on роняет FPS.
Хорошо, теперь стало понятно, как тяжелые шейдеры могут негативно влиять на расчет времени кадра и тем самым снижать FPS. Но где связь между ними и фризами или долгой первой загрузкой игры?
Все дело в том, что изначально шейдер пишется на высокоуровневом языке программирования. И прежде чем видеокарта сможет его использовать, процессор должен скомпилировать шейдер, иначе говоря перевести в понятный для GPU двоичный машинный код.
Это не вызывает проблем с десятком-другим шейдеров. Но когда их счет в современных играх идет на тысячи, а то и десятки тысяч, и с каждым кадром нужно подгружать десятки и сотни новых – разработчики оказываются буквально в тупике, вынужденные выбирать один из двух стульев как в том самом анекдоте, а то и пытаться усидеть сразу на обоих.
Самый простой вариант - скомпилировать все шейдеры в лоб при первом запуске игре.
К чему это приводит – заметили бета-тестеры... вернее игроки в ремейк Last of Us, который даже на топовых ПК умудряется грузиться часами.
Хотя, надо сказать, тут очень важно умение программистов правильно распоряжаться библиотекой шейдеров и многоядерностью процессора. В самом худшем случае будут компилироваться абсолютно все шейдеры, даже те, которые не нужны на конкретной системе, и использоваться для этого будет лишь одно ядро. Как показывают тесты, с оптимизацией компиляции консольные программисты из Naughty Dogs справились так себе, что и вызвало бурю негодования от скучающих перед прогресс-барами пк-геймеров.
Второй вариант – комилировать шейдеры по мере необходимости во время самого игрового процесса. Как итог, это здорово снижает время загрузки игры – только вот платить приходится повышенной нагрузкой на процессор и накопитель, которым приходится работать не только с текущими данными, но и думать наперед. С учетом общей высокой вычислительной сложности современных игр это гарантированно вызывает фризы в моментах, когда нужно быстро скомпилировать сразу много шейдеров: например, во время перехода в новую локацию.
На деле современные движки обычно комбинируют оба метода: при первом запуске компилируется основная часть шейдеров за разумное время, и в дальнейшем необходимые шейдеры обсчитываются во время катсцен или загрузочных экранов. Однако и здесь все сделать идеально не получается, особенно когда в игре огромный бесшовный мир: рано или поздно игрок все равно забредет в совершенно новую локации, грузить которую придется на ходу и с фризами.
И тут у многих скорее всего возникает логичный вопрос: а почему бы не скомпилировать шейдеры заранее, и скачивать уже полностью разжеванную игру? Проблема в том, что для улучшения производительности шейдеры приходится компилировать под каждую конкретную систему, видеокарту и даже драйвер для нее. Возможных комбинаций тут тысячи, поэтому в случае с ПК заниматься предварительной компиляцией шейдеров невозможно. Более того, апдейт драйверов вполне может вызвать их перекомпиляцию с новым ожиданием.
К слову, именно поэтому на консолях игры обычно грузятся быстрее и работают плавнее, даже если мы берем пастген с жесткими дисками. Так как на таких игровых устройствах компонентная база и система жестко связаны, это позволяет разработчиками провести предварительную компиляцию и избавить железо консолей от дополнительных расчетов.
Можно ли как-то решить проблему компиляции шейдеров на ПК? Глобально – да, фактически – нет. Современные игры становятся все масштабнее и красивее, что увеличивает и количество, и сложность используемых шейдеров.
А с учетом тенденций по созданию бесшовного мира у разработчиков оказываются буквально связаны руки: используя комбинированный метод рано или поздно возникнет ситуация, когда нужно обсчитать множество шейдеров разом – и это вызовет гарантированный фриз и комментарии о криворуких игроделах. Конечно, можно вернуться к старой доброй компиляции всех шейдеров на старте – это снимет любые проблемы с ними во время игры, но, как показывают отзывы о Last of Us, геймеры не готовы ждать первого запуска по полчаса. С каждой игрой. Особенно с учетом того, что это будет повторяться после каждого обновления драйверов на видеокарту.
Поэтому все, что остается разработчикам – это оптимизировать сам процесс компиляции, лучше раскидывать его по ядрам и прогнозировать, какие шейдеры вскоре потребуются. Также хорошей практикой является внимательное изучение, какие именно шейдеры нужны для каждого конкретного объекта: нередко движки для расчета тех же материалов предлагают сразу полный набор от прозрачности до эффектов ткани, которые едва ли нужны обычной текстуре земли. Выкидывание лишних шейдеров разумеется положительно скажется на времени компиляции.
Можно ли как-то улучшить проблему с фризами самостоятельно? Да. Как минимум стоит отказаться от жестких дисков для установки современных игр – и хотя такой тип накопителей все еще поддерживается, на практике они слишком медленно работают с большим количеством мелких файлов, что гарантированно вызовет множество проблем от фризов при компиляции шейдеров до непрогруженных текстур.
Аналогично это относится и к процессору: именно он в современных играх отдувается за компиляцию шейдеров. Поэтому не стоит ему добавлять фоновых задач, это точно не прибавит плавности игровому процессу.
Также можно использовать хитрость под названием лок кадров. Дело в том, что компиляция шейдеров – процесс второстепенный, и если CPU в игре грузится по-полной, то на эту задачу выделяется слишком мало ресурсов, что и вызывает фризы при появлении новых объектов в кадре. Ограничение количества кадров разгрузит процессор и позволит ему тратить больше времени на шейдеры.
Конечно, такой лайфхак снизит общую плавность картинки, но тут уже решать каждому, что важнее: фризы или высокий FPS. Использовать этот трюк можно вместе с понижением процессорозависимых настроек, таких как плотность толпы, дальность прорисовки, качество частиц и прочих параметров, которые затрагивают физику и качество отрисовки объектов.
Читайте нас в Телеграм - https://t.me/mknewsru/7322
Вконтакте - https://vk.com/mknews
Данная статья относится к Категории ✨ Качественные уровни творчества
Жан Лабрюйер — французский юрист, служил у одного из принцев в качестве воспитателя, где имел возможность наблюдать жизнь королевского двора Франции
«Есть области, в которых посредственность невыносима: поэзия, музыка, живопись, ораторское искусство»
Жан Лабрюйер, Характеры, или нравы нынешнего века, М. «Аст», 2001 г. с. 14.
«Бывают люди, наделённые, если можно так выразиться, умом низшего, второго сорта и словно созданные для того, чтобы служить вместилищем, реестром, кладовой для произведений других авторов.
Они – подражатели, переводчики, компиляторы: сами они не умеют думать, поэтому говорят лишь то, что придумали другие, а так как выбор мыслей – это тоже творчество, выбирают они плохо и неверно, запоминают многое, но не лучшее. В них нет ничего своеобычного, присущего только им; они не знают даже того, что выучили, а учат лишь то, чего никто не хочет знать, собирают сведения сухие, бесплодные и бесполезные, лишённые приятности, никем не упоминаемые, выброшенные за ненадобностью, как монеты, которые уже не имеют хождения.
Мы можем только удивляться книгам, которые они читают, и зевать, беседуя с ними или проглядывая их сочинения. Вельможи и простолюдины принимают их за учёных, а истинно умные люди относят к числу педантов».
Жан Лабрюйер, Характеры, или нравы нынешнего века, М. «Аст», 2001 г. с. 46-47.
«Глупец подобен автомату, механизму, пружине: собственная тяжесть увлекает его, движет, поворачивает, причём всегда в одном направлении и всегда с одинаковой скоростью. Он однообразен и неизменен: кто видел его раз, тот уже видел его во все минуты и периоды жизни. В лучшем случае он напоминает быка, который умеет мычать, или дрозда, который умеет свистеть: все в нем предуказано и предопределено его природой и, осмелюсь сказать, породой. Труднее всего заметить в нем душу: она бездействует, не совершенствуется, спит».
Жан Лабрюйер, Характеры, или нравы нынешнего века, М. «Аст», 2001 г. с. 391-392.
Фрагмент текста цитируется согласно ГК РФ, Статья 1274. Свободное использование произведения в информационных, научных, учебных или культурных целях.
Если публикация Вас заинтересовала – поставьте лайк или напишите об этом комментарий внизу страницы.
Уровни творческих решений по Г.С. Альтшуллеру
Компиляция и/или плагиат — около 30-ти материалов по теме
см. термин Компиляции в 🔖 Словаре проекта VIKENT.RU
+ Плейлист из 16-ти видео: СТРАТЕГИИ ТВОРЧЕСТВА / КРЕАТИВА
Идёт приём Ваших новых вопросов по более чем 400-м направлениям творческой деятельности – на онлайн-консультации третье воскресенье каждого месяца в 19:59 (мск). Это принципиально бесплатный формат.
Жан Лабрюйер — французский юрист, служил у одного из принцев в качестве воспитателя, где имел возможность наблюдать жизнь королевского двора Франции / Public Domain & На фоне — Изображение от benzoix на Freepik
Круг Палыча...
Есть интим у Палыча!
У Палыча ломбард!
Но вот и круг замкнулся - сдаём члены назад!