Pull to refresh
35
0.2
Гиляровский Константин @Chaos_Optima

RnD Computer Graphics

Send message

Souls, куда уже плавнее?

Level of difficulty Medium
Reading time 6 min
Views 7.7K

На этот раз речь пойдет о миленьком мобильном батлере: SOULS

Очень достойный представитель своего класса. И один из лучших в плане плавности и представления интерфейсных решений. Разработчики не ограничились 2D интерфейсом и полностью использовали 3D пространство, что сделало игру эффектной. Хотя под капотом используются простые решения, разработчики часто упускают эти детали, лишая игру интерактивности и плавности в пользу скорости разработки (хотя чаще это вызвано ленью и нежеланием эти детали прорабатывать). Также в игре присутствует качественный артдирекшен и множество моментов, которые можно внести в свою игру, если есть цель повысить ее качество.

Изучить
Total votes 6: ↑5 and ↓1 +4
Comments 0

Генерация лабиринтов: алгоритм Эллера

Reading time 6 min
Views 24K

Привет, Хабр!

Сегодня я хотел бы рассказать о генерации идеального лабиринта - алгоритмом Эллера. Статья подойдёт всем любителям алгоритмов.

Читать далее
Total votes 51: ↑51 and ↓0 +51
Comments 10

Как я создаю игры на своём 3D движке в одиночку

Reading time 7 min
Views 18K

Много лет назад я занимался созданием маленьких Flash игр и публиковал их на сайте Newgrounds. Сейчас я делаю полноценные игры для ПК.

На сегодняшний день у меня 4 законченные коммерческие игры в Steam, и самая последняя из них — выпущенная в 2021 году Pilie Pals, о процессе создания которой я расскажу в этой статье.

Я работал над игрой всего примерно 6 месяцев, по вечерам после работы и на выходных. Я занимаюсь дизайном, программированием, графикой, звуками и музыкой в одиночку, и использую свой собственный движок 3D игр.

Читать далее
Total votes 50: ↑49 and ↓1 +48
Comments 13

Рендеринг прекрасных кадров God of War на PC

Reading time 23 min
Views 7.5K

После выпуска God of War на PC я был просто обязан попробовать её. Я играю с 90-х годов, поэтому совершенно не против снова и снова проходить игру с линейным сюжетом. В этом есть большая ценность. На данный момент моей самой переигрываемой линейной игрой является Max Payne (первая часть), я целиком проходил её на разных платформах более 15 раз. Но всё равно чаще всего я играю на PC. Когда я впервые играл в GoW на PS4, то надеялся приобрести её для PC, мне нравится коллекционировать игры и ачивки Steam, поэтому благодаря выпуску игры для компьютера я решил снова к ней вернуться. Но на этот раз я решил прихватить с собой рабочие инструменты, ведь мне было очень любопытно, как устроен движок/рендерер этой игры.

В этом нет ничего нового для меня, я переигрываю в любимые игры и изучаю их технологии; насколько я помню, этот синдром появился с Max Payne 3, и с тех пор я много раз я пробовал делать это с другими играми, но, к сожалению, так никогда и не завершил ни одной статьи. Я выполняю захваты кадров, рассматриваю их, делаю какие-то заметки, начинаю сохранять скриншоты, а потом бах! — и начинаю заниматься чем-то другим. Последними двумя жертвами моей лени стали The Medium и Halo Infinite, возможно, я когда-нибудь их закончу, выпущу черновик поста и освобожу кучу места, которую занимают их файлы! Однако с GoW получилась совершенно иная история: как только я получил письмо со Steam о выпуске игры, я решил переиграть её, по крайней мере, ради ачивок, а также на этот раз завершить анализ рендеринга.
Читать дальше →
Total votes 27: ↑27 and ↓0 +27
Comments 0

C++20. Coroutines

Reading time 33 min
Views 57K

В этой статье мы подробно разберем понятие сопрограмм (coroutines), их классификацию, детально рассмотрим реализацию, допущения и компромиссы, предлагаемые новым стандартом C++20.


image

Читать дальше →
Total votes 48: ↑45 and ↓3 +42
Comments 27

3D Graphics Rendering Cookbook

Reading time 2 min
Views 7.1K

В августе этого года, после полутора лет напряженной работы, наконец-то вышла наша третья книга (про первую и вторую уже были посты на Хабре) ориентированная на разработку игр: 3D Graphics Rendering Cookbook: A comprehensive guide to exploring rendering algorithms in modern OpenGL and Vulkan.


Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 17

Недельный геймдев: #33 — 29 августа, 2021

Reading time 4 min
Views 2.5K

На этой неделе: новая рубрика «Посиделки с инди», Gamasutra переименовалась в Game Developer, Google Play изменит рейтинг приложений, Photo Mode для Unity, ZBrush 2021.7.

Из интересностей: доклад от Activision про их архитектуру пайплайна рендеринга геометрии, плавный стриминг сцен в Unity3D, постмортем Loop Hero, подробное видео про Path Tracing.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 5

Как работает трассировка лучей в Quake II

Reading time 10 min
Views 12K

Когда-то Кристоф Шид разработал проект Q2VKPT — мод для Quake II с поддержкой рейтрейсинга и в то же время унифицированное решение для симуляции и фильтрации всех типов переноса света для лучшего изучения того, что уже возможно, а что еще предстоит сделать в разрезе трассировки лучей в игровой графике.

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

Поэтому Q2VKPT имеет множество вариаций, в которых мы вкратце и разберемся.

Читать далее
Total votes 24: ↑23 and ↓1 +22
Comments 2

Как создать панораму 360° на квадрокоптер DJI Mini 2

Reading time 6 min
Views 15K

На современных картах все больше появляется 360 аэроснимков, которые принято называть "Сферические панорамы". Почти каждый владелец БПЛА с камерой может создавать свою собственную сферу. Разбираем подробный способ создания 360 панорамы с помощью бюджетного дрона DJI Mini 2.

Читать далее
Total votes 12: ↑12 and ↓0 +12
Comments 12

Почему графику в видеоиграх по-прежнему так сложно создавать?

Reading time 28 min
Views 33K

Введение


В этом посте будут рассмотрены трудности и аспекты производства, которые нужно учитывать при создании новых методик и алгоритмов рендеринга/графики, особенно в контексте прикладных исследований рендеринга реального времени. Я буду рассказывать о своём личном опыте работы над Witcher 2, Assassin’s Creed 4: Black Flag, Far Cry 4 и God of War.

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

Я слышал вопросы типа «почему эта великолепная исследовательская методика X не используется в продакшене?» и от геймеров, и от коллег из научных кругов. На то всегда бывают очень веские причины!

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

Я вспоминаю об этой теме ещё и каждый раз, когда слышу дискуссии о том, что «фотограмметрия, трассировка лучей, нейронный рендеринг, [вставить любую другую новую тему] станет универсальным решением для рендеринга и заменит всё остальное!». Спойлер: этого не случится (по крайней мере, в ближайшее время).
Читать дальше →
Total votes 60: ↑60 and ↓0 +60
Comments 40

C++ zero-cost abstractions на примере хеш-таблиц в ClickHouse. Доклад Яндекса

Reading time 12 min
Views 12K
Хеш-таблицы — это королевы структур данных. Нигде не сломано так много копий, как на оптимизации хеш-таблиц. В докладе я рассказал ещё об одной хеш-таблице, которая используется в ClickHouse. Вы увидите, что zero-cost abstractions в современном С++ оправдывают себя и как с помощью небольших трюков получить разнообразные структуры данных из общей кодовой базы. На основе общих строительных блоков можно построить быстроочищаемую хеш-таблицу, несколько видов LRU-кешей, lookup-таблицы без хешей, хеш-таблицы для строк и т. п. Я показал, как получить максимальную производительность на конкретных сценариях и не ошибиться при её тестировании. В моём докладе — самая мякотка низкоуровневых оптимизаций. В общем, то, что мы любим.

— Для начала мы обсудим, зачем нужны хеш-таблицы, где их можно использовать в базах данных и как сделать их оптимальными. Затем посмотрим бенчмарки различных хеш-таблиц в интернете и разбёремся, как делать их правильно. В конце посмотрим на C++-обертку над идеальной хеш-таблицей в ClickHouse.
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Comments 10

Новая методика кэширования информации затенения в мировом пространстве

Reading time 14 min
Views 3.5K
Представленное в этой статье исследование было проведено исследователем графики и лектором Мэттью Делером в DAE Research (HOWEST University of Applied Sciences). Результаты были использованы для получения степени магистра в Breda University of Applied Sciences под научным руководством кандидата технических наук Жако Биккера. Эта статья является сокращённой версией исследования и может служить введением в тему. Она содержит примеры кода, вкратце объясняющие алгоритм, что, как мы надеемся, поможет разработчикам и исследователям в воссоздании прототипа в собственном фреймворке/движке. Публикацию/дипломную работу можно найти на ResearchGate, а полный пример кода — по этой ссылке.

Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Comments 1

Оптимизация кода: память

Reading time 12 min
Views 90K
Большинство программистов представляют вычислительную систему как процессор, который выполняет инструкции, и память, которая хранит инструкции и данные для процессора. В этой простой модели память представляется линейным массивом байтов и процессор может обратиться к любому месту в памяти за константное время. Хотя это эффективная модель для большинства ситуаций, она не отражает того, как в действительности работают современные системы.

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

image

Иерархия памяти работает, потому что хорошо написанные программы имеют тенденцию обращаться к хранилищу на каком-то конкретном уровне более часто, чем к хранилищу на более низком уровне. Так что хранилище на более низком уровне может быть медленнее, больше и дешевле. В итоге мы получаем большой объём памяти, который имеет стоимость хранилища в самом низу иерархии, но доставляет данные программе со скоростью быстрого хранилища в самом верху иерархии.
Читать дальше →
Total votes 80: ↑78 and ↓2 +76
Comments 99

Как можно оптимизировать dot-product и не только. Доклад Яндекса

Reading time 18 min
Views 3.6K
Разработчик инфраструктуры качества поиска Яндекса Ильнур Хузиев ilnurKh взял простую задачу — скалярное произведение двух векторов — и попробовал выжать все соки производительности кода. Из доклада вы узнаете, как использовать возможности процессора, настройки компилятора (и даже попробовать превзойти его), какой была бы правильная постановка задачи, как выбирать приоритеты и архитектуру. Да, вопрос выбора абстракций может встать даже на примере настолько простой задачи.

— Сегодня мы рассмотрим достаточно простую функцию — скалярное произведение двух векторов, и попробуем провести различные оптимизации. Надеюсь, что приёмы, которые мы рассмотрим, будут применены не только в этой задаче, но и в других.
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 2

Эволюция рабочего места: от ноутбука на кухне до работы стоя

Reading time 8 min
Views 58K

Компьютерный стол у меня появился на два года раньше компьютера, в 2004 году. Это был обычный стол, у которого даже были полки для монитора и клавиатуры. За ним я научился всему, а спустя 17 лет он всё так же стоит у моих родителей.

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

Поделюсь своей историей о том, какой путь прошёл и что нового узнал.

Читать далее
Total votes 58: ↑55 and ↓3 +52
Comments 217

Система динамического разрушения стен в Radio Viscera

Reading time 16 min
Views 5K

В этой статье я расскажу о системе динамических разрушений, созданной для видеоигры Radio Viscera.

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


Рисунок 1. Базовые концепции, лежащие в основе системы
Total votes 23: ↑23 and ↓0 +23
Comments 1

15 лучших и крупнейших библиотек иконок

Reading time 3 min
Views 34K


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

Сразу уточняем: это не 15 самых лучших библиотек, а 15 из лучших. Разумеется, есть и другие, не менее замечательные, о которых я не упомянул или не знаю.
И, нет, это не рейтинг — список маркированный, а не нумерованный.
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 12

Трассировка теней с технологиями AMD: как реализованы тени в The Riftbreaker

Reading time 10 min
Views 7.4K
The Riftbreaker — изометрическая стратегия, сочетающая в себе элементы выживания, исследования и hack’n’slash. Разработанная на собственном движке Exor Studios — Schmetterling Engine 2.0, The Riftbreaker позволяет использовать новейшие разработки в игровой индустрии, одной из которых является трассировка лучей в реальном времени. В этой статье речь пойдет о том, с какими проблемами столкнулись в студии при реализации трассировки лучей в игре и какие нашли для них решения.

image

Динамически меняющееся время суток, разнообразные погодные эффекты и множество исследуемых биомов делают трассировку лучей в реальном времени отличным выбором для The Riftbreaker
Читать дальше →
Total votes 44: ↑44 and ↓0 +44
Comments 10

Процедурная генерация деревьев методом транспорта питательных веществ

Reading time 11 min
Views 11K

Примечание: код для этой статьи выложен на мой Github [здесь].

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

Когда любая ветвь дерева разделяется, сумма площадей поперечного сечения сохраняется.

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

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

При помощи этой методики можно генерировать высококачественные меши деревьев на разных этапах роста в реальном времени и с незначительной тратой вычислительных ресурсов!
Total votes 39: ↑39 and ↓0 +39
Comments 7

DirectX raytracing — всплываем

Reading time 12 min
Views 21K


В 2018 году компания Microsoft анонсировала raytracing API (DXR) как часть DirectX 12. Подход рейтрейсинга заставляет полностью переосмыслить способ ренедринга трехмерных сцен, смещающий классический подход растеризации на второй план. АПИ модернизируются, разрабатываются более производительные GPU, разработчики пакетов визуализации пробуют новые возможности. Однако даже на наиболее производительных видеокартах мощности хватает на генерирование всего нескольких лучей на пиксель для обеспечения стабильной частоты смены кадров. К тому же, производительность во многом зависит от сложности материалов и сцены. Но уже сегодня продвинутые алгоритмы шумоподавления и аккумуляции результата освещенности позволяют достичь высокой степени реализма. Все это мотивирует к экспериментам в данной области.

Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 10

Information

Rating
2,199-th
Location
Воронеж, Воронежская обл., Россия
Registered
Activity