Pull to refresh
21
0
Yevgeniy Logachev @infrapro

User

Send message

Нечёткий мир шума Перлина

Reading time5 min
Views19K
image

Что такое шум Перлина?


Шум Перлина придуман в 1983 году Кеном Перлином (получившим за это достижение премию Американской Академии кинематографических искусств и наук). Видите ли, в те времена все стремились к фотореализму, но его всегда не хватало. Кен Перлин придуман этот алгоритм шума, чтобы избавиться от жалкого «компьютерного» внешнего вида 3D-моделей. Шум — это генератор случайных чисел в компьютерной графике. Это случайный неструктурированный паттерн, он полезен в тех случаях, когда требуется источник подробных деталей, недостающих в очевидной структуре1. Шум Перлина — это многомерный алгоритм, используемый в процедурной генерации, текстурах, генерации рельефа, генерации карт, генерации поверхностей, генерации вершин, и так далее, и тому подобное.
Total votes 29: ↑27 and ↓2+25
Comments5

Практичный Go: советы по написанию поддерживаемых программ в реальном мире

Reading time48 min
Views57K
Статья посвящена лучшим практикам написания кода Go. Она составлен в стиле презентации, но без обычных слайдов. Постараемся кратко и чётко пройтись по каждому пункту.

Для начала следует договориться, что значит лучшие практики для языка программирования. Здесь можно вспомнить слова Расса Кокса, технического руководителя Go:

Программная инженерия — то, что происходит с программированием, если добавить фактор времени и других программистов.

Таким образом, Расс различает понятия программирования и программной инженерии. В первом случае вы пишете программу для себя, во втором создаёте продукт, над которым со временем будут работать и другие программисты. Инженеры приходят и уходят. Команды растут или сокращаются. Добавляются новые функции и исправляются ошибки. Такова природа разработки программного обеспечения.
Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments14

2D-тени на Signed Distance Fields

Reading time9 min
Views5.4K
Теперь, когда мы знаем основы комбинирования функций расстояний со знаком, можно использовать их для создания крутых вещей. В этом туториале мы применим их для рендеринга мягких двухмерных теней. Если вы пока не читали моих предыдущих туториалов о полях расстояний со знаком (signed distance fields, SDF), то крайне рекомендую их изучить, начав с туториала о создании простых фигур.


[В GIF возникли дополнительные артефакты при пересжатии.]
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments5

Must-have плагины и несколько полезностей для С\С++ разработки в VS Code

Reading time7 min
Views55K


Удивительно, но до сих пор на Хабре нет хорошей подборки плагинов для Visual Studio Code для тех, кто пишет на С/С++. Microsoft в своем блоге опубликовали только статью, совсем базового уровня с инструкцией по настройке. Но большинство читателей Хабра, тем более из разработчиков, обойдется без такой подробной инструкции. Есть только несколько подборок для веб-разработчиков, но не для С++.

Наверное это связано с тем, что большинство С++ разработчиков использует тяжеловесные IDE, в первую очередь конечно же Visual Studio.

Но в Linux и MacOS с полноценными IDE всё не так просто, да и тяжелая среда разработки не всегда нужна или просто не хочется ее использовать.

Я же хочу обратить ваше внимание на полезные плагины, которые облегчают жизнь и работу, а также рассказать про полезные настройки и особенности VS Code, которые вы могли просто упустить.
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments22

Боль в спине — понимание с позиции современной медицины

Reading time8 min
Views184K
Плохое понимание людьми причин болей в спине подтолкнуло меня к тому, чтобы адаптировать мой недавно опубликованный обзор по болям внизу спины для более массового читателя.

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


Несмотря на акцент на болях в области поясницы в целом все написанное применимо в контексте болей и в других отделах позвоночника.
Читать дальше →
Total votes 63: ↑61 and ↓2+59
Comments230

Реверс-инжиниринг рендеринга «Ведьмака 3»

Reading time47 min
Views16K
Первая часть перевода находится здесь. В этой части мы поговорим об эффекте резкости, средней яркости, фазах Луны и атмосферных явлениях во время дождя.

Часть 6. Sharpen


В этой части мы подробнее рассмотрим ещё один эффект постобработки из The Witcher 3 — Sharpen.

Sharpening делает изображение на выходе немного чётче. Этот эффект известен нам по Photoshop и другим графическим редакторам.

В The Witcher 3 у sharpening есть две опции: low и high. О разнице между ними я расскажу ниже, а пока давайте взглянем на скриншоты:

image

Опция «Low» — до

image

Опция «Low» — после
Total votes 48: ↑48 and ↓0+48
Comments8

Retropie в корпусе Dreamcast

Reading time3 min
Views7.6K
image

Приветствую Всех!

Год назад начитавшись статей про retropie и насмотревшись его реализаций в различных корпусах старых консолей решил собрать нечто подобное в корпусе Dreamcast.
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments18

Быстрый старт в 3D печати: бюджетные принтеры для начинающих или технологии в массы

Reading time4 min
Views19K
Наступил тот момент, что иметь дома маленький настольный 3Д принтер совсем не накладно, а использование его не требует глубоких познаний технологии или опыта печати. В магазине есть несколько неплохих моделей дешевле $200 (!), которые подойдут начинающим пользователям. Все 3Д принтеры умеют печатать популярным и безопасным пластиком PLA, который не имеет запаха и является самым простым в освоении.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments50

Эти токсичные парни: они отравляют проекты

Reading time11 min
Views58K
Сделаем осторожное предположение, что вы хотите получать удовлетворение от работы, реализовывать интересные и полезные проекты за адекватное вознаграждение, время от времени отдыхать с пониманием, что жизнь проходит не зря.



Ах-ха, как бы не так! Что за скучная жизнь без борьбы? Чтобы вы не расслаблялись, на страже вашего жизненного тонуса и постоянного напряжения во всех сфинктерах стоят токсичные парни и девчонки (да-да, про них я тоже не забыл, не думайте).

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

Тараканы Корпоративные (токсичность:☣☣☣)


Ареал обитания и повадки:
Заводятся в крупных корпорациях, в маленьких компаниях приживаются плохо. Тараканам нужно много бегать и утверждать переутверждение согласованных согласований. Максимум движений с отрицательной пользой.
Читать дальше →
Total votes 118: ↑67 and ↓51+16
Comments120

Внутри Quake: определение видимых поверхностей

Reading time17 min
Views35K
image

Ветеран программирования трёхмерной графики Майкл Абраш на примере разработки первого Quake рассказывает о необходимости творческого мышления в программировании.

Много лет назад я работал в теперь уже не существующей компании-производителе видеоадаптеров Video Seven. Там я помогал в разработке клона VGA. Мой коллега Том Уилсон, долгие месяцы круглосуточно работавший над разработкой VGA-чипа Video Seven, стремился сделать VGA как можно более быстрым, и был уверен, что его производительность оптимизирована почти по максимуму. Однако когда Том уже вносил в конструкцию чипа последние штрихи, до нас донеслись слухи, что наш конкурент Paradise достиг ещё большей производительности в своём разрабатываемом клоне, добавив в него FIFO.

На этом слухи заканчивались — мы не знали, ни что это за FIFO, ни насколько он помог, ничего другого. Тем не менее, Том, обычно приветливый и расслабленный человек, превратился в активного, одержимого фанатика со слишком большим процентом кофеина в крови. Исходя из этих крупиц информации, он пытался выяснить, что же удалось сделать Paradise. В конце концов он пришёл к выводу, что Paradise вероятно вставил FIFO-буфер записи между системной шиной и VGA, чтобы когда ЦП выполнял запись в видеопамять, записываемые данные сразу же попадали в FIFO, и это позволяло ЦП продолжать обработку, а не простаивать каждый раз, когда он выполнял запись в память дисплея.

У Тома не было ни логических элементов, ни достаточно времени на реализацию полного FIFO, но ему удалось реализовать FIFO глубиной в одну операцию, что позволяло процессору обгонять VGA-чип на одну операцию записи. Том не был уверен, что это даст хорошие результаты, но это было единственное, что он смог сделать, поэтому он реализовал эту систему и передал чип в производство.
Читать дальше →
Total votes 87: ↑87 and ↓0+87
Comments6

HL 2018. Конспект доклада «Make passwords great again! Как победить брутфорс и оставить хакеров ни с чем»

Reading time19 min
Views21K

Passwords are like underwear


Привет, Хабр! Меня зовут Ахмадеев Ринат, я Sr. PHP developer.


Представляю вашему вниманию конспект доклада Make passwords great again! Как победить брутфорс и оставить хакеров ни с чем от Алексея Ермишкина из Virgil Security с HighLoad++ 2018.


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


В докладе рассматриваются способы защиты паролей начиная от хешей и заканчивая более современными подходами, такими как Facebook's password Onion, Sphinx и Pythia. В самом конце рассматривается новый Simple Password-Hardened Encryption Services (PHE).


Мне так понравился доклад, что я подготовил конспект. Всем рекомендую к ознакомлению.

Total votes 55: ↑55 and ↓0+55
Comments29

Изюминка Zircon: vDSO (virtual Dynamic Shared Object)

Reading time6 min
Views11K

Zircon? Что это?


В августе 2016 года, без каких-либо официальных объявлений со стороны Google, были обнаружены исходники новой операционной системы Fuchsia. Эта ОС основана на микроядре под названием Zircon, которое в свою очередь основано на LK (Little Kernel).


Fuchsia is not Linux

Примечания переводчика

Я не настоящий сварщик являюсь разработчиком и/или экспертом Zircon. Текст под катом является компиляцией частичных переводов: официальной документации Zircon vDSO и статьи Admiring the Zircon Part 1: Understanding Minimal Process Creation от @depletionmode, куда было добавлено немного отсебятины (которая убрана под спойлеры). Поэтому конструктивные предложения по улучшению статьи, как и всегда, приветствуются.


О чем пойдет речь в статье?


vDSO в Zircon является единственным средством доступа к системным вызовам (syscalls).


А разве нельзя из нашего кода напрямую вызвать инструкции процессора SYSENTER/SYSCALL? Нет, эти инструкции процессора не являются частью системного ABI. Пользовательскому коду запрещено напрямую выполнять такие инструкции.


Желающих узнать больше деталей о таком архитектурном шаге приглашаю под кат.


Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments63

Азоры: последний резерв флоры в середине Атлантического океана

Reading time13 min
Views74K

Долина внутри кратера вулкана, маленький «Затерянный мир», тёплый и надёжно защищённый от непогоды снаружи. Озеро так вообще +75 градусов Цельсия в некоторых местах.

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

  • Тут очень изолированный биом. Например, есть эндемичный азорский снегирь Pyrrhula murin (хотя тут вечное лето, даже на Новый год). Среди животных нет ничего ядовитого или иначе опасного для человека.
  • Очень высокая влажность из-за температурных инверсий и «шершавых» гор, останавливающих облака (как следствие — рай для флоры)
  • И тут очень важный перевалочный пункт как по дороге из Африки и Индии (вспоминаем времена Ост-Индской торговой кампании), так и начиная со Второй Мировой — база для дозаправки и встреч конвоев.

А ещё благодаря изолированности, отличному климату, вулканической почве с кучей удобрений, закрытым долинам кальдер (на месте старых кратеров) тут можно и нужно собирать растения, которые будут защищены от масштабных биологических катастроф континентов.

И ещё на островах очень, очень интересно. Сейчас расскажу.
Читать дальше →
Total votes 176: ↑172 and ↓4+168
Comments120

Давайте уберём кватернионы из всех 3D-движков

Reading time13 min
Views30K
image

Для записи трёхмерных поворотов программисты графики используют кватернионы. Однако в кватернионах сложно разобраться, потому что изучают их поверхностно. Мы просто принимаем на веру странные таблицы умножения и другие загадочные определения, и используем их как «чёрные ящики», поворачивающие векторы так, как нам нужно. Почему $\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=-1$ и $\mathbf{i} \mathbf{j} = \mathbf{k}$? Почему мы берём вектор и превращаем его в «мнимый» вектор, чтобы преобразовать его, например $\mathbf{q} (x\mathbf{i} + y\mathbf{j} + z \mathbf{k}) \mathbf{q}^{*}$? Да кому это интересно, если всё работает, правда?

Существует способ описания поворотов под названием ротор, который относится к области и комплексных чисел (в 2D), и кватернионов (в 3D), и даже обобщается до любого количества измерений.

Мы можем создавать роторы практически полностью с нуля, вместо того, чтобы определять из ничего кватернионы и пытаться объяснить, как они работают задним числом. Это занимает больше времени, но мне кажется, что это стоит того, потому что их гораздо легче понять!

Кроме того, для визуализации и понимания трёхмерных роторов не нужно использовать четвёртое пространственное измерение.

Было бы здорово, если бы начали вытеснять использование и изучение кватернионов, заменяя их роторами. Заменить их очень просто, а код останется почти таким же. Всё, что можно делать с кватернионами, например, интерполяцию и устранение блокировки осей (Gimbal lock), можно сделать и с роторами. Но понимать мы начинаем гораздо больше.
Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments85

Создаём систему электронного хронометража гонок

Reading time9 min
Views10K

185282-11516937085b2ed4ea7e36b


По будням, я уже 17 лет занимаюсь разработкой корпоративного софта, у меня было много разных хобби, но в итоге нашёл то, что держит уже 5 лет и не собирается отпускать. С 2013 года большую часть свободного времени я посвящаю мотокроссу и эндуро на внедорожных мотоциклах, в том числе регулярно участвовал в любительских соревнованиях. После неудачного дропа в июне 2017 года я оказался в больнице с полным переломом правой плечевой кости. Вышел из больницы, пришёл в себя и стало ясно, что ездить не получится ещё месяца два — три, а привычка к активной деятельности осталась. Тогда и решил, что надо попробовать самому организовать гонку для своих друзей. С технической точки зрения меня интересовал хронометраж, о том как я делаю собственную систему и провожу гонки читайте под катом.

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments37

Древности: Минидиск в эпоху Айпода

Reading time16 min
Views24K
Когда Philips закрыла проект цифровой компакт-кассеты в 1996 году, она поступила правильно. Дело не в том, что цифровая кассета проиграла цифровому минидиску. Скорее оба формата оказались недостаточно востребованы: с одной стороны им мешала дешевая и привычная аудиокассета, с другой — интернет и музыка, лишенная носителя. На прошлой неделе я рассказал о минидиске в естественной среде обитания — когда интернет и MP3 не составляли серьезной конкуренции формату. Минидиск был слишком дорогим, чтобы стать массовым, но получил признание среди профессионалов, энтузиастов и просто небедных людей.



Сегодня я расскажу о минидиске в эпоху MP3-плееров. Физический носитель со всеми его ограничениями по определению не был способен конкурировать с портативными устройствами на базе жесткого диска или флеш-памяти. Более того, уже в начале двухтысячных «музыкальный плеер» стал частью других цифровых устройств, и как только они стали более-менее удобными, шансов ни у одного физического носителя уже не было. Тем не менее, благодаря упорству Sony, история минидиска продолжается до 2006 года — когда было представлено последнее новое устройство. Sony трижды пыталась обновить формат под новые запросы потребителя, и трижды проиграла, и наверное затея изначально была обречена на провал. Зато теперь, через пять лет после окончательного прекращения поддержки формата, у меня есть возможность испытать еще несколько старых устройств, и рассказать о них вам.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments112

Электронные книги и их форматы: рассказываем про PDF — его историю, плюсы и минусы

Reading time5 min
Views32K
В нашем блоге мы уже обсуждали специфику стандартов DjVu, FB2 и FB3. Сегодня рассказываем про формат PDF, который стал воплощением мечты о «безбумажном офисе».

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments22

Как Baldur’s Gate спас компьютерные RPG

Reading time14 min
Views19K

Искусство может быть делом вкуса, но не подлежит сомнению следующий вывод: 1998 год стал лучшим годом для видеоигр, создавшим непревзойдённую линейку революционных игр, оставивших неизгладимое наследие и породивших серии и субкультуры, существующие и по сей день. На протяжении всего этого года The Ringer отдаёт дань легендарным играм, которым в 2018 году исполнилось 20 лет, играя в них в очередной раз или впервые, общаясь с их авторами и анализируя то, почему они стали великими и как помогли стать лучше последующим играм. Эту серию мы продолжаем первой выдающейся игрой BioWare, расширившей границы ролевых игр эпической Baldur’s Gate, которой два десятка лет исполнилось на прошлой неделе.

В конце 1995 года небольшая группа начинающих разработчиков игр из Альберты, создавшая компанию под названием BioWare, нуждалась в новом проекте. Их первый проект, игра про боевых мехов Shattered Steel, близилась к концу разработки, и крошечная студия хотела попробовать что-то новое. Основатели BioWare выросли на настольных ролевых играх и их цифровых аналогах наподобие Wasteland, поэтому они решили, что второй игрой должна стать компьютерная RPG.
Total votes 29: ↑29 and ↓0+29
Comments21

Внутренняя и внешняя линковка в C++

Reading time9 min
Views65K
Всем добрый день!

Представляем вам перевод интересной статьи, который подготовили для вас рамках курса «Разработчик C++». Надеемся, что она будет полезна и интересна для вас, как и нашим слушателям.

Поехали.

Сталкивались ли вы когда-нибудь с терминами внутренняя и внешняя связь? Хотите узнать, для чего используется ключевое слово extern, или как объявление чего-то static влияет на глобальную область? Тогда эта статья для вас.

В двух словах

В единицу трансляции включены файл реализации (.c/.cpp) и все его заголовочные файлы (.h/.hpp). Если внутри единицы трансляции у объекта или функции есть внутреннее связывание, то этот символ виден компоновщику только внутри этой единицы трансляции. Если же у объекта или функции есть внешнее связывание, то компоновщик сможет видеть его при обработке других единиц трансляции. Использование ключевого слова static в глобальном пространстве имен дает символу внутреннее связывание. Ключевое слово extern дает внешнее связывание.
Компилятор по умолчанию дает символам следующие связывания:

  • Non-const глобальные переменные — внешнее связывание;
  • Const глобальные переменные — внутреннее связывание;
  • Функции — внешнее связывание.


Читать дальше →
Total votes 26: ↑22 and ↓4+18
Comments34

Математик-любитель обнаружил наименьшее универсальное покрытие

Reading time5 min
Views24K

Путём трудных геометрических подсчётов Филип Гиббс обнаружил наименьшее из известных покрытий для любой возможной формы



Такое универсальное покрытие, как шестиугольник, можно описать вокруг любой формы

Филип Гиббс – не профессиональный математик. Поэтому когда ему хотелось поразмышлять над какой-либо задачей, он искал такую, с которой может справиться и любитель. Он обнаружил трудную задачу, которая может свести с ума даже лучшие умы. И в работе, опубликованной в этом году, Гиббс значительно продвинулся в решении вопроса столетней давности, зависящего от способности точно измерять площадь вплоть до атомных масштабов.

Первым эту задачу предложил французский математик Анри Леон Лебег, в письме к своему другу Юлиусу Палу, написанному в 1914 году. Лебег спросил: какова форма наименьшей возможной площади, способной полностью покрыть большое количество других форм (имеющих одно общее свойство, о котором ниже)?
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments20

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity