Как стать автором
Обновить
0
@Ilya2019 read⁠-⁠only

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

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

Анализ графики Red Dead Redemption 2

Время на прочтение 11 мин
Количество просмотров 19K
Одна из моих любимейших игр, Red Dead Redemption, в 2018 году вернулась с приквелом для консолей. В 2019 году её выпустили для PC, и мне наконец удалось поиграть в неё; меня сразу же поразила её графика. Однако я расстроился: мне едва удавалось играть при средних настройках с 25 FPS на настольном GPU 1050Ti. Понимаю, машина у меня не очень мощная, но 25 FPS на средних настройках?

Сегодня мы рассмотрим несколько примеров кадров из игры и проанализируем использованные в игре графические приёмы.

Предисловие


Это неофициальный анализ игры. Я просто проанализировал захват кадров при помощи RenderDoc. Если вы хотите узнать информацию от самих разработчиков, то можете изучить слайды с доклада на SIGGRAPH Фабиана Байера. Слайды (внизу страницы), видео (начинается с 1:58:00).

Также можно прочитать анализ графики GTA5, выполненный Адрианом Корреже [перевод на Хабре]. Так как и RDR2, и GTA5 созданы одной компанией и используют один движок, часть приёмов из GTA5 присутствует и здесь.

Ещё один важный момент — я не являюсь опытным программистом графики и по-прежнему новичок в этой области. Поэтому многое мне непонятно. Если вы найдёте ошибки или то, что можно улучшить, пишите мне. Ну, поехали!

Разбираем кадр


Вот наш основной кадр для анализа:


Кадр захвачен на PC со средними настройками.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 2

Переключаем WiFi в режим точки доступа в Windows

Время на прочтение 3 мин
Количество просмотров 584K
Так уж получилось, что на работе для получения полноценного интернета без ограничений, мне приходиться использовать нетбук и 3g-модем. Недавно, купив iPod Touch, я очень захотел его подключить к интернету. Если смартфон еще мог вылезти в интернет самостоятельно, то вот с плеером несколько труднее.

Один из вариантов — это подключение с помощью кабеля синхронизации. Вариант не очень удобный, так как носить с собой постоянно кабель желания совершенно нет, да и iTunes ставить тоже не хочеться. Второй вариант, тот который и описывается в данной статье — это подключение через WiFi. На Хабрахабре уже упоминалась похожая задача и её решение, но для Linux. Наша задача настроить тоже самое под Windows.

Итак, что мы имеем


— Нетбук, ASUS 1215B
— Интернет через USB 3g-модем
— Плеер и смартфон с наличием WiFi

Задача


— Получить на всех устройствах интернет

Читать дальше →
Всего голосов 79: ↑69 и ↓10 +59
Комментарии 51

Что такое нити (threads)?

Время на прочтение 3 мин
Количество просмотров 69K
Навеяно предыдущей статьей на эту тему.
Для того чтобы, структурировать свое понимание – что представляют собой threads (это слово переводят на русский язык как «нити» почти везде, кроме книг по Win32 API, где его переводят как «потоки») и чем они отличаются от процессов, можно воспользоваться следующими двумя определениями:
  • Thread – это виртуальный процессор, имеющий свой собственный набор регистров, аналогичных регистрам настоящего центрального процессора. Один из наиважнейших регистров у виртуального процессора, как и у реального – это индивидуальный указатель на текущую инструкцию (например, индивидуальный регистр EIP на процессорах семейства x86),
  • Процесс – это в первую очередь адресное пространство. В современной архитектуре создаваемое ядром ОС посредством манипуляции страничными таблицами. И уже во вторую очередь на процесс следует смотреть как на точку привязки «ресурсов» в ОC. Если мы разбираем такой аспект, как многозадачность для того, чтобы понять суть threads, то нам не нужно в этот момент думать о «ресурсах» ОС типа файлов и к чему они привязаны.
Очень важно понять, что thread – это концептуально именно виртуальный процессор и когда мы пишем реализацию threads в ядре ОС или в user-level библиотеке, то мы решаем именно задачу «размножения» центрального процессора во многих виртуальных экземплярах, которые логически или даже физически (на SMP, SMT и multi-core CPU платформах) работают параллельно друг с другом.
Читать дальше →
Всего голосов 53: ↑41 и ↓12 +29
Комментарии 45

Веб-сайт помог дизайнеру найти девушку своей мечты

Время на прочтение 1 мин
Количество просмотров 824
Эта романтическая история о том, как интернет помог найти девушку. :)) 21-летний дизайнер из Бруклина Патрик Моберг увидел в воскресенье вечером в поезде девушку, в которую влюбился с первого взгляда. Поезд был переполнен, и он потерял ее из виду. Как обычно заканчиваются такие истории? Выходят из поезда и забывают — найти человека в огромном городе невозможно. Так ли?

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

Его телефон неустанно звонил, а на почту приходили сообщения от незнакомых, которые говорили, что они тоже ничего так, хоть и не та самая девушка мечты. Ему предлагали любовь десятки девушек, но среди них не было ЕЁ.
Читать дальше →
Всего голосов 88: ↑78 и ↓10 +68
Комментарии 37

Что такое TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR (итд)

Время на прочтение 12 мин
Количество просмотров 335K


Многие C++ программисты, пишущие под Windows часто путаются над этими странными идентификаторами как TCHAR, LPCTSTR. В этой статье я попытаюсь наилучшим способом расставить все точки над И. И рассеять туман сомнений.

В свое время я потратил много времени копаясь в исходниках и не понимал что значат эти загадочные TCHAR, WCHAR, LPSTR, LPWSTR,LPCTSTR.
Недавно нашел очень грамотную статью и представляю ее качественный перевод.
Статья рекомендуется тем кто бессонными ночами копошиться в кодах С++.

Вам интересно ??
Прошу под кат!!!
Читать дальше →
Всего голосов 91: ↑64 и ↓27 +37
Комментарии 85

Как уронить Windows шестью строчками кода

Время на прочтение 3 мин
Количество просмотров 266K
См. также: Microsoft исправила уязвимость с синим экраном

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


Читать дальше →
Всего голосов 272: ↑251 и ↓21 +230
Комментарии 256

История языков программирования: C# — впереди планеты всей

Время на прочтение 8 мин
Количество просмотров 92K


С# живет по принципу «всякая сущность есть объект». Его причисляют к объектно-ориентированным, а точнее объектным, языкам программирования. «Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода» – так принято характеризовать его. Однако скептики сомневаются как минимум в его безопасности.

Сторонники C# называют его самым мультипарадигменным, универсальным, продвинутым и удобным в использовании языком программирования. Учитывая тот факт, что за ним стоит платформа Microsoft .NET, число таких сторонников достаточно велико.
Читать дальше →
Всего голосов 98: ↑54 и ↓44 +10
Комментарии 185

Введение в CMake

Время на прочтение 7 мин
Количество просмотров 522K
imageCMake — кроcсплатформенная утилита для автоматической сборки программы из исходного кода. При этом сама CMake непосредственно сборкой не занимается, а представляет из себя front-end. В качестве back-end`a могут выступать различные версии make и Ninja. Так же CMake позволяет создавать проекты для CodeBlocks, Eclipse, KDevelop3, MS VC++ и Xcode. Стоит отметить, что большинство проектов создаются не нативных, а всё с теми же back-end`ами.
Читать дальше →
Всего голосов 62: ↑56 и ↓6 +50
Комментарии 23

Пара историй про отличия Release от Debug

Время на прочтение 5 мин
Количество просмотров 26K
Все разработчики знают, что исполнение релизной версии может отличаться от отладочной. В этой статье я расскажу пару случаев из жизни, когда такие отличия приводили к ошибочному исполнению программы. Примеры не отличаются большой сложностью, но вполне могут уберечь от наступления на грабли.

История 1



Собственно, началось все с того, что пришел баг о том что при некоторых операциях приложение вылетает. Это бывает часто. Баг не захотел воспроизводиться в Debug-версии. Это порой бывает. Поскольку в приложении часть библиотек была написано на C++, то первой мыслью было что-то вроде «где-то забыли переменную проинициализировать или что-то в этом духе». Но на деле суть бага крылась в управляемом коде, хотя без неуправляемого тоже не обошлось.
Читать дальше →
Всего голосов 59: ↑58 и ↓1 +57
Комментарии 27

Грязные трюки с макросами C++

Время на прочтение 10 мин
Количество просмотров 148K
В этой статье я хочу сделать две вещи: рассказать, почему макросы — зло и как с этим бороться, а так же продемонстрировать пару используемых мной макросов C++, которые упрощают работу с кодом и улучшают его читаемость. Трюки, на самом деле, не такие уж и грязные:
  • Безопасный вызов метода
  • Неиспользуемые переменные
  • Превращение в строку
  • Запятая в аргументе макроса
  • Бесконечный цикл

Заранее предупреждаю: если Вы думаете увидеть под катом что-то крутое, головоломное и сногсшибательное, то ничего такого в статье нет. Статья про светлую сторону макросов.
Читать дальше →
Всего голосов 54: ↑45 и ↓9 +36
Комментарии 60

Комментирование кода: хороший, плохой, злой

Время на прочтение 4 мин
Количество просмотров 43K


Вы наверняка это слышали: «Хороший код является самодокументированным».

Я больше 20 лет зарабатываю написанием кода, и слышал эту фразу чаще всего. Это клише.

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

Она истинна? Да.

Означает ли она, что вы никогда не должны комментировать код? Нет.

В этой статье мы рассмотрим разные аспекты комментирования кода.
Читать дальше →
Всего голосов 75: ↑67 и ↓8 +59
Комментарии 25

Как правильно комментировать код

Время на прочтение 3 мин
Количество просмотров 39K
Как-то раз сидел в аудитории с ноутом около розетки, а в это время на соседней парте принимался зачет по программированию. Я не сильно вникал в суть вопросов на которые общались студент и преподаватель, назовем его Иван Ивановичем. Разговор был довольно спокойный и тихий, но у меня получилось выхватить часть. Преподаватель говорил о комментариях (видимо сдавалась программа, в которой не было ни строчки комментариев). Меня этот момент заинтересовал и я начал прислушиваться. Было замечено, что мне тоже интересно, преподаватель начал импровизированную лекцию. Ниже представлен тот небольшой кусок знаний который я тогда вынес с этой 5ти минутной лекции.
Читать дальше →
Всего голосов 47: ↑25 и ↓22 +3
Комментарии 134

Как устроен формат JPEG

Время на прочтение 13 мин
Количество просмотров 97K

Изображения формата JPEG встречаются повсюду в нашей цифровой жизни, но за этим покровом осведомлённости скрываются алгоритмы, устраняющие детали, не воспринимаемые человеческим глазом. В итоге получается высочайшее визуальное качество при наименьшем размере файла – но как конкретно всё это работает? Давайте посмотрим, чего именно не видят наши глаза!




Легко принять, как само собой разумеющееся, возможность отправить фотку другу, и не волноваться по поводу того, какое устройство, браузер или операционную систему он использует – однако так было не всегда. К началу 1980-х компьютеры умели хранить и показывать цифровые изображения, однако по поводу наилучшего способа для этого существовало множество конкурирующих идей. Нельзя было просто отправить изображение с одного компьютера на другой и надеяться, что всё заработает.
Читать дальше →
Всего голосов 107: ↑102 и ↓5 +97
Комментарии 28

Конференция BLACK HAT USA. Разбогатеть или умереть: зарабатываем в Интернете методами Black Hat. Часть 1

Время на прочтение 14 мин
Количество просмотров 16K
Ведущий: леди и джентльмены, это выступление очень забавное и очень интересное, сегодня мы собираемся поговорить о реальных вещах, которые наблюдаются в интернете. Этот разговор немного отличается от тех, к которым мы привыкли на конференциях Black Hat, потому что мы собираемся поговорить о том, как атакующие зарабатывают деньги на своих атаках.

Мы покажем вам несколько интересных атак, которые могут принести прибыль, и расскажем об атаках, которые действительно имели место в ту ночь, когда мы перебрали «Егермейстера» и проводили мозговой штурм. Это было весело, но когда мы немного протрезвели, то поговорили с людьми, занимающимися SEO, и действительно узнали, что множество людей зарабатывают деньги на этих атаках.

Я всего лишь безмозглый менеджер среднего звена, поэтому уступаю своё место и хочу вам представить Джереми и Трея, которые намного умней меня. У меня должно было бы быть умное и весёлое введение, но его нет, так что вместо него я покажу эти слайды.
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 1

Как работают пули в видеоиграх?

Время на прочтение 6 мин
Количество просмотров 51K
Игры FPS (first-person shooter, шутер от первого лица) стали неотъемлемой частью видеоигровой индустрии ещё с момента появления в 1992 году популярнейшей Wolfenstein 3D. С тех пор жанр эволюционировал: улучшалась графика, увеличивались бюджеты на разработку, развивалась экосистема киберспорта. Но что насчёт их фундамента — механики стрельбы? Как проходило развитие на этом фронте? Почему в некоторых играх оружие кажется реальными, а в других похоже на игрушки?

Hitscan


В предыдущую эпоху многие игры для рендеринга 3D-сцен в 2D-изображения использовали технику под названием raycasting («бросание лучей»). Raycasting позволяет движку определять первый объект, с которым пересечётся луч. Но потом разработчики задались вопросом: «Что, если выпустить луч из ствола оружия, чтобы имитировать пулю?» Благодаря этой идее родился hitscan («сканирование попадания»).


Пример raycasting

В большинстве реализаций оружия с hitscan при выстреле игрока физический движок выполняет следующие операции:

  • Определяет направление, в котором указывает оружие.
  • Выпускает из ствола оружия луч на заданное расстояние.
  • Использует raycasting для определения того, попал ли луч в объект.

Если движок определил, что объект находится на линии огня, то он сообщит ему об этом, сказав, что в него «попала» пуля. Затем цель может выполнить все вычисления, необходимые для регистрации повреждений.
Всего голосов 73: ↑69 и ↓4 +65
Комментарии 56

Как правильно использовать исключения

Время на прочтение 6 мин
Количество просмотров 47K
Использование исключений для контроля хода выполнения программы (flow control) — давняя тема. Я хотел бы суммировать этот топик и привести примеры правильного и неправильного использования исключений.
Читать дальше →
Всего голосов 32: ↑25 и ↓7 +18
Комментарии 36

Учим английский: 7 практических способов расширить словарный запас

Время на прочтение 3 мин
Количество просмотров 32K
image

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

При этом важно понимать, что существует два типа лексики – активная и пассивная. Первая из них состоит из слов, которые вы активно используете, а вторая – это лексика, которую вы «знаете» и понимаете. Существуют способы наращивания лексических запасов обоих видов. Я нашла интересный пост с подборкой практических способов сделать это и подготовила его адаптированный перевод. Поехали!
Читать дальше →
Всего голосов 23: ↑19 и ↓4 +15
Комментарии 8

Сравнение Word и LaTeX по удобству и эффективности

Время на прочтение 2 мин
Количество просмотров 18K
На кафедре психологии, экспериментальной психологии и когнитивных наук университета Гиссена (Германия) провели сравнительное исследование текстовых редакторов LaTeX и Microsoft Word по удобству и эффективности при подготовке документов (научных статей).

В рамках исследования 40 учёных из разных научных дисциплин готовили статьи в Microsoft Word или LaTeX. Тестовая статья включала в себя блоки непрерывного текста, текст с таблицами и подзаголовками, а также сложный текст с математическими выражениями.

Исследование выявило, что пользователи LaTeX работают медленнее, чем пользователи Microsoft Word, набирают меньше текста за то же время, допускают больше опечаток, орфографических и грамматических ошибок, а также ошибок форматирования. По большинству параметров даже эксперты по LaTeX показывают худшую производительность, чем новички в Word.

С другой стороны, пользователи LaTeX чаще сообщали об удовольствии от использования программного обеспечения, чем пользователи Word. Кроме того, LaTeX показал лучший результат в наборе текста с формулами.
Читать дальше →
Всего голосов 11: ↑6 и ↓5 +1
Комментарии 21

Верстка email рассылок от А до Я для чайников

Время на прочтение 9 мин
Количество просмотров 402K
Уже 3 с лишним года занимаюсь дизайном и версткой почтовых рассылок, которые ориентированы на англоязычных пользователей. За время работы перелопатили огромную кучу информации, перепробовали много вариантов верстки, набили достаточное количество шишек. Были найдены и исправлены типичные баги, которые в той или иной мере повторялись во всех почтовых клиентах. Также нашлись проблемы с некоторыми CSS свойствами — различные почтовые клиенты интерпретировали их по разному. Каждое письмо тестировалось на самых популярных почтовых клиентах: Gmail, Outlook, Yahoo, Android, iOS, MozillaThunderbird, Microsoft Outlook, The Bat. Рассылки ходят на сотни миллионов пользователей и приносят очень хорошие результаты. Итак, приступим к изучению.
Читать дальше →
Всего голосов 66: ↑62 и ↓4 +58
Комментарии 35

Три парадигмы

Время на прочтение 3 мин
Количество просмотров 10K
Привет, Хабр!

Предлагаю вашему вниманию перевод статьи «Three Paradigms» автора Robert C. Martin (Uncle Bob).

image

За последние 40 лет технологии аппаратного обеспечения увеличили вычислительную мощность наших устройств более чем на двадцать порядков. Теперь мы играем в Angry Birds на наших телефонах, которые обладают вычислительной мощностью суперкомпьютера 70-х годов прошлого века с фреоновым охлаждением.

Но за те же 40 лет технологии программного обеспечения практически не изменились. В конце концов, мы все так же применяем операторы if, while loops и операторы присваивания, которые мы использовали еще в 60-х годах. Если бы я взял программиста из 1960 года и привел его сюда, чтобы он посидел за моим ноутбуком и написал код — ему понадобилось бы 24 часа, чтобы оправиться от шока, но он смог бы написать этот код. Принципы не так сильно изменились.

В процессе написания программ изменились три вещи. Я говорю не об оборудовании, не о скорости компьютера и не о невероятных инструментах, которые у нас есть. Я имею в виду сам код. Три вещи изменились в коде. Можно их назвать парадигмами. И все они были «открыты» за одно десятилетие более 40 лет назад.
Читать дальше →
Всего голосов 39: ↑26 и ↓13 +13
Комментарии 31

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность