Статьи
Страницы:
1 2 3 4 5 Следующая »
Строковые идентификаторы в движке. string pools.
В программировании игр часто приходится ссылаться на объекты, используя строковые идентификаторы: например, получить текстуру по имени её файла или найти актора по его имени. Однако, хранение и частое сравнение большого количества строк может оказаться дорогим как с вычислительной точки зрения, так и с точки зрения используемой памяти.
Читать | Комментарии [34]
8 ноя 2022
С++ корутины, начальный уровень
Coroutine (сопрограмма, корутина) - функция, выполнение которой можно явно прерываться методами языка программирования. В отличие от прерывания выполнения потока (thread), который реализован в ОС и происходит неявно и в любой момент. (wiki)
Читать | Комментарии [58]
7 ноя 2022
Recursive Tile-based architecture
Данная статья вводит понятие Recursive Tile-Based Architecture (RTBA), расширяющее возможности традиционной tile-based архитектуры. Предложенный подход позволяет работать с аппаратно-ускоренным тайловым растеризатором в терминах когерентного рейтрейсинга, каждый тайл рассматривается, как средство обработки пучка лучей.
Читать | Комментарии [116]
8 янв 2022
Имитация раскачивания дерева под воздействием ветра
Статья демонстрирует простой метод имитации воздействия ветра на дерево (куст), реализованный на вертексном шейдере.
Читать | Комментарии [19]
9 окт 2020
Освещение с использованием фотометрического профиля
Фотометрический профиль (ФП) описывает распределение интенсивности света точечного источника, полученные с помощью соответствующего измерительного оборудования. Используя данные ФП можно добиться эффекта симуляции сложных теней и нестандартного затухания света.
Читать | Комментарии [25]
3 июня 2020
Гидродинамика Шрёдингера на пальцах
В этой статье в качестве эксперимента я постараюсь максимально доступно рассказать, как работает новый метод расчёта гидродинамики, основанный на решении уравнения Шрёдингера.
Читать | Комментарии [99]
9 окт 2019
Предрасчёт рейкаста для эффективного рендеринга травы и меха
Здравствуйте. В этой статье я хотел бы рассказать об алгоритме, который я разработал в результате своих экспериментов с предрасчётом трассировки лучей. Результат работы одной из промежуточных версий алгоритма можно увидеть здесь:
Читать | Комментарии [62]
18 авг 2019
На пути к эффективному алгоритму Global Illumination, часть 1
В этой статье мы рассмотрим небольшой исторический контекст разработки алгоритмов global illumination, а также поразмышляем, какими свойствами должен обладать оптимальный алгоритм расчёта global illumination.
Читать | Комментарии [157]
22 апр 2019
Синхронизации в Vulkan
Одно из важных отличий Vulkan от более старых графических API, это больший контроль над синхронизациями как с CPU, так и внутри GPU. И как всегда многопоточность и синхронизация — это достаточно сложная тема. Стоит помнить, что драйвер Vulkan не обязан оптимизировать вызовы API, поэтому для максимальной производительности синхронизации должны быть расставлены наиболее оптимальным образом.
Читать | Комментарии [36]
26 фев 2019
Пишем простой рейтрейсер используя Vulkan Raytracing
Всем привет! Сегодня я расскажу вам, как получить результат, изображенный на заглавной картинке к этой статье, используя Vulkan Raytracing.
Читать | Комментарии [62]
18 ноя 2018
Введение в Vulkan Raytracing
В какое время мы живем! Казалось, еще недавно мы часами ждали пока CPU просчитает знаменитое изображение за авторством Тернера Уиттеда, а сегодня нам доступны потребительские модели видеокарт с аппаратной поддержкой рейтрейсинга! Любой программист трехмерной графики скажет, что он мечтал об этом дне, когда мы, наконец, можем трассироваться в мировом пространстве в реальном времени.
Читать | Комментарии [183]
4 ноя 2018
Генетические алгоритмы в разработке игр.
Привет детишки, сегодня я хочу рассказать вам сказку про генетические алгоритмы и их применение в игрострое. Простыми словами мы рассмотрим теорию и практику, а в качестве примера напишем небольшую утилиту для балансировки игры.
Читать | Комментарии [63]
20 мар 2018
Детали плавающей точки
Цель статьи - дать читателю представление о работе с числами с плавающей точкой в программировании. Предполагается дать базовый объём информации и предоставить уровень понимания, достаточный для самостоятельного проведения оценок в задачах, возникающих на практике.
Читать | Комментарии [23]
4 мая 2017
Frustum Culling
Одной из важных оптимизаций в компьютерных играх является отсечение геометрии, не видимой на экране (Frustum Culling, далее фрустум кулинг). Раз мы все равно не увидим объект, то и не зачем тратить ресурсы компьютера на его подготовку и отрисовку.
Читать | Комментарии [73]
8 фев 2017
Стоимость OpenGL команд.
В современных проектах для получения красивой картинки отрисовываются тысячи различных объектов: персонажи, строения, ландшафт, природа, эффекты и т.д. Разумеется есть разные способы отобразить на экране геометрию. В этой статье мы рассмотрим как сделать это эффективно, посчитаем и сравним стоимость различных API вызовов для отрисовки геометрии.
Читать | Комментарии [85]
8 фев 2017
Rectilinear Texture Warping
В данной статье я расскажу об адаптивном методе теневых карт под названием Rectilinear Texture Warping for Adaptive Shadow Maps, о его достоинствах и недостатках, а также о реальном опыте использования данного метода в проекте (и что из этого вышло).
Читать | Комментарии [29]
12 окт 2016
Vulkan API «Hello Triangle»
Статья описывает основные принципы работы с Vulkan API и включает в себя материал по установке SDK, обработке ошибок, работе с различными сущностями API и краткий курс по выводу треугольника, в качестве практической части. Работа позиционирует себя как быстрый экскурс в основы Vulkan API, не претендуя на полноту и оставляя детали на самостоятельное рассмотрение.
Читать | Комментарии [69]
15 сен 2016
Маленькая статья про Vulkan
Это небольшая статья для тех, кто хочет разобраться в основных концепциях нового графического API и его отличиях от предыдущего поколения. Я буду говорить о Vulkan vs OpenGL, но многие вещи можно применить и к другим API нового и старого поколений.
Читать | Комментарии [13]
1 сен 2016
Ассемблерные вставки в GCC
Статья является попыткой систематизировать brain-dump известной автору информации по ассемблерным вставкам в GCC.
Читать | Комментарии [32]
30 апр 2016
Простая система событий на С++11
При проектировании своих игр/программ/систем мы стараемся как можно больше следовать принципу SRP (Single responsibility principle) [1] - то есть каждая сущность инкапсулирует в себя одну конкретную обязанность.
Читать | Комментарии [103]
2 дек 2015
Coverage Buffer из CryENGINE в деталях
Некоторое время назад я наткнулся в замечательной презентации Secrets of CryEGNINE 3 Graphics Technology от не менее замечательных Nickolay Kasyan, Nicolas Schulz и Tiago Sousa на описание любопытной технологии, названной авторами.
Читать | Комментарии [24]
21 окт 2015
Вставка одной поверхности в другую (многопоточный алгоритм)
В статье рассматривается метод встраивания одной поверхности в другую. Данная статья имеет некоторые «нечеткие» определения, и в ней не гарантируется работа метода на любой геометрии. Она носит скорее исследовательский и теоретический характер, но возможно и это кому-то поможет.
Читать | Комментарии [28]
9 сен 2015
Генерация шума
В данной статье описываются подходы генерации шума, подробнее рассматривается набор наиболее популярных методов и даётся сопутствутствующая терминология. Статья во многом обзорная, и содержит достаточно много (поверхностно изложенной) теории, целью которой является дать читателю наводки для дальнейшего самостоятельного изучения.
Читать | Комментарии [55]
20 мая 2015
Dynamic vertex pulling в Direct3D11
Данная статья рассказывает про то, как можно рисовать миллионы уникальных объектов в Direct3D11 с минимальным оверхедом на CPU и максимально близкой к D3D12 или «AMD Mantle» скоростью. В статье показан пример использования так называемых Structured Buffers.
Читать | Комментарии [38]
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), эфект движения на большой скорости итд.
Читать | Комментарии [44]
28 сен 2013
Скелетная анимация на пальцах.
Многие новички, которые только начинают постигать «скелетку», очень часто не понимают как она работает (даже при наличии многих статей на данном ресурсе) и что для её работы нужно, собственно им я и хотел бы объяснить на пальцах как работает скелетная анимация.
Читать | Комментарии [59]
26 дек 2012
Физика «на пальцах»: Обнаружение столкновений для выпуклых геометрий
Обнаружение столкновений между телами — один из принципиально важных моментов при моделировании игровой физики твёрдых тел. Причём необходимо не просто указать сам факт пересечения, но и предоставить конкретные точки и нормали контактов, множество которых называется contact manifold. После многих лет написания собственного физического движка я пришёл к алгоритму, который хорошо себя зарекомендовал, как очень общий и достаточно быстрый алгоритм генерирования контактных точек.
Читать | Комментарии [104]
9 окт 2012
Модели многопоточности, или «Прощайте дедлоки»
Статья является выборочным переводом главы 5 из книги «Erlang and OTP in Action», Martin Logan, Eric Merritt, Richard Carlsson, издательство Manning.
Читать | Комментарии [41]
24 авг 2012
Элементы игрового ИИ на основе табличной логики и марковских цепей.
Довольно простое и изящное решение в области создания искусственного интеллекта для игр. Статья предназначена в первую очередь для новичков в игростроении, ещё только размышляющих над реализацией схем работы AI, но может быть полезна и опытным разработчикам.
Читать | Комментарии [23]
6 авг 2012
Виртуальные текстуры
Виртуальная текстура (или мегатекстура ) — технология развитая Джоном Кармаком. Виртуальные текстуры снимают ограничения на арт, позволяют сделать игровой мир более уникальным, раскрасив неповторяющимися текстурами. В этой статье вы узнаете о структуре виртуальной текстуры и о процессе работы с ней.
Читать | Комментарии [103]
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
Пишем отладчик для Lua 5.1
В современных играх достаточно многое отдается на откуп скриптам. Самым распространенным и часто используемым для этого скриптовым языком является Lua . Удобный синтаксис, хорошая скорость (особенно при использовании LuaJIT), кроссплатформенность. Lua используется в проектах любых масштабов от небольших аркад, до монстров вроде World Of Warcraft.
Читать | Комментарии [25]
27 апр 2011
Программирование звука с использованием XAudio2.
Всем доброго времени суток! Это моя первая статья на GameDev.ru, которая появилась в связи с тем, что в недавнем времени решил я сам перейти на библиотеку XAudio2. Документации по ней в Интернете на русском нет.
Читать | Комментарии [23]
23 апр 2011
Страницы:
1 2 3 4 5 Следующая »