Pull to refresh
7
0
Андрей @uxgen

фрилансер (c++, vulkan, оптимизация)

Send message

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

Я заметил что RADV драйвер на линуксе работает быстрее AMDшного. Вот если его портируют на винду, тогда можно будет сравнить влияние ОС.

Половина статьи про UB и проблемы использования. На самом деле все не так плохо, достаточно полностью переделать архитектуру и корутины заработают без боли и страданий)

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

Когда-то выбрал AngelScript и поначалу все было нормально, но потом вылезли баги в Linux/Android, долго добавляли Mac на arm. В итоге решил что скрипты будут только для ускорения разработки.

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

Тест ни о чем, видно же что частоты ГПУ разные. Надо было выставить фиксированные частоты и потом тестировать.

Мне заплатили премию спустя полгода после увольнения. Только эта была крипта компании и на момент выплаты стоила $200, спустя пару месяцев уже $0.001. Все что нужно знать про премии криптой)

Хотя на премию битками я год жил пока восстанавливался после травмы)

А когда контроффер на х3 не срабатывал?

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

А как же поддержка 360Гц мониторов? Там нет времени в конце кадра)

Пика использования такой подход достиг в движках и играх Naughty Dog, которые упоролись и сделали воркеры аж на fibers

Сейчас уже корутины в С++ завезли, больше никакого callback hell.

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

AVX512

К тому же игры - это объективно одна из основных нагрузок на моем домашнем компьютере

Если посмотреть исходники UE, то про AVX512 там никто не слышал)

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

Тяп-ляп хорошо, когда все в отдельном модуле. В лучшие времена этот модуль выкинут и перепишут. Проблема начинается, когда нужно протащить костыли через весь код, вот за такое надо бить по рукам.

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

Это было 15 лет назад, сейчас уже школьники кодят лучше джунов.

Это L2 кэш, который используется для хранения промежуточных данных в TBDR архитектуре.

Еще бы пример как на github CI это настроить.

Я пробовал смотреть 3D фильмы в VR и меня сразу же укачало от трясущейся камеры, так что вариант только для телеков.

С восстановлением глубины может быть другая проблема - искажение масштабов. Нейронка похоже ищет дальнюю точку в кадре и строит параллакс до нее, хотя в реальности объем чувствуется только на небольшом расстоянии в 5-10м. Теперь это не огромный звездолет, а какая-то муха перед глазами)

Оптимизация по ILP будет полезна для новых интелов, где нет гипертрединга.

Еще вместо

if (mask == 0) break;

можно попробовать:

if (mask != 0) [[likely]] {} else break;

Это дает +10% за счет более точных предсказаний ветвления. [[unlikely]] не сработает, так как слишком короткий код, поэтому приходится хитрить.

Еще clang чуть лучше оптимизирует, чем MSVC, тоже +10%.

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

Ну и разработка игр — одна из немногих отраслей разработки, где есть кредитсы, и даже рядовой программист будет указан в титрах игры

То есть если вставил либу в проект, то попал в титры, а если написал либу, то нет?

Кстати, я когда-то работал с лидом из гугла и было норм. На каждую таску я сам писал себе ТЗ и потом его быстро согласовывали, было удобно, но ни на одной другой работе такого не было. Но вот один раз он попросил перекомитить всю таску и сделать в 2 раза больше коммитов...

На одном проекте я 3 месяца доступ к Жире получал, потому что тимлид похренист)

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

Точно не помню, давно это обсуждали. Вроде бы объяснение было - так принято / было принято в гугле.

Для маленькой компании - плохо, да и нет там таких задач чтобы долго изучать.

1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity