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

Реализация быстрых 2D-теней в Unity с помощью 1D shadow mapping

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

Введение


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

Таким ограничением я отбрасывал множество уже существовавших способов расчёта теней, которые мне удалось найти. Популярной была пара техник. В одной применялась реализуемая на ЦП трассировка лучей, определяющая границы силуэтов блокирующей свет геометрии. В другой все препятствия для света рендерились в текстуру, а затем для неё выполнялся алгоритм типа ray-stepping с несколькими проходами для создания карты теней. Эти техники обычно используются не более чем с парой источников света и точно не позволили бы мне работать с десятками источников света в соответствии с выбранными мной ограничениями.
Читать дальше →
Всего голосов 23: ↑22 и ↓1+21
Комментарии6

Как сделать цветные тени в Android с градиентом и анимацией

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

На презентации новых макбуков обратил внимание на картинку процессора: переливающиеся цветные тени на темном фоне. Давайте нарисуем на Android такие-же

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

Почему мы отказались от стандартных теней Unity для мобильных шутеров и вместо этого написали свои

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

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

Сегодня мы расскажем, как в геймдеве делаются тени — в реальном времени и статичные. В своих проектах War Robots и Dino Squad мы используем сразу несколько техник — им и уделим особое внимание.

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

Эффект тени для картинки с помощью CSS

Время на прочтение1 мин
Количество просмотров11K
Думаю многие из вас сталкивались с задачей создания двойной/нестандартной рамки для изображений на сайте. Частично я описал технику создания таких рамок здесь. Но я не упомянул (а если честно, то и сам тогда не подумал об этом) в той статье один интересный нюанс.
С помощью этой техники, можно создавать эффект тени для картинки, буквально в пару строк. Что нужно сделать?
Читать дальше →
Всего голосов 32: ↑23 и ↓9+14
Комментарии12

MagickWand — тени и скругленные углы

Время на прочтение4 мин
Количество просмотров1.4K
Навеяно топиком хабраюзера apelsyn Фотошопим на PHP
Я взялся за написание движка для сервиса открыток — для знакомых, бесплатно. Такая работа хороша тем, что можно ставить эксперименты и в процессе что-то новое и интересное узнавать — благо никто не может торопить и напоминать о сроках.
В этой работе впервые мне пришлось столкнутся с интерфейсом к ImageMagick под названием MagickWand
Как делать превьюшки я разобрался быстро, несмотря на то, что документация, мягко говоря, очень лаконичная. Так же практически не вызвало вопросов добавление надписей и фонов к картинке.
Но душа хотела прекрасного.
В частности, закругленных уголочков и теней под превьюшками.
Я знал, что таки вещи делать можно, но вся загвоздка в том, что в упомянутом посте все делалось с помощью Imagick, а у меня-то уже стояла MagickWand! Гугл, хабр и тематические блоги ничего не дали, поэтому пришлось изобретать велосипед самостоятельно.
После некоторых проблем, непродолжительного битья головой о стену и экспериментов с режимами наложения изображений в MagickWand родилось
следующее решение
Всего голосов 12: ↑10 и ↓2+8
Комментарии8

Реалистичные тени при помощи CSS3 без использования изображений

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

Хочу поделиться замечательным мастер-классом по созданию реалистичных теней для блоков на чистом CSS, найденном на просторах рунета по адресу http://mainview.ru/css/realistichnye-teni-pri-pomoshhi-css3-bez-ispolzovaniya-izobrazhenij. Естественно, для того, чтобы примеры работали как надо, необходим браузер с поддержкой CSS3.

image

Читать дальше →
Всего голосов 263: ↑253 и ↓10+243
Комментарии58

Реалистичные тени для roguelike

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

Доброго времени, Хабр-сообщество.

Много лет назад, натолкнулся на пост (1). Тогда меня озадачила возможность создать интересные элементы для геймплея в roguelike (2). Допустим противник может находиться за стеной, мы его не видим, пока мы не столкнёмся с ним в зоне прямой видимости. Но более мне по душе ситуация, когда мы, путешествуя по коридорам подземелья, раскрываем особенности расположения объектов постепенно на основе области видимости.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии26

В поисках перспективных теней для roguelike

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


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

Данный пост является сиквелом публикации, своеобразной работой над ошибками и дальнейшее развитие идеи.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии16

Как я делал 2D тени в Unity

Время на прочтение9 мин
Количество просмотров12K
Что первое приходит в голову разработчику инди-игры, когда он сталкивается с необходимостью добавления фичи, представления о реализации которой толком не имеет? Разумеется, он идёт искать следы тех, кто уже прошёл этот путь и удосужился записать свой опыт. Так поступил и я некоторое время назад, приступая к созданию теней в своей игре. Найти нужную информацию — в виде статей, уроков и гайдов — не составило особого труда. Однако, к моему удивлению, я обнаружил, что ни одно описанное решение мне попросту не подходит. Поэтому, реализовав своё собственное, я решил поведать о нём миру.

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

Сам результат перед вами:



А подробности пути к его достижению ждут вас под катом.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии19

Анализ кадра Mortal Kombat 11

Время на прочтение2 мин
Количество просмотров15K
Mortal Kombat 11 — одна из самых впечатляющих внешне игр, вышедших в 2019 год: потрясающие лицевые анимации, тени, освещение и эффекты постобработки. И это ещё не учитывая того, что игра на самом деле увлекательна, имеет сложные бои и захватывающий сюжет.

Я просто обязан был изучить рендерер Mortal Kombat 11, чтобы понять, как же достигается такая удивительная графика, а теперь поделюсь своими открытиями с вами.

Проход вычисления теней


Каждый кадр начинается с прохода теней (shadow pass).

Shadow Depth 4x MSAA 4 Channel Comparison

Каждая карта теней составляется из четырёх стенсил-карт глубин теней с суперсэмплированием (SSAA), которые затем преобразуются в четырёхканальную моментальную карту теней (Moment Shadow Map, MSM) [Peters et al. 2016]. В каждом из каналов хранятся $z$, $z^2$, $z^3$ и $z^4$.
Всего голосов 24: ↑24 и ↓0+24
Комментарии6

Как работает рендеринг 3D-игр: освещение и тени

Время на прочтение20 мин
Количество просмотров22K
Реализация подавляющего большинства визуальных эффектов в современных играх зависит от продуманного использования освещения и теней. Без них игры были бы скучными и безжизненными. В четвёртой части анализа рендеринга 3D-игр мы сосредоточимся на том, что происходит в 3D-мире наряду с обработкой вершин и наложением текстур. Нам снова понадобится много математики, а также уверенного понимания основ оптики.

Часть 1: обработка вершин

Часть 2: растеризация и трассировка лучей

Часть 3: текстурирование и фильтрация текстур

Вспомним пройденное


Ранее мы рассматривали ключевые аспекты перемещения и обработки объектов в сценах, их преобразования из трёхмерного пространства в плоскую сетку пикселей, а также способы наложения текстур на эти объекты. В течение многих лет такие операции составляли основную часть процесса рендеринга, и мы можем увидеть это, вернувшись в 1993 год и запустив Doom компании id Software.


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

Теней не было, потому что они не входили в задачу программистов: PC того времени представлял собой процессор на 66 МГц (то есть на 0,066 ГГц!), жёсткий диск на 40 МБ и 512-килобайтную графическую карту с минимальными 3D-возможностями. Перенесёмся на 23 вперёд: в знаменитой перезагрузке серии мы видим совершенно другую историю.


Для рендеринга этого кадра использовалось множество технологий, он может похвастаться такими этапами, как screen space ambient occlusion, pre-pass depth mapping, фильтры размытия боке, операторы тональной коррекции, и так далее. Расчёт освещения и затенения каждой поверхности выполняется динамически: они постоянно изменяются в зависимости от условий окружающей среды и действий игрока.
Всего голосов 27: ↑27 и ↓0+27
Комментарии4

Направленное освещение и затенение в 2D-пространстве

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

Добрый день, Хабравчане!
Хотелось бы рассказать об одном из способов отрисовки освещения и затенения в 2D-пространстве с учетом геометрии сцены. Мне очень нравится реализация освещения в Gish и Super MeatBoy, хотя в митбое его можно разглядеть только на динамичных уровнях с разрушающимися или перемещающимися платформами, а в Гише оно повсеместно. Освещение в таких играх мне кажется таким «тёплым», ламповым, что непременно хотелось нечто подобное реализовать самому. И вот, что из этого вышло.
Читать дальше →
Всего голосов 95: ↑94 и ↓1+93
Комментарии39

Не стоит бояться теней

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

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

Не боюсь
Всего голосов 30: ↑27 и ↓3+24
Комментарии22

2D тени на WebGL за 4 простых шага

Время на прочтение12 мин
Количество просмотров12K
В этой статье я расскажу о том, как своими руками, имея только блокнот и любой веб-сервер, сделать шейдерные 2D-тени на WebGL. Все шаги лежат на гитхабе как ветки и переключаются git checkout stepN, так что добро пожаловать даже тем, кто не настроен кодить.

КДПВ:


Читать дальше
Всего голосов 25: ↑24 и ↓1+23
Комментарии0

Динамические свет и тени в моей 2d игре

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

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

Тени персонажей в ролике The Blacksmith

Время на прочтение3 мин
Количество просмотров11K
Одним прекрасным утром прошлой осенью мы узнали долгожданную новость: антагонист готов!
Это была всего лишь черновая модель: без волос, скина и соответствующей настройки материалов, но мы все равно очень обрадовались. Кто-то сразу предложил: «Давайте скорей налепим на него материалы! Уже не терпится увидеть этого парня на экране!».

Так мы и сделали. Но что-то пошло не так… «Стойте, а мы точно настроили его для получения динамических теней?» Всё верно. Но результат совсем не оправдал наши ожидания.


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

Системы частиц, освещение и Variance Shadow Maps

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

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

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

Градиентные тени на CSS

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров8K

Мне часто задают вопрос: Возможно ли создать тени из градиентов, а не из сплошных цветов? В СSS не существует конкретного свойства для этого (поверьте мне, я проверял), а в любом посте по этой теме содержится только множество хитростей для того, чтобы получить что-то похожее на градиент. В этой статье я расскажу вам о некоторых из них.


Но для начала… ещё одна статья о градиентных тенях? Серьёзно?

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

Всем выйти из сумрака: как добавить тень на Android

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

Когда заходит речь про тени на Android, возникает сразу несколько вопросов. Первый: зачем они нужны? Второй: почему нельзя использовать системные тени и жить счастливо? Третий: если нельзя использовать системные тени, как реализовать кастомные?

Это Сергей Петров, Android-разработчик в команде Design System inDrive, и вместе мы поговорим о тенях на Android.

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

Тень на плетень, или 25 елок для Адама Дженсена

Время на прочтение10 мин
Количество просмотров10K
Рассказ о том, как я попробовал построить красивые трехмерные тени не выходя за рамки уютного двухмерного гейм-девелопмента, и что из этого получилось.


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