Статьи
Пишем простой рейтрейсер используя Vulkan Raytracing
Всем привет! Сегодня я расскажу вам, как получить результат, изображенный на заглавной картинке к этой статье, используя Vulkan Raytracing.
Читать | Комментарии [60]
18 ноя. 2018
Введение в Vulkan Raytracing
В какое время мы живем! Казалось, еще недавно мы часами ждали пока CPU просчитает знаменитое изображение за авторством Тернера Уиттеда, а сегодня нам доступны потребительские модели видеокарт с аппаратной поддержкой рейтрейсинга! Любой программист трехмерной графики скажет, что он мечтал об этом дне, когда мы, наконец, можем трассироваться в мировом пространстве в реальном времени.
Читать | Комментарии [182]
4 ноя. 2018
Генетические алгоритмы в разработке игр.
Привет детишки, сегодня я хочу рассказать вам сказку про генетические алгоритмы и их применение в игрострое. Простыми словами мы рассмотрим теорию и практику, а в качестве примера напишем небольшую утилиту для балансировки игры.
Читать | Комментарии [62]
20 мар. 2018
Детали плавающей точки
Цель статьи - дать читателю представление о работе с числами с плавающей точкой в программировании. Предполагается дать базовый объём информации и предоставить уровень понимания, достаточный для самостоятельного проведения оценок в задачах, возникающих на практике.
Читать | Комментарии [22]
4 мая 2017
Frustum Culling
Одной из важных оптимизаций в компьютерных играх является отсечение геометрии, не видимой на экране (Frustum Culling, далее фрустум кулинг). Раз мы все равно не увидим объект, то и не зачем тратить ресурсы компьютера на его подготовку и отрисовку.
Читать | Комментарии [65]
8 фев. 2017
Стоимость OpenGL команд.
В современных проектах для получения красивой картинки отрисовываются тысячи различных объектов: персонажи, строения, ландшафт, природа, эффекты и т.д. Разумеется есть разные способы отобразить на экране геометрию. В этой статье мы рассмотрим как сделать это эффективно, посчитаем и сравним стоимость различных API вызовов для отрисовки геометрии.
Читать | Комментарии [74]
8 фев. 2017
Rectilinear Texture Warping
В данной статье я расскажу об адаптивном методе теневых карт под названием Rectilinear Texture Warping for Adaptive Shadow Maps, о его достоинствах и недостатках, а также о реальном опыте использования данного метода в проекте (и что из этого вышло).
Читать | Комментарии [29]
12 окт. 2016
Behavior Trees в Unreal Engine 4
Для программирования логики поведения искусственного интеллекта в Unreal Engine, используется Behavior Tree - древовидная структура которая задаёт действия для выполнения и условия для них. В этой статье будут описаны отличия реализации Behavior Tree в Unreal Engine 4 от классических реализаций. Кроме того приведен полный перечень имеющихся узлов для Behavior Tree с описанием.
Читать | Комментарии [13]
30 сен. 2016
Vulkan API «Hello Triangle»
Статья описывает основные принципы работы с Vulkan API и включает в себя материал по установке SDK, обработке ошибок, работе с различными сущностями API и краткий курс по выводу треугольника, в качестве практической части. Работа позиционирует себя как быстрый экскурс в основы Vulkan API, не претендуя на полноту и оставляя детали на самостоятельное рассмотрение.
Читать | Комментарии [69]
15 сен. 2016
Маленькая статья про Vulkan
Это небольшая статья для тех, кто хочет разобраться в основных концепциях нового графического API и его отличиях от предыдущего поколения. Я буду говорить о Vulkan vs OpenGL, но многие вещи можно применить и к другим API нового и старого поколений.
Читать | Комментарии [10]
1 сен. 2016
Unity Character Motor
Когда-то давно, еще во времена Unity 3, мне стало интересно как работает физика персонажа. И я заглянул в класс CharacterMotor. Класс был написан на JavaScript, был огромный, страшный и непонятный. Я решил переписать его на C#, попутно отрефакторив. Недавно я вспомнил про свой старый CharacterMotor, решил еще немного подправить его и поделиться им. Тем более, тема физики персонажа не очень популярная (я вообще не видел никакой информации), хотя довольно интересная.
Читать | Комментарии [61]
29 июня 2016
Ассемблерные вставки в GCC
Статья является попыткой систематизировать brain-dump известной автору информации по ассемблерным вставкам в GCC.
Читать | Комментарии [33]
30 апр. 2016
Простая система событий на С++11
При проектировании своих игр/программ/систем мы стараемся как можно больше следовать принципу SRP (Single responsibility principle) [1] - то есть каждая сущность инкапсулирует в себя одну конкретную обязанность.
Читать | Комментарии [107]
2 дек. 2015
Coverage Buffer из CryENGINE в деталях
Некоторое время назад я наткнулся в замечательной презентации Secrets of CryEGNINE 3 Graphics Technology от не менее замечательных Nickolay Kasyan, Nicolas Schulz и Tiago Sousa на описание любопытной технологии, названной авторами.
Читать | Комментарии [23]
21 окт. 2015
Вставка одной поверхности в другую (многопоточный алгоритм)
В статье рассматривается метод встраивания одной поверхности в другую. Данная статья имеет некоторые «нечеткие» определения, и в ней не гарантируется работа метода на любой геометрии. Она носит скорее исследовательский и теоретический характер, но возможно и это кому-то поможет.
Читать | Комментарии [28]
9 сен. 2015
Генерация шума
В данной статье описываются подходы генерации шума, подробнее рассматривается набор наиболее популярных методов и даётся сопутствутствующая терминология. Статья во многом обзорная, и содержит достаточно много (поверхностно изложенной) теории, целью которой является дать читателю наводки для дальнейшего самостоятельного изучения.
Читать | Комментарии [55]
20 мая 2015
Dynamic vertex pulling в Direct3D11
Данная статья рассказывает про то, как можно рисовать миллионы уникальных объектов в Direct3D11 с минимальным оверхедом на CPU и максимально близкой к D3D12 или «AMD Mantle» скоростью. В статье показан пример использования так называемых Structured Buffers.
Читать | Комментарии [42]
21 янв. 2015
Screen space ambient occlusion с учетом нормалей и расчет одного отражения света.
В этой статье я расскажу, как я с нуля делал SSAO (Screen Space Ambient Occlusion — расчёт фонового освещения в экранном пространстве) с учетом нормалей. Сразу следует отметить, что это наиболее простая и прямолинейная реализация «в лоб», не претендующая на оптимальность или новизну. Статья будет полезна в первую очередь тем, кто имеет желание разобраться, как это работает.
Читать | Комментарии [69]
17 янв. 2015
Машина состояний
Представлю на суд общественности свою реализацию машины состояний, также известную как конечный автомат. Машина состояний привлекательна тем, что обрабатывает логику поведения объекта в заранее настроенном алгоритме, что крайне необходимо для сложных объектов. В статье приведу логику объекта, использующегося в моей игре Tropic Defense.
Читать | Комментарии [39]
14 сен. 2014
Объемы распространения света для непрямого освещения в режиме реального времени.
Данная статья описывает новый метод аппроксимации непрямого освещения динамических сцен для приложений реального времени, таких как видео игры. Мы используем трехмерные сетки и сферические функции для приближения пространственного и углового распределения света в сцене. Предложенный метод не требует предрасчётов и поддерживает большие сцены с помощью иерархии вложенных сеток.
Читать | Комментарии [78]
6 янв. 2014
Процедурная генерация карты (часть 1)
В этой короткой статье я поделюсь нехитрым алгоритмом, для процедурного генерирования геометрии карты, который я собрал как прототип для своей небольшой roguelike-like игры.
Читать | Комментарии [37]
11 ноя. 2013
Кое-что о размытии изображения с помощью шейдеров.
Эта статья познакомит читателя с основными техниками размытия изображения при помощи
GLSL шейдеров. Данные техники широко применяется в играх для создания таких эффектов как засветка (bloom), глубина резко изображаемого пространства (
DOF), эфект движения на большой скорости итд.
Читать | Комментарии [43]
28 сен. 2013
Скелетная анимация на пальцах.
Многие новички, которые только начинают постигать «скелетку», очень часто не понимают как она работает (даже при наличии многих статей на данном ресурсе) и что для её работы нужно, собственно им я и хотел бы объяснить на пальцах как работает скелетная анимация.
Читать | Комментарии [59]
26 дек. 2012
Физика «на пальцах»: Обнаружение столкновений для выпуклых геометрий
Обнаружение столкновений между телами — один из принципиально важных моментов при моделировании игровой физики твёрдых тел. Причём необходимо не просто указать сам факт пересечения, но и предоставить конкретные точки и нормали контактов, множество которых называется
contact manifold. После многих лет написания собственного
физического движка я пришёл к алгоритму, который хорошо себя зарекомендовал, как очень общий и достаточно быстрый алгоритм генерирования контактных точек.
Читать | Комментарии [79]
9 окт. 2012
Модели многопоточности, или «Прощайте дедлоки»
Статья является выборочным переводом главы 5 из книги «Erlang and OTP in Action», Martin Logan, Eric Merritt, Richard Carlsson, издательство Manning.
Читать | Комментарии [41]
24 авг. 2012
Элементы игрового ИИ на основе табличной логики и марковских цепей.
Довольно простое и изящное решение в области создания искусственного интеллекта для игр. Статья предназначена в первую очередь для новичков в игростроении, ещё только размышляющих над реализацией схем работы AI, но может быть полезна и опытным разработчикам.
Читать | Комментарии [23]
6 авг. 2012
Виртуальные текстуры
Виртуальная текстура (или мегатекстура ) — технология развитая Джоном Кармаком. Виртуальные текстуры снимают ограничения на арт, позволяют сделать игровой мир более уникальным, раскрасив неповторяющимися текстурами. В этой статье вы узнаете о структуре виртуальной текстуры и о процессе работы с ней.
Читать | Комментарии [100]
4 июля 2012
GPSM: Geometry Pitch Shadow Map
GPSM (Geometry Pitch Shadow Map) — еще один метод рендеринга теневых карт, дающий возможность реализовать тени, покрывающие огромные территории, используя всего одну текстуру, в которую происходит рендеринг (render target). Метод GPSM даёт для теней вдали от камеры наблюдения качество хуже, а вблизи — лучше. Этот метод я изобрел для своего движка и уже использую в двух проектах, решил поделится с вами, надеюсь, кому-то пригодится.
Читать | Комментарии [157]
30 апр. 2012
AngelScript
В данной статье мне хотелось бы показать почему мне понравился скриптовый язык
AngelScript. Когда я выбирал язык для своего движка, я просмотрел множество кандидатур, и для подробного рассмотрения выбрал два скриптовых языка, ими были
LUA и Python.
Читать | Комментарии [169]
2 ноя. 2011
OpenGL на Qt 4. Это просто! (часть 2)
Во 2-ой части продолжается рассмотрение работы с OpenGL на Qt 4. Читатель познакомится с настройкой контекста OpenGL, созданием анимации и простым наложением текстур. Заодно в рамках «чистого» OpenGL будет рассмотрена интерактивная графика с помощью режима выбора (выбираем объекты на экране для дальнейшей манипуляции с ними), в рамках «чистого» Qt будет продемонстрировано создание главного окна, меню (menu bar), задействованы механизм сигналов и слотов и технология дерева объектов (иерархии объектов).
Читать | Комментарии [17]
10 авг. 2011
Редактор функций на основе кривых Безье
Статья о кривых Безье и о проблемах, с которыми можно столкнуться при написании редактора скалярных функций на базе кривых Безье.
Читать | Комментарии [12]
9 авг. 2011
Простая машинка в Unity
Урок по созданию простой машинки в среде
Unity при помощи компонента
WheelCollider. Описаны базовые настройки этого компонента. Для понимания урока необходимы базовые знания среды Unity.
Читать | Комментарии [15]
19 июля 2011
Пишем отладчик для Lua 5.1
В современных играх достаточно многое отдается на откуп скриптам. Самым распространенным и часто используемым для этого скриптовым языком является
Lua . Удобный синтаксис, хорошая скорость (особенно при использовании LuaJIT), кроссплатформенность. Lua используется в проектах любых масштабов от небольших аркад, до монстров вроде World Of Warcraft.
Читать | Комментарии [25]
27 апр. 2011
Программирование звука с использованием XAudio2.
Всем доброго времени суток! Это моя первая статья на GameDev.ru, которая появилась в связи с тем, что в недавнем времени решил я сам перейти на библиотеку XAudio2. Документации по ней в Интернете на русском нет.
Читать | Комментарии [18]
23 апр. 2011
Software Occlusion Culling
Оклюжен кулинга сейчас, наверное, нет только у ленивых. Некоторые используют HW OC, у которых есть очевидные недостатки в виде латентности и дополнительной нагрузки на GPU. Другие используют софтовую растеризацию. К примеру, мы можем растеризовать глубину близлежащих оклюдеров (специальной или прямо рендер геометрии), затем проверять
баунд боксы отрисовываемых объектов относительно этой глубины. Радостей от такого подхода может быть несколько.
Читать | Комментарии [134]
3 апр. 2011
Компонентная система игровых сущностей.
Не раз поднималась тема об иерархии игровых объектов, их взаимодействии и управления ими. Я пробовал всякие варианты построения игрового объекта, и в итоге остановился на компонентной системе. Было это давненько, так что система успела себя оправдать по удобству и масштабируемости. О получившейся схеме и пойдет речь. Но для начала рассмотрим возможные варианты.
Читать | Комментарии [426]
3 апр. 2011
ЧАВО по матрицам и кватернионам
Часто задаваемые вопросы по матрицам и кватернионам.
Читать | Комментарии [40]
9 мар. 2011
OpenGL на Qt 4. Это просто! (часть 1)
Это ознакомительная статья, посвящённая программированию 3D-графики
OpenGL (Open Graphics Library — открытая графическая библиотека) с помощью кроссплатформенной библиотеки Qt 4 (Q + toolkit: «Q» — префикс классов (с красивым начертанием, по мнению разработчиков); toolkit — инструментарий). Я надеюсь, она окажется полезной для тех, кто впервые решил познакомиться с OpenGL и выбирает практичную и удобную библиотеку GUI (Graphical User Interface — графический интерфейс пользователя).
Читать | Комментарии [98]
19 янв. 2011
Моделирование стеклянных поверхностей
С помощью современных графических адаптеров можно получать все более сложные динамические сцены. Это означает, что высококачественный (фотореалистичный) рендеринг переноситься из offline в реальное время. В частности, одной из насущных задач компьютерной графики является расчет и рендеринг глобального освещения и сложных материалов. В этой статье я хотел бы рассказать о моделировании стеклянных предметов.
Читать | Комментарии [63]
31 июля 2010
Пишем симулятор гонок
В данной статье представлены методы для создания математической модели автомобиля, позволяющие достаточно точно симулировать физику авто на уровне лучших современных симуляторов гонок.
Читать | Комментарии [204]
17 июля 2010