Как стать автором
Обновить
0
0
Игорь @ThargoN_SG

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

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

Шейдеры 3D-игр для начинающих: эффекты

Время на прочтение18 мин
Количество просмотров14K
[Первая часть]

Разобравшись с основами, в этой части статьи мы реализуем такие эффекты, как контуры объектов, bloom, SSAO, размытие, глубина резкости, пикселизация и другие.

Контуры



Создание контуров вокруг геометрии сцены придаёт игре уникальный внешний вид, напоминающий комиксы или мультфильмы.

Diffuse материала


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

uniform struct
  { vec4 diffuse
  ;
  } p3d_Material;

out vec4 fragColor;

void main() {
  vec3 diffuseColor = p3d_Material.diffuse.rgb;
  fragColor = vec4(diffuseColor, 1);
}

Здесь показан небольшой фрагментный шейдер, который рендерит диффузный цвет материала геометрии в текстуру буфера кадров. Эта текстура диффузного цвета из буфера кадров будет входящей текстурой для шейдера контуров.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии5

Пиратство в Космосе – Коварная Delta-V и Водородные Стелс-Пароходы — Часть 1

Время на прочтение19 мин
Количество просмотров26K
Космическое пиратство, довольно популярная тема в научной фантастике. Образ космических пиратов постоянно используется в жанре научной фантастики, как некая калька с пиратов морей и океанов.

Однако давайте разберемся, возможно ли пиратство в космосе на самом деле?

Итак, что такое пиратство?


image
Китайская джонка

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

Пиратство действует в соответствии с правилами, которые делают кражу целесообразной:

  • Ценность добычи оправдывает понесенные затраты и риск нападения пиратов
  • Добычу можно оперативно реализовать
  • Обеспечена безопасность пиратов от преследования после нападения.

image

Довольно простые правила, не правда ли.

Пираты хотят получить что-то в результате своей атаки, что-то стоящее их времени и риска, которому они себя подвергают. А если вознаграждение представлено не в денежной форме, то пираты должны иметь возможность конвертировать свою добычу в деньги. После чего, они захотят эти деньги тратить и наслаждаться плодами своих приключений, не опасаясь постоянного преследования.
Читать дальше →
Всего голосов 72: ↑67 и ↓5+62
Комментарии161

foreach or for that is the question

Время на прочтение5 мин
Количество просмотров55K
Вопрос о выборе цикла for/foreach стар, как мир. Все мы слышали, что foreach работает медленнее for-а. Но не все знаем почему… А вообще так ли оно?

Когда я начинал изучать .NET, один человек сказал мне, что foreach работает в 2 раза медленнее for-а, без каких-либо на то обоснований, и я принял это как должное. Теперь, когда чьих-то слов мне мало, я решил написать эту статью.

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

Итак, поехали!
Читать дальше →
Всего голосов 55: ↑45 и ↓10+35
Комментарии27

Объёмное атмосферное рассеяние света

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

Если вы прожили на планете Земля достаточно долго, то наверно задавались вопросом, почему небо обычно синее, но краснеет на закате. Оптическое явление, которое стало (основной) причиной этого, называется рэлеевским рассеянием. В этой статье я расскажу, как смоделировать атмосферное рассеяние, чтобы имитировать многие визуальные эффекты, которые проявляются на планетах. Если вы хотите научиться рендерить физически точные изображения чужих планет, то этот туториал определённо стоит изучить.

GIF

Статья разбита на следующие части:

  • Часть 1. Объёмное атмосферное рассеяние
  • Часть 2. Теория атмосферного рассеяния
  • Часть 3. Математика рэлеевского рассеяния
  • Часть 4. Путешествие сквозь атмосферу
  • Часть 5. Атмосферный шейдер
  • Часть 6. Пересечение атмосферы
  • Часть 7. Шейдер атмосферного рассеяния
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии14

Мастер-класс «Почему Стив Джобс любил шрифты» (Алексей Каптерев)

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


Привет, Хабр! Давно у нас в блоге не было расшифровок мастер-классов. Исправляемся. В этом посте вас ждет грандиозное путешествие в мир шрифтов от древнейших времен до наших дней. Если вы хотите понять, каким образом шрифты влияют на наши эмоции и наконец научиться отличать гуманистический гротеск от ленточной антиквы — добро пожаловать под кат. И да, там очень много картинок. Передаем слово автору.




Шутка, написанная гарнитурой Times, на 10 % смешнее той, что написана гарнитурой Arial. Почему? Чёрт знает. Лучшее объяснение, которое я видел: юмор ассоциируется с агрессией, с остротой, с остроумием — а Times выглядит более острым, чем Arial.


Ещё один любопытный эксперимент, в котором участвовало 45 тыс. человек. Заходишь на сайт, тебе показывают статью Дэвида Дойча, британского физика. В статье автор пишет, что сегодня очень трудно внезапно умереть. Например, от инфекционного заболевания или в уличной драке. Лет сто назад это случалось намного чаще. Главный вывод статьи — сейчас мир безопасен как никогда. В среднем, конечно, ведь где-то постоянно идут локальные военные конфликты.

Всего голосов 196: ↑194 и ↓2+192
Комментарии100

Надоело писать PropertyDrawer в Unity? Есть способ лучше

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

Не так давно я участвовал в разработке игры на Unity. Много времени уделял инструментам для коллег: редактор уровней для геймдизайнера, удобные базы данных для художников.


По понятным причинам, в программировании интерфейсов под Unity мы не всегда можем использовать автоматическую разметку (удобные средства GUILayout), и нередко приходится вручную нарезать прямоугольники и рисовать интерфейсы средствами класса GUI. Эта работа утомительна, связана с большим количеством ошибок, а код получается сложным в поддержке. Со временем, возникла привычная каждому программисту мысль: напишу свой велосипед! "Должен быть способ лучше!". За подробностями приглашаю под кат.



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

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии14

RenderDoc — графический отладчик для DirectX11 от Crytek

Время на прочтение6 мин
Количество просмотров31K
Как вы, возможно, знаете в мире Windows для рисования графики часто используется DirectX. В последних версиях (10, 11.x) библиотека серьёзно шагнула вперёд и именно на них построены движки многих современных игр. Кроме того, DirectX используется не только в играх — сам интерфейс ОС Windows тоже с непомню-какой версии (Vista?) рисуется через него, да и казалось-бы не сильно связанные с графикой программы, желая увеличить производительность и плавность зума\скрола переходят на последние версии DirectX. Так некоторое время назад на DirectX11 перешел рендер Google Chrome (вроде бы с версии 36).

Когда-то во времена Windows 95 и Pentium II была такая шутка, что чем медленнее компьютер — тем лучше можно понять работу операционной системы — невооруженным глазом видно в каком порядке прорисовываются элементы окон, обрабатываются события. Сегодня для подобных целей относительно DirectX есть отдельные инструменты — графические отладчики, позволяющие понять, как именно рисуется каждый пиксель каждого кадра, какие операции выполняет движок DirectX, какие ресурсы он использует, насколько быстро и правильно всё работает. Один из таких инструментов — RenderDoc от компании Crytek мы сегодня и рассмотрим. А в качестве примера разберём уже упомянутый выше новый рендер Google Chrome.



Читать дальше →
Всего голосов 47: ↑46 и ↓1+45
Комментарии21

Маленькие трюки DirectX и HLSL

Время на прочтение9 мин
Количество просмотров21K
Привет, Хабр! Решил написать статью-заметку о небольших трюках, которые использую в своем скромном движке. Это скорее заметка самому-себе, и матёрые программисты лишь усмехнутся, но, думаю, новичкам она может пригодится.
Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии8

Как дать адекватную оценку времени, когда неопределённость бьёт по башке

Время на прочтение12 мин
Количество просмотров82K
Большинство людей не умеют адекватно оценивать сроки выполнения задач. Ой как это заставляет порой понервничать… Тут и «дэдлайн подкрадывается незаметно». И перестраховка в 500% на всякий случай (все равно не хватает). И отжимание «заведомо раздутых сроков», чтобы исполнитель пообещал чего-то более приемлемого. И невнятные бормотания вместо конкретных цифр.

image

В этой статье собраны и структурированы принципы и методы, с помощью которых можно научить себя и других давать адекватные оценки. В начале — общие принципы и чуть-чуть математики. В конце — конкретика для студий.
Читать дальше →
Всего голосов 81: ↑68 и ↓13+55
Комментарии24

Эффективное использование Github

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

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Всего голосов 149: ↑148 и ↓1+147
Комментарии38

40 туториалов для создания векторных иллюстраций

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

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

Итак, поехали:

Приступая к работе


1. Изучение векторной иллюстрации за 10 шагов



В этом уроке объясняется, каким образом создавать векторные иллюстрации используя Adobe Illustrator. Приводится объяснение ключевых параметров и инструментов, которое дополняется советами экспертов.

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

ASP.NET MVC. Урок 0. Вступление

Время на прочтение2 мин
Количество просмотров783K
Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

Почему именно asp.net mvc

ASP.NET MVC я люблю потому что:
  • Это .net. Я знаю .net и С#.
  • Это компилируемый код.
  • Это не ASP.NET WebForms, я работаю с html-кодом.
  • Используется MVC-паттерн.
  • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
  • Отличные инструменты отладки.


Читать дальше →
Всего голосов 290: ↑215 и ↓75+140
Комментарии67

Unity — выбираем, какой массив использовать

Время на прочтение3 мин
Количество просмотров73K
Для тех, кто сталкивался с Unity, — не секрет, что эта платформа предоставляет большое количество разнообразных массивов — аж 5 штук (для JS и того больше — 6!). Так что же выбрать и как не запутаться в этом многообразии?

Начну — с конца. Сразу же приведу данные собранные в табличку.
Нетипизированный Типизированный
Доступ по индексу,
фиксированная длина
- встроенный массив
(built-in array)
Доступ по индексу,
динамический размер
ArrayList
или Javascript Array
List
Доступ по ключу Hashtable Dictionary
А теперь — давайте поговорим о каждом в отдельности…
Читать дальше →
Всего голосов 19: ↑8 и ↓11-3
Комментарии22

Откуда растут руки у GetHashCode в .NET

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

Введение


Данная статья посвящена теме генерации хеш-кодов на платформе .NET. Тема является достаточно интересной, и думаю любой уважающий себя .NET разработчик должен ее знать. Поэтому поехали!

Что хранится в объектах помимо их полей?


Начнем нашу статью с того, что узнаем что хранится у объектов ссылочного типа помимо их полей.

У каждого объекта ссылочного типа есть так называемый заголовок (Header), который состоит из двух полей: указатель на тип которым является данный объект (MethodTablePointer), а так же индекс синхронизации (SyncBlockIndex).
Читать дальше →
Всего голосов 60: ↑57 и ↓3+54
Комментарии29

Детализация, отражения и пост-эффекты в GTA V

Время на прочтение12 мин
Количество просмотров41K
От переводчика:

Данная публикация является продолжением материала
«Как происходит рендеринг кадра в GTA V». Теперь автор рассматривает вопросы детализации, освещения и пост-обработки кадра. Приятного чтения.

Уровень детализации


Если мы говорим об абсолютных преимуществах Rockstar над конкурентами, то показатели уровня детализации продуктов компании, определенно, выше всяких похвал. Лос-Сантос – это целая плеяда всевозможных сцен разной степени детализации/полигональности, причем все данные транслируются в режиме реального времени и это ни на минуту не блокирует экран загрузки. Просто дух захватывает!

Огни ночного города


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

Именно с таким заявлением Аарон Гарбут, один из основателей и арт-директоров Rockstar North, выступил незадолго до релиза игры на PS3.

Так ли это? Давайте рассмотрим вот такую ночную сцену:

image
Огоньки «До»
Осторожно! Трафик!
Читать дальше →
Всего голосов 51: ↑47 и ↓4+43
Комментарии8

Как накормить мозг программиста… или feed your brain

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

Введение


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


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

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

В данной публикации мы рассмотрим, как правильно питаться для жизнеобеспечения мозга и как его разогнать ноотропами (в случае аврала необходимости).
Читать дальше →
Всего голосов 213: ↑163 и ↓50+113
Комментарии145

Создание динамически изменяемого ландшафта для RTS на Unity3D

Время на прочтение21 мин
Количество просмотров35K
Давным-давно я имел радость играть в замечательнейшую RTS под названием «Периметр: Геометрия Воины» от отечественного разработчика K-D Labs. Это игра о том, как огромные летающие города под названием «Фреймы» бороздят просторы «Спанджа» — цепи соединенных между собой миров. Сюжет достаточно странный и абстрактный, но гораздо более интересной и инновационной составляющей игры была одна из ее технических особенностей, а не сюжет. В отличие от большинства RTS, где сражения происходят на статической местности, в «Периметре», одной из ключевых игровых механик был терраформинг. У игрока были средства манипулировать ландшафтом с целью возведения на нем своих сооружений а также целый арсенал боевых единиц, способных этот ландшафт превратить в потрескавшийся, поплывший и изрыгающий раскаленные камни/противных насекомых ужас.

Как известно, мир RTS нынче переживает некоторый упадок. Инди-разработчики слишком заняты тем, что клепают ретро-платформеры и rouge-like игры зубодробительной сложности, и поэтому, переиграв в «Периметр» некоторое время назад я решил, что должен и сам попробовать реализовать что-то подобное — идея была интересной и с технической и с геймплейной точек зрения. Обладая некоторым практическим опытом в разработке игр (ранее я совершал попытки сделать кое-что на XNA), я подумал, что чтобы добиться хоть какого-то успеха в одиночку мне придется воспользоваться чем нибудь более высокоуровневым и простым. Выбор мой пал на Unity 3D, чья пятая версия только-только вышла из под пресса.

Вооруженный вагоном энтузиазма, вдохновением от только что пройденного «Периметра» и просмотренной серией видеотуториалов по Unity, я начал делать наброски и знакомиться с инструментарием, который мне предложил Unity Editor.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии5

Пишем настоящий шум Перлина

Время на прочтение7 мин
Количество просмотров73K
По поисковому запросу шум перлина сразу попадается этот перевод на Хабре. Как справедливо заметили в комментариях к публикации, речь идёт вовсе не о шуме Перлина. Возможно, автор перевода и сам был не в курсе.

Чем выгодно отличается шум Перлина, легко можно заметить, если сравнить картинки.

Обычный шум (из той самой статьи):
image

Шум Перлина:
image

И увеличением количества октав первую картинку ко второй никак не приблизишь. Я не буду описывать достоинства шума Перлина и область его применения (потому что статья о программировании, а не о применении), а постараюсь объяснить как он реализован. Думаю, это будет полезно многим программистам, ведь хакерские исходники Кена Перлина мало объясняют даже при наличии комментариев.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+33
Комментарии18

Налаживаем коммуникацию между клиентом и UX: как избежать испорченного телефона

Время на прочтение5 мин
Количество просмотров8.4K
image Аналитик — арбитр между бизнесом, проектированием и разработкой, который периодически смещается в ту или иную сторону, но при этом удерживает процесс создания мобильного продукта в поле здравого смысла. Он обеспечивает коммуникацию между всеми участниками процесса, транслируя знания от одной группы в другую, чтобы выдвинутые гипотезы и принятые впоследствии решения были обеспечены достаточным количеством информации.
  • Бизнес — всегда думает о достижении своих KPI, но редко понимает сложность разрабатываемой системы и удобство для пользователей.
  • UX-проектировщик — всегда думает о пользователе, иногда в ущерб бизнесу. Не всегда явно понимает цель бизнеса и пытается навязывать свои идеи.
  • Разработчик — думает, как сделать все классно с точки зрения архитектуры системы и программного кода. Пытается примерять пользовательские сценарии на себя, но является технически подкованным человеком, что не свойственно для большинства пользователей.
Если про передачу требований от уровня бизнеса к системному уровню сказано немало и выработался определенный инструментарий, то вот какие артефакты использовать для взаимодействия и передачи знаний между бизнесом, аналитиком и UX-проектированием — вопрос открытый. Этой темой я продолжаю цикл статей по бизнес-анализу в мобильной разработке.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии0

Как создавать Pixel Perfect изображения в Adobe Illustrator

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

От переводчика


Рад приветствовать тебя, %юзернейм%!

Я новичок в профессии дизайнера интерфейсов, и как-то давно, листая вакансии, меня заинтересовали требования к одной из них. Среди таких, как знание пакета Adobe, средств прототипирования и навыков в области ux/ui я прочитал, что соискателю именно на эту вакансию неплохо было бы уметь держать порядок в слоях, структуре и названиях файлов и папок, а так же знать и уметь применять на практике то, что называется pixel perfect. Меня это заинтересовало, так как на моей работе ни от меня, ни от других сотрудников этого не требуют, но я всегда старался этого придерживаться и даже пытался убедить в этом других, но мне почему-то не хватало аргументов, чтобы объяснить, для чего это нужно.

С понятием pixel perfect я вообще на тот момент не был знаком, только слышал где-то пару раз, и так как этот пункт стоял в конце списка требований «аккуратности», я понял, что это что-то вроде апогея, вершины айсберга в организации работы над макетами.

Я стал искать, но ничего, кроме статьи на Хабре из пары абзацев про Pixel perfect от программиста не нашёл. Потом я как-то услышал о Monument Valley, и даже наткнулся на справочник Pixel Perfect Precision, но времени изучать так много информации на английском как-то не было, и первый раз он меня не зацепил. Стало появляться время и вышли некоторые статьи, одна из которых, наполненная практическими советами по Pixel Perfect зацепила меня, и я решил не просто прочитать и понять, а ещё и перевести по возможности литературно, чтобы дать вопросу широкую известность, и распространить тему на Хабре.

Небольшой технический момент. Оригинальная статья с Tuts+ называется «How to Create Pixel Perfect Artwork Using Adobe Illustrator», при этом я могу вас уверить, что большая часть из предложенных в статье настроек присутствует и в Adobe Photoshop CS6, а уж в Adobe Photoshop CC вообще можно повторить всё это полностью.

В заключение вступительной части хочу попросить не обращать внимания на то, что я новичок в дизайне, и этой мой первый в жизни перевод. Отнеситесь критично, тема серьёзная. Призываю делиться своими соображениями и опытом в комментариях.

Краткое содержание


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

Настройки Abobe Illustrator


  1. Edit > Preferences > Units > General → Pixels
    Edit > Preferences > Units > Stroke → Pixels
  2. Edit > Preferences > Guides & Grid > Gridline every → 1px
    Edit > Preferences > Guides & Grid > Subdivisions → 1px
  3. Edit > Preferences > General > Keyboard Increment → 1px
  4. View > Snap to Grid
    View > Snap to Point
  5. View > Pixel Preview

Не благодарите.
Всех заинтересовавшихся прошу пройти под кат.

Как создавать pixel perfect изображения в Adobe Illustrator




Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии6

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность