Как стать автором
Обновить
27
0

Программист С++

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

Итак, вы решили перейти с Unity на Unreal Engine

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров26K

Наверно, произошло что-то плохое, и теперь вы читаете эту статью. Сочувствую! Давайте начнём по порядку.

Меня зовут Джо Уинтергрин, я генералист Unreal Engine. Можете взглянуть на все мои ресурсы. В статье я приведу полезную информацию для новичков в Unreal, имевших опыт работы с Unity.

С чего начать?

• Прочитайте документацию по Gameplay Framework. Всю целиком! У Unreal есть Gameplay Framework. Прочитайте документацию и освойтесь в ней. Это правильное решение при разработке любого типа игры. Не пропускайте её. Держите её под рукой, чтобы перечитывать.

• Влейтесь в сообщество. Это учетверит вашу скорость обучения. Есть Discord для бывших Unity-разработчиков Алекса Роуза и есть мой Discord.

• Почитайте Epic Online Learning Library. Вот она. Делайте упор на статьи, написанные Epic Games.

• Скачайте последнюю версию Unreal Engine из Epic Games Launcher. На данный момент это 5.3. В общем случае всегда стоит начинать проект на самой новой версии. Кроме того, нет никаких причин больше пользоваться UE4 — UE5 лучше и имеет все возможности UE4.

• Изучите документацию «Unreal Engine for Unity Developers» компании Epic. Это хороший способ начать. Вот она.

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

Читать далее
Всего голосов 31: ↑31 и ↓0+31
Комментарии26

«Уравнение Бернулли» и как без него обходятся в энергетическом турбиностроении

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

Почему «уравнение Бернулли» неприменимо в авиации и судостроении

Когда изучаешь предмет «Гидравлика» в ВУЗе, то там всегда рассматривают трубопровод с реальными размерами и твёрдыми стенками,  по которому течёт вода от одного конца трубы  до другого. Для этих реальных  условий и было записано « Уравнение Бернулли» самим Бернулли ещё в 18 веке.

В исходном уравнении в правой части всегда присутствует дополнительный член- Lтрен, равный потерям на гидравлические сопротивления между двумя исследуемыми сечениями (вязкое трение самой жидкости, местные препятствия на стенках). (см.рис.1)

Читать далее
Всего голосов 38: ↑29 и ↓9+29
Комментарии130

Обзор 42" OLED монитора KTC G42P5. Или как использовать почти телевизор для работы

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров19K

Можно ли работать на OLED? Не слишком ли он большой? Сгорят или не сгорят пиксели? Что с картинкой, реально новый уровень? Стоит ли игра свеч? Попробую ответить на эти и другие вопросы простым языком после месяца активного использования монитора.

Читать далее
Всего голосов 32: ↑31 и ↓1+38
Комментарии110

«Чистый» код, ужасная производительность

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров71K

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

Читать далее
Всего голосов 95: ↑69 и ↓26+63
Комментарии222

120 лошадиных сил, которые изменили мир: история дизельного двигателя

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

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

В этом нет ничего удивительного — дизельный двигатель имеет несколько преимуществ в сравнении с тем же бензиновым ДВС. Например:
● выше КПД за счет большей степени сжатия и больше мощность;
● более неприхотлив к топливу — работает на бюджетной солярке (хотя для легковых авто дизельное топливо сейчас и стоит дороже АИ-92 — прим. автора);
● надежнее из-за отсутствия системы принудительного воспламенения топливовоздушной смеси и так далее.

Много лет легковых автомобилей с дизельным двигателем в Европе было больше, чем с бензиновым. Сейчас доля снижается, экологи после «Дизельгейта» и фейла Фольксвагена вопят о выбросах оксидов азота (хотя до этого с точки зрения выхлопа CO2 дизель считался более экологичным — прим. автора), а правительства продолжают регулировать отрасль и пытаются пересадить всех на электромобили. Однако в остальных сферах вроде грузовых или морских перевозок разумной альтернативы дизелю нет и вряд ли появится в ближайшем будущем. 

Давайте посмотрим на историю изобретения Рудольфа Дизеля и что было до него.

Читать далее
Всего голосов 48: ↑47 и ↓1+55
Комментарии56

Числа с плавающей точкой для гуманитариев. Что это такое и как они работают

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров38K

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

В этой статье я простым языком попытаюсь изложить данную тему и помочь решить ряд вопросов: как на самом деле процессор хранит числа с плавающей точкой? Как точка хранится в памяти? Почему при сложении 0.1 + 0.2 получается ответ ~0.30000000000000004? Если по какому-то из этих вопросов вы чувствуете, что не можете дать точный ответ, то эта статья для вас.

Читать далее
Всего голосов 36: ↑35 и ↓1+39
Комментарии37

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 6 из 6

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

Содержание основного курса




Улучшение кода






Official translation (with a bit of polishing) is available here.




Shadow mapping


Ну вот наш краткий курс подходит к концу, задача на сегодня — научиться отрисовывать тени (внимание, просчёт полутеней — это отдельная тема):



Как всегда, код доступен на гитхабе
Читать дальше →
Всего голосов 68: ↑65 и ↓3+62
Комментарии20

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 5 из 6

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

Содержание основного курса




Улучшение кода






Official translation (with a bit of polishing) is available here.




Пришла пора веселья, давайте для начала смотреть размер текущего кода:
  • geometry.cpp+.h — 218 строк
  • model.cpp+.h — 139 строк
  • our_gl.cpp+.h — 102 строки
  • main.cpp — 66 строк


Итого 525 строк. Ровно то, что я обещал в самом начале курса. И заметьте, что отрисовкой мы занимаемся только в our_gl и main, а это всего 168 строк, и нигде мы не вызывали сторонних библиотек, вся отрисовка сделана нами с нуля!
Я напоминаю, что мой код нужен только для финального сравнения с вашим работающим кодом! По-хорошему, вы всё должны написать с нуля, если следуете этому циклу статей. Очень прошу, делайте самые безумные шейдеры и выкладывайте в комментарии картинки!!!


Читать дальше →
Всего голосов 103: ↑98 и ↓5+93
Комментарии41

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 4б из 6

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

Содержание курса




Улучшение кода






Official translation (with a bit of polishing) is available here.




Сегодня мы заканчиваем с ликбезом по геометрии, в следующий раз будет веселье с шейдерами!
Чтобы не было совсем скучно, вот вам тонировка Гуро:



Я убрал текстуры, чтобы было виднее. Тонировка Гуро очень проста: добрый дяденька-моделёр дал нам нормальные вектора к каждой вершине объекта, они хранятся в строчках vn x y z файла .obj. Мы считаем интенсивность освещения для каждой вершины треугольника и просто интерполируем интенсивность внутри. Ровно как мы делали для глубины z или для текстурных координат uv!

Кстати, если бы дяденька-моделёр был не таким добрым, то мы могли бы посчитать нормали к вершине как среднее нормалей граней, прилегающих к этой вершине.

Текущий код, который сгенерировал эту картинку, находится здесь.
Читать дальше →
Всего голосов 80: ↑77 и ↓3+74
Комментарии57

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 4a из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Построение перспективного искажения


Четвёртая статья будет разбита на две, первая часть говорит про построение перспективного искажения, вторая про то, как двигать камеру и что из этого следует. Задача на сегодня — научиться генерировать вот такие картинки:



Читать дальше →
Всего голосов 92: ↑90 и ↓2+88
Комментарии48

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 3 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




А что потом? Я разобрал весь материал!



В статьях 7 и 8 мы поговорим о программировании непосредственно под OpenGL. Есть ненулевая вероятность получить краткий курс OpenCL/CUDA в статьях 9+.

Удаление невидимых поверхностей


Знакомьтесь, это мой друг z-buffer головы абстрактного африканца. Он нам поможет убрать визуальные артефакты отбрасывания задних граней, которые у нас оставались в прошлой статье.



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

Мы её можем использовать исключительно в рамках обучения рендерингу. Это очень качественная модель, с которой я варварски обошёлся, но я обещаю вернуть ей глаза!
Читать дальше →
Всего голосов 90: ↑89 и ↓1+88
Комментарии63

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 2 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Update:


Внимание, статья 4в даёт новую, более простую версию растеризатора.

Давайте знакомиться, это я.



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

В прошлый раз мы нарисовали проволочную сетку трёхмерной модели, в этот раз мы зальём полигоны. Точнее, треугольники, так как OpenGL практически любой полигон триангулирует, поэтому ни к чему разбирать сложный случай. Напоминаю, что этот цикл статей создан для самостоятельного программирования. Время, которое я здесь привожу — это не время чтения моего кода. Это время написания вашего кода с нуля. Мой код здесь только для того, чтобы сравнить ваш (рабочий) код с моим. Я совсем не являюсь хорошим программистом, поэтому ваш код может быть существенно лучше моего. Любая критика приветствуется, любым вопросам рад.

Пожалуйста, если вы следуете этому туториалу и пишете свой код, выкладывайте его на github.com/code.google.com и им подобные и давайте ссылки в комментариях! Это может хорошо помочь как и вам (другие люди могут чего посоветовать), так и будущим читателям.
Читать дальше →
Всего голосов 119: ↑116 и ↓3+113
Комментарии122

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 1 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Постановка задачи


Цель этого цикла статей — показать, как работает OpenGL, написав его (сильно упрощённый!) клон самостоятельно. На удивление часто сталкиваюсь с людьми, которые не могут преодолеть первоначальный барьер обучения OpenGL/DirectX. Таким образом, я подготовил краткий цикл из шести лекций, после которого мои студенты выдают неплохие рендеры.

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



Внимание, это обучающий материал, который в целом повторит структуру библиотеки OpenGL. Это будет софтверный рендер, я не ставлю целью показать, как писать приложения под OpenGL. Я ставлю целью показать, как сам OpenGL устроен. По моему глубокому убеждению, без понимания этого написание эффективных приложений с использованием 3D библиотек невозможно.
Читать дальше →
Всего голосов 198: ↑196 и ↓2+194
Комментарии120

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 4в из 6

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

Содержание основного курса




Улучшение кода






Official translation (with a bit of polishing) is available here.




Новый растеризатор и коррекция перспективных искажений


Тема сегодняшего разговора — это коррекция искажений интерполяции, посмотрите на разницу текстурирования на полу:



Я специально убрал из рендера всё, что касается освещения, нормалей и прочего, оставил только текстуру. Спасибо MrShoor, я был ленив и не делал этой коррекции, но в итоге заморочился, благодаря его пинку. Со старой версией растеризатора это было муторно, с новой это достаточно просто.

Поэтому начнём с того, как работает новый растеризатор, а для этого нам нужно уметь работать с барицентрическими координатами.
Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии38

До последнего байта: минимальный вариант Hello World для .NET

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

Вот вам тупой вопрос, который вы сами, наверное, никогда себе не задавали. Каково минимальное количество байт, которые необходимо сохранить в исполняемом .NET-файле, чтобы CLR напечатала "Hello, World!" в консоли стандартного вывода?

Читать далее
Всего голосов 75: ↑74 и ↓1+97
Комментарии73

Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1

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

Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.

Под катом мы погрузимся в мир неопределённого поведения в C++ и рассмотрим некоторые примеры ситуаций, в которых оно может возникать.

P.S.: Часть приведённых в статье примеров вдохновлены материалами, которые можно посмотреть в разделе «Полезные ссылки».

Читать далее
Всего голосов 42: ↑40 и ↓2+44
Комментарии44

Когда отладочных символов стало слишком много

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

Смерть, налоги и безудержно разрастающиеся браузерные движки — вот три вещи, в которых можно быть твёрдо уверенным. Актуально это было и на начало 2020 года, когда я осознал, что из-за безжалостного роста Chromium рано или поздно мы будем создавать файлы PDB (отладочных символов Windows), превосходящие предел формата PDB в 4 ГиБ.

В феврале 2020 года я зарегистрировал баг Visual Studio с просьбой увеличения этого предела, и спустя три года и три дня мы дёрнули рубильник, и теперь Chromium может создавать PDB большего размера. На тот момент PDB для Chrome занимал 95% от 4 ГиБ, а многие тестовые двоичные файлы уже преодолели этот порог, так что это было сделано вовремя.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+23
Комментарии1

Слепые капитаны ищут дно: почему российский бизнес – это болото, в котором барахтаются идиоты-«менеджеры»

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

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

Как часто вас подставляли или динамили разные невменяемые люди на работе? Бывало ли так, что вы орали матом в бессилии и хотели кому-нибудь сломать ноги за эпические фейлы? Сейчас я расскажу о том, почему так всё складывается.

Читать далее
Всего голосов 259: ↑183 и ↓76+149
Комментарии1361

21 фича современного C++, которые вам обязательно пригодятся

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

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

Сообщество C++ дополняет стандарт чаще, чем Apple выпускает новые iPhone. Благодаря этому C++ теперь больше похож на большого слона, а съесть целого слона за один присест невозможно. Вот почему я решил написать эту статью, чтобы дать вашему путешествию по современному C++ своего рода отправную точку. Моя целевая аудитория здесь — люди, которые переходят со старого (т.е. 98/03) С++ на современный (т.е. 2011 и далее) С++.

Я отобрал ряд фич современного C++ и постарался объяснить их на лаконичных примерах, чтобы вы научились определять места, где их можно использовать.

Читать далее
Всего голосов 52: ↑47 и ↓5+53
Комментарии160

Как я после колледжа в Екатеринбурге поступил в чешский университет на программиста

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

5 лет назад, когда мне исполнилось 20, я уехал отдыхать в Испанию. Это была моя первая поездка в Европу и за рубеж в целом. Там я познакомился с местным русскоязычным комьюнити — ребятами, которые переехали, чтобы учиться и работать в Испании. Пообщавшись с ними, я понял, что получить образование в Европе вполне реально, даже если ты простой парень из Екатеринбурга. Забегая наперед - все так и оказалось, мне удалось задуманное. О том, как и что я делал, рассказываю под катом.

Читать далее
Всего голосов 23: ↑16 и ↓7+20
Комментарии41

Информация

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