Примеры Xtreme3D 2.x и 3.x

Примеры Xtreme3D 3.x для Game Maker 8.
Комплексное демо
Демка bump-shadows.gmk из SDK демонстрирует "стандартную" графику нулевых - bump mapping с бликами по Фонгу. Но сейчас от этой модели постепенно отказываются в пользу более современной и физически точной. Совокупность техник рендеринга, приближенно моделирующих реальные законы оптики, называют PBR - physically based rendering. PBR позволяет рендерить очень реалистичные материалы - матовые, блестящие, металлические и т.д., а также любые их комбинации на одном объекте за один проход.
PBR не является чем-то принципиально новым, он включает уже известные техники (normal mapping, environment mapping, блики по Куку-Торрансу, эффект Френеля и др.), объединенные стандартным набором входных параметров. Эти параметры задаются попиксельно, при помощи текстур:
- Карта альбедо (albedo map) - обычная диффузная текстура, задающая цвет рассеянного освещения поверхности
- Карта нормалей (normal map) - также знакомая всем текстура, задающая нормаль в каждой точке поверхности в пространстве касательных
- Карта шероховатости (roughness map) - текстура, задающая шероховатость в каждой точке поверхности. Примеры шероховатых материалов: необработанное дерево, камень, человеческая кожа, бархат. Противоположность - гладкие материалы, у которых шероховатость близка к нулю: зеркало, металлы, фарфор, глянцевый пластик.
- Карта металличности (metallic map) - текстура, задающая степень зеркального отражения в каждой точке поверхности - иными словами, насколько материал близок к идеальному металлу (зеркалу). Металличность высока у всех металлов. Неметаллы называются диэлектриками, и у них степень металичности близка к нулю: это, например, те же дерево, камень, кирпич, ткань и т.д.
PBR также в обязательном порядке использует освещение окружения, сохраненное, например, в кубической карте (cubemap). Шероховатость на материалах достигается путем использования нескольких вариантов кубической карты с разной степенью размытия или разным разрешением. PBR учитывает как диффузное освещение среды, которое в пайплайне предыдущего поколения называлось Ambient, так и зеркальное, которое, опять-таки, использовалось ранее для рендеринга металлов и зеркал. Разница в том, что раньше зеркально отражающие материалы были чем-то отдельным, и не было универсального способа объединить все виды материалов в единую систему. Теперь же такой системой является PBR.
Преимущество PBR заключается в том, что это всего один-единственный шейдер, и его достаточно просто встроить в любой графический движок. Xtreme3D тоже не является исключением, и демка по ссылке ниже показывает, как это можно сделать. Пример также включает динамические мягкие тени, SSAO и FXAA. В результате получается очень приятная картинка, которой трудно или вовсе невозможно добиться "традиционным" BumpShader'ом. Даешь next-gen графику в Xtreme3D! Из недостатков PBR можно отметить высокую вычислительную нагрузку и системные требования. Пиксельный шейдер очень длинный, с неизбежными циклами и ветвлениями, и не каждая бюджетная видеокарта его потянет на приемлемом FPS. Для работы шейдера принципиальна поддержка расширения GL_ARB_shader_texture_lod. В принципе, любое железо, выпущенное после 2013 года, должно запускать демку без проблем. Если она тормозит, попробуйте убрать SSAO и FXAA (они объединены в единый шейдер composite).
Ищите ниже обновленную версию этого примера.
Используется Xtreme3D 3.4.
Скачать (20.2 Мб)
Cascaded Shadow Maps
Cascaded Shadow Maps (CSM) - это разновидность Shadow Mapping, техника рендеринга теней, которая решает проблему баланса качества и охвата проекции теневых карт (то есть, когда теневая карта не может охватить всю сцену, сохраняя приемлемую детализацию). При использовании CSM рендерятся три теневые карты вместо одной, с разными размерами проекции, и затем выборка из них интерполируется в зависимости от координат текущего пикселя. В результате охват сцены тенями возрастает в разы: получаются качественные тени вблизи от камеры и пикселизированные - вдалеке. PCF-фильтрация позволяет сгладить пикселизацию, и тени становятся еще качественнее.
CSM - лучший метод рендеринга теней для игр с открытым пространством.
Пример использует не релизную версию Xtreme3D, а нестабильную сборку из репозитория, так что пока не рекомендуем использовать его как основу для проектов - дождитесь выхода Xtreme3D 3.5.
Скачать (2.5 Мб)
Комплексное демо 2
Данный пример демонстрирует множество техник рендеринга и эффектов постобработки: тени на основе CSM, PBR, однопроходный SSAO, FXAA, motion blur, lens distortion, film grain, bloom. Фактически, это серьезно улучшенная комбинация двух предыдущих примеров. Картинка, которую он выдает - максимум, что на сегодняшний день можно выжать из Xtreme3D.
Используется нестабильная сборка Xtreme3D из репозитория.

Скачать (24.5 Мб)
Круги на воде
В Xtreme3D есть встроенный объект воды (Water), имитирующий волны путем смещения геометрии плоскости, однако он применим далеко не в любых ситуациях - например, им сложно сделать большие водоемы типа моря. Благодаря поддержке шейдеров, в Xtreme3D 3.x можно реализовать альтернативные методы рендеринга воды. Например, можно сымитировать волны и рябь при помощи сдвига двух карт нормалей - это показано в примере sea-water в SDK. Но такой способ позволяет воссоздать лишь равномерную рябь, но не круги от дождевых капель, которые получаются во встроенной воде. Поэтому мы подготовили еще один шейдер воды, основанный на методе Себастьяна Лагарда. Он генерирует анимированные круги от капель на основе специальной текстуры, путем совмещения нескольких ее слоев с разным масштабом и сдвигом по времени. В отличие от встроенной воды, вручную создавать отдельные капли тут нельзя, но есть возможность регулировать интенсивность дождя. Результат получается очень качественный и быстрый - самое то, если нужно покрыть лужами обширную территорию. Используется Xtreme3D 3.4.
Скачать (3.7 Мб)
Вода с преломлением
Наконец-то на Xtreme3D стал возможен рендеринг воды с преломлениями - причем, лучше, чем в GMOgre и Ultimate3D!
Отражения и преломления реализованы не кубической картой, как это делалось раньше со времен X3D 2.x, а двумя кадровыми буферами. Один буфер (для преломлений) рендерится из положения камеры, а другой (для отражений) - из точки, противоположной камере относительно поверхности воды. Получается перевернутое отражение, которое затем просто считывается "вверх ногами". Чтобы отсечь лишнюю геометрию вдоль поверхности воды используется новый объект ClipPlane, появившийся в X3D 3.5.
Затем рендерится плоскость воды с шейдером, который читает эти буферы, сдвигая текстурные координаты для достижения эффекта волн, и проецирует их на плоскость, смешивая по коэффициенту Френеля. Анимированные волны реализованы тем же способом, что и в примере sea-water в SDK - суммированием двух скроллящихся карт нормалей. При желании можно вместо этого сделать полноценную покадровую анимацию карты нормалей.
Дополнительно в шейдере реализованы два симпатичных эффекта - неполная прозрачность воды (то есть, постепенное "растворение" объектов в собственный цвет толщи воды по мере погружения в глубину), а также хроматическая аберрация для преломлений - разложение света на составляющие, что слегка придает искаженным объектам под водой радужные оттенки.
В архиве - две демки, использующие один и тот же шейдер воды на разных сценах (дворик с бассейном и ландшафт).
Используется Xtreme3D 3.5.
Скачать (9.0 Мб)
Ландшафт с динамическим освещением и сплаттингом + вода
Стандартной техникой текстурирования ландшафта в Xtreme3D 2.0 было наложение основной цветовой текстуры + повторяющейся текстуры детализации (detail map). Но такой способ не позволяет сделать разную детализацию в разных частях ландшафта - например, где-то должен быть песок, а где-то трава. В Xtreme3D 3.x эта проблема решается при помощи GLSL-шейдера, реализующего так называемый сплаттинг - мультитекстурирование по маске: то есть, используется интерполяция цвета по черно-белому изображению с плавными переходами. Сами текстуры могут быть абсолютно любые, и их можно тайлить путем умножения текстурных координат.
Данный пример для простоты использует только две текстуры и карту высот в качестве маски - но шейдер можно легко расширить, добавив новые текстуры. Поскольку для маски используется только один канал изображения, можно передать через одну RGBA-текстуру 4 разные маски - это позволяет сделать очень красивый ландшафт без перерасхода текстурных блоков.
Также данный пример демонстрирует динамическое освещение ландшафта, ставшее возможным в новых версиях Xtreme3D. Поскольку объект Terrain не генерирует нормали, в старом Xtreme3D приходилось довольствоваться лишь статической картой освещения. Данный пример показывает, как сгенерировать из карты высот карту нормалей и использовать ее для расчета освещенности от направленного источника света (солнца).
Дополнительно в этом примере рендерится анимированная вода с отражениями, взятая из примера sea-water в Xtreme3D SDK, а также небесный купол с солнцем и звездами (объект Skydome) - можно использовать этот пример как основу для игры с открытым миром.
Используется Xtreme3D 3.4.
Скачать (5.8 Мб)
Огонь
Шейдер анимированного огня по методу Clockwork Chilli. Аналогичный шейдер есть для Ultimate3D в демке "Fire and Water", но этот значительно лучше.
Для создания огня используется биллборд и всего одна статичная RGBA-текстура (в канале B хранится маска пламени, а в остальных - три разных вида шума, для цвета и прозрачности). В архиве два варианта шейдера: с эффектом heat haze и без. Это эффект "искажения пространства", возникающий из-за нагрева воздуха.
Используется Xtreme3D 3.4.
Скачать (1.9 Мб)
Постобработка
Старые версии Xtreme3D располагали довольно ограниченными возможностями постобработки, чего не скажешь о Xtreme3D 3.x. Данный набор примеров включает целых девять эффектов постобработки:
1. Свечение (bloom или glow). Это эффект светового ореола вокруг ярких светящихся объектов.
2. Хроматическая аберрация с оптическим искажением (chromatic aberration / lens distortion). Это артефакт, возникающий в системе линз камеры - он довольно часто используется в современных играх для придания картинке кинематографичности.
3. Размытие при движении при быстром повороте камеры (camera motion blur) - тоже кинематографический эффект, который повышает эффект присутствия. Если быстро повернуться, картинка смажется, причем эффект тем сильнее, чем ниже частота кадров - как и в реальной камере.
4. Круговое размытие (radial blur). Этот эффект чем-то похож на встроенный Blur в Xtreme3D - можно использовать его для передачи ощущения быстрого движения.
5. SSAO (screen space ambient occlusion). Это упрощенный вариант ambient occlusion, эффекта затенения на объектах. SSAO работает полностью в экранном пространстве, на основе анализа буфера глубины. Результат получается достаточно упрощенный по сравнению с "честным" AO, но для графики реального времени вполне сносный.
6. Глубина резкости (depth of field, DOF). Это еще один оптический артефакт, который часто используется в фотографии: объекты заднего плана выглядят размытыми, а объекты переднего - четкими (либо наоборот, в зависимости от фокуса). Эффект довольно "тяжелый" для использования в реальном времени, но очень красивый. В данном примере используется автофокус - резкость "наводится" на объект, который находится в центре экрана.
7. FXAA. Популярный метод антиалиасинга (сглаживания) - часто используется вместо стандартного MSAA, встроенного в видеодрайвер. FXAA позволяет получить очень качественное сглаживание при минимальных затратах производительности.
8. "Лучи бога" или крепускулярные лучи (God rays). Это эффект рассеивающегося в атмосфере света от яркого источника, лучи которого красиво пробиваются сквозь объекты-препятствия.
9. Искажение (distortion). Эффект, похожий на рельефное стекло.
Все эффекты реализованы при помощи шейдеров GLSL и рендеринга в MemoryViewer или FBO. Используется Xtreme3D 3.4.
Скачать (4.5 Мб)
3D Mouse
Конвертация экранных координат в трехмерные при помощи новой функции ViewerScreenToVector. Это адаптация аналогичного примера для Xtreme3D 2.0, в котором показано, как использовать курсор мыши для управления движением объекта в плоскости XZ. Пример можно использовать для реализации различных пользовательских интерфейсов. Используется Xtreme3D 3.4.
Скачать (1 Мб)
DCE
Пример использования Dynamic Collision Engine (DCE) - встроенного движка проверки столкновений Xtreme3D. Показано, как создать динамический объект DCE для персонажа и статический - для модели уровня. Используется Xtreme3D 3.5.
Скачать (1,4 Мб)
Ragdoll
В Xtreme3D 3.1 появилась встроенная поддержка "тряпичных кукол" (Ragdoll) для физического движка ODE. Это эффект "безжизненного тела", когда актер (Actor) анимируется не анимацией его скелета, а физической моделью - иными словами, при помощи составной структуры из твердых тел. В данном примере показано, как создать Ragdoll для SMD-модели Тринити. Используется Xtreme3D 3.4.
Скачать (1 Мб)
GMDMech
Пример физики с использованием альтернативного физического движка - враппера dmech. Основное его преимущество в наличии встроенной кинематики - то есть, можно создать подконтрольный игроку персонаж, который будет двигаться и прыгать, взаимодействуя при этом с динамическими телами. Персонаж даже может запрыгивать на динамические тела и ходить по ним. Со встроенным ODE такое сделать очень трудно, если вообще возможно, поскольку там всего два типа тел - статические и динамические. Также GMDMech поддерживает проверку столкновений любых тел с любыми другими, в том числе статическим мешем уровня, в то время как во встроенном ODE проверка столкновений очень ограниченная.
При помощи новых функций Xtreme3D 3.3 возможна передача в GMDMech геометрических данных из Xtreme3D - то есть, для создания статического меша можно использовать уже загруженный Freeform.
Пример демонстрирует кинематический контроллер персонажа, статический уровень и несколько динамических тел разной формы (бокс, цилиндр, конус).
Используется Xtreme3D 3.3.
Скачать (1.7 Мб)

Примеры ниже используют Xtreme3D 2.0.2.0 и Game Maker 6.x. Сама библиотека в архивы не включена, поэтому вам необходимо скачать SDK (смотрите раздел "Xtreme3D 2.0"). Постепенно мы постараемся портировать эти примеры на новую версию движка.
Water
Пожалуй, самый впечатляющий спецэффект Xteme3D - это реалтаймовая вода. Данный пример показывает, как сделать так, чтобы поверхность воды еще и отражала окружающие предметы (детальный разбор данного эффекта смотрите в шестом номере "FPS").
Скачать (180 кб)
Bump Mapping
Демонстрация всем известнго эффекта bump mapping (рельефное текстурирование) через шейдер BumpShader.
Скачать (390 кб)
Volumetric Spotlight
Во многих играх имеется на первый взгляд незначительная, но интересная деталь: объемный конус света от прожектора. Теперь такой эффект реализован и на Xtreme3D!
Скачать (100 кб)
Offscreen Rendering
Внеэкранный рендеринг (ViewerCopyToTexture) - чрезвычайно мощная вещь. Данный пример, реализующий камеру, передающую изображение на телевизор, является лишь одним из множества способов применения данной технологии.
Скачать (108 кб)
Glow
Простейшая реализация эффекта glow (свечение) путем вторичного рендеринга изображения в небольшую (8х8) текстуру, которая затем увеличивается до нужных размеров и отрисовывается в виде экранного спрайта.
Скачать (162 кб)
Octree
Octree (дерево октантов) - структура данных, наиболее часто используемая для рекурсивного разбиения трехмерного пространства с целью отсечения невидимой геометрии или проверки столкновений. Один из интересных способов применения octree - создание и обработка травы на ландшафте. Отрисовываются только те спрайты травы, которые находятся в непосредственной близости от камеры.
Скачать (115 кб)
Anti-Aliasing
Этот пример иллюстрирует программное сглаживание экрана путем дополнительного рендеринга сцены и дублирования изображения поверх основной картинки. Способ также позволяет реализовать такие эффекты, как DOF, MotionBlur и т.д.
Скачать (235 кб)
Parallax Mapping
На машинах со старой видеокартой можно реализовать бамп при помощи такой вот иллюзии: одна над другой рисуются частично прозрачные плоскости, и получается некий объем. Не самый скоростной способ, но зато простой и наглядный.
Скачать (500 кб)
Raycasting
Xtreme3D отличается широким выбором встроенных способов проверки столкновений. Один из них - raycasting - может быть применен при стрельбе в шутерах, для проверки, в какой объект попала пуля. Собственно, это и иллюстрирует данный пример.
Скачать (102 кб)
Ландшафт 2
Пример создания качественного повторяющегося ландшафта с текстурой детализации (detail map). Демонстрирует разницу при использовании карт высот разной глубины цвета (8 и 24 бит).
Скачать (306 кб)
SMD Skeleton
Скелетная анимация SMD позволяет управлять каждой частью тела персонажа независимо от остальных. А можно ли "прикреплять" к костям скелета сторонние объекты, например, оружие к руке персонажа? Можно: скачивайте данный пример.
Скачать (209 кб)
Lightsaber
Вложите в руку Вашему персонажу световой меч в стиле Star Wars, и он будет непобедим! :) Система частиц ThorFX хорошо подходит для моделирования различных лучей, лазеров, электрических разрядов и т.д. В данном примере показано, как использовать ее для создания светового меча.
Скачать (135 кб)
Pencils Primitive Demo
Демка показывает, что можно сделать одними только встроенными примитивами Xtreme3D, без использования сторонних моделей. В данном случае - это сцена с разбросанными карандашами и стаканчиком. При этом программируется только один карандаш, а остальные - просто копии.
Скачать (96 кб)
Get Clicked Object
В некоторых играх (в стратегиях, симуляторах типа Sims и т.д.) необходимо предоставить игроку возможность выбирать объекты, кликая по ним мышью. Этот пример демонстрирует простейшую реализацию такого интерфейса.
Скачать (54 кб)
3D Mouse
Несложный алгоритм конвертации экранных координат в трехмерные. В этом примере показано, как использовать курсор мыши для управления движением объекта.
Скачать (53 кб)
FPS Tech Demo
В профессиональных играх, как известно, внимание уделяется любой мелочи. Поэтому в играх от первого лица так важно поведение камеры. В данном примере Вы можете узнать, как сделать "плавную" камеру, которая еще и раскачивается при движении в такт ходьбе (что часто можно встретить в профессиональных проектах). В качестве бонуса прилагается метод реализации собирания power-up'ов.
Скачать (168 кб)
FPS/DCE
Еще один пример игры от первого лица. Демонстрирует привязку оружия к камере, а также проверку столкновений с картой (используется DCE).
Скачать (133 кб)
Xtreme3D ODE SDK 1.0
Набор примеров использования ODE (создание твердых тел, висящей цепи и "тряпичной куклы" - ragdoll). Прилагается руководство на русском языке.
Скачать (1.2 Mб)
Polygon Terrain
Несложный пример создания ландшафта в ретро-стиле посредством объектов Polygon (полигон).
Скачать (70 кб)
Specularity map
Пример отображения бликов по текстуре. Альтернатива известному эффекту bump mapping.
Скачать (120 кб)
3D-звук
Простой пример использования трехмерного звука.
Скачать (37 кб)
Демо "Стрекоза"
Иллюстрирует некоторые несложные, но интересные эффекты: trail (след от движущегося предмета) и glow (свечение).
Скачать (144 кб)
Анимированная текстура
Демонстрация последовательно сменяющейся текстуры. Полезно для создания воды, лавы, различных экранов и рекламных щитов.
Скачать (92 кб)
Частицы
Пример нестандартного подхода к созданию эмиттера частиц.
Скачать (27 кб)
Сферическое отображение
Классический пример эффекта отражения на металле, аналог Teapot для Blitz3D.
Скачать (40 кб)
Ландшафт
Пример создания ландшафта с использованием новой технологии Xtreme3D 2.0.2.0
Скачать (26 кб)
Автомобиль
Простой пример управления автомобилем. Может послужить основой для неплохих гонок.
Скачать (114 кб)
CSM
Пример загрузки карты уровня в формате CSM редактора Cartography Shop. Сам редактор ищите в разделе Утилиты.
Скачать (125 кб)
Создание игры от третьего лица (II)
Демонстрация к статье из третьего номера "FPS". Показывает один из вариантов решения анимации персонажа.
Скачать (760 кб)
Создание игры от третьего лица (I)
Демонстрация к статье из второго номера "FPS". Показывает, как можно настроить камеру от третьего лица.
Скачать (63 кб)
Демо "Зима"
Демка игры от первого лица с зимним антуражем (заснеженный ландшафт, деревья, звуки шагов по снегу, крики ворон и т.д.). Изначально это была основа игры The Hunt от Gecko, администратора сайта, но впоследствии проект был заброшен. Кому интересно - тема на форуме с обсуждением. Вы можете взять эту наработку для использования в своих проектах - все исходники доступны как Public Domain.
Скачать (3,3 Мб)
Игровое меню
Пример реализации игрового графического интерфейса - точнее, главного меню. Используется только Xtreme3D, без обращения к встроенной графике Game Maker.
Скачать (5,1 кб)
Примеры игр от первого лица
Найдены нами когда-то на просторах Интернета.
Скачать (2,8 Mб)
Скачать (3,4 Mб)

Примеры Xtreme3D старых версий.
Примеры от Bami
Примеры использования Xtreme3D 1.9 от Bami. В числе прочего, есть аналоговые 3D-часы.
Скачать (500 кб)



Hosted by uCoz