Xtreme3D 3.x by Gecko

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Форум движка Xtreme3D / Xtreme3D: разработка движка / Xtreme3D 3.x by Gecko

Страницы: 1 2 3 4 5 6 Next>> новая тема

Автор Сообщение

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 25-04-2016 23:34
https://github.com/xtreme3d/xtreme3d

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



Для тех, кто не в курсе - история этого проекта началась здесь.

Update (25.10.17) Поскольку работа над версией 3.6 затянулась, я решил выкладывать development-сборку xtreme3d.dll после каждого багфикса, чтобы все важные изменения можно было использовать уже сейчас. Самая свежая версия всегда доступна по ссылке http://xtreme3d.narod.ru/files/xtreme3d.dll. Она полностью обратно совместима с Xtreme3D 3.5, API не изменился, так что можно заменить ей релизную версию.

Update (17.12.17) Вышел Xtreme3D 3.6. Прочитать полный список изменений и скачать SDK можно на Гитхабе:
https://github.com/xtreme3d/xtreme3d/releases/tag/v3.6.0

Update (25.02.18) Добавлены биндинги к Xtreme3D 3.6 для D и Python, см. тут.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 12-05-2016 18:04
Потихоньку добрался до альфа-релиза:
https://github.com/xtreme3d/xtreme3d/releases/tag/3.0.0-alpha

Реализованы практически все функции, отсутствует только поддержка ODE. Надеюсь в течение ближайших месяцев добавить и ее, после чего будет окончательный релиз.
В архиве xtreme3d-3.0a-sdk.zip лежит скомпилированная xtreme3d.dll, пример, демонстрирующий сцену с бассейном, а также документация - CHM-справка, обновленная под Xtreme3D 3.0 (уроки, правда, все еще не написаны).

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 13-05-2016 18:21
Дорабатываю шейдер воды (сделаю, наверное, какую-нибудь демку с океаном):



Группа: Участники
Сообщений: 7
Добавлено: 15-05-2016 04:44
Gecko, возможно ли с использованием этих шейдеров сделать нечто подобное?


Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 15-05-2016 11:54
Конечно можно, я как раз на днях собирался сделать пример parallax mapping.

Кстати, новый пример с водой доступен тут: https://github.com/xtreme3d/demos.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 16-05-2016 15:13
Готов шейдер параллакса (см. в репозитории примеров):



С момента релиза альфы библиотека немного обновилась, так что лучше использовать самую свежую версию из репозитория.


Группа: Участники
Сообщений: 7
Добавлено: 17-05-2016 12:21
Великолепно!
Поддержка шейдеров позволит использовать движок для достаточно смелых задумок.
Для полного боекомплекта хотелось бы стенсильные тени)

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 17-05-2016 18:23
Сделал еще один пример, эффект bloom:



А стенсильные тени есть, ShadowVolume. Но они какие-то очень тормозные, так что я, наверное, буду пробовать реализовать shadow mapping.


Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 20-05-2016 11:34
Добавил пример bump mapping'а на анимированной модели:



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



Группа: Участники
Сообщений: 7
Добавлено: 20-05-2016 11:44
Отлично выглядит)

Вот методический материал для работы с тенями:

1. Основы создания мягких теней (GLSL)
2. Стенсильные тени изнутри (5 стр.)

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 20-05-2016 14:16
Ага, спасибо. В общем-то, я тени в своем движке уже писал - вся задача в том, чтобы портировать их на Delphi/GLScene:



Группа: Участники
Сообщений: 7
Добавлено: 22-05-2016 15:02
Ничего-себе) Это что за движок?
Продолжая тему шейдеров.. Хотел спросить, можно ли при помощи шейдеров реализовать self-illumination, при котором текстура становиться прозрачной в зависимости от степени освещения?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 22-05-2016 21:50
Да, нужно просто передать в шейдер дополнительную текстуру с данными об освещенности, а потом просуммировать ее с основным цветом. Будет что-то вроде такого:

vec4 emit = texture2D(emitTexture, gl_TexCoord[0].st);
gl_FragColor = emit + ambient + diffuse + specular;

Это движок для игры, которую я пишу на языке D последние несколько лет. Вот тут все подробности: http://dlanggamedev.blogspot.ru/p/dgl.html

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 26-05-2016 13:11
Рад сообщить, что наконец-то сделал тени:



Правда, есть проблема - почему-то они не рендерятся на Freeform-объектах, все закрашивается черным. На скриншоте тень падает на обычную плоскость.

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 26-05-2016 14:56
Ну, в общем, вроде получилось. Оказалось, что нужно отключить индивидуальные материалы для мешей модели (видимо, где-то в недрах GLScene происходит переназначение текстурных блоков, пока не могу понять, где именно - в итоге, в шейдер передается не shadow map, а что-то другое). Придется в этом случае обходиться одним материалом на весь Freeform. Но это не так страшно, потому что можно составить уровень из отдельных объектов (lightmap все равно не нужен, раз есть динамические тени).



Пример в репозитории.

И, кстати, я все-таки сделал возможность ручного рендеринга Viewer'а.


Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 27-05-2016 15:22
Вторая альфа-версия Xtreme3D 3.0

Включает все последние изменения, в том числе внеэкранные буферы, shadow mapping и много чего еще. В архиве SDK - все демки из репозитория примеров, а также обновленная справка.


Группа: Участники
Сообщений: 7
Добавлено: 29-05-2016 12:29
Ну вот)
Теперь он приятно выглядит)

Что касается авторендера, мое решение было не совсем правильным:

function ViewerDraw(viewer,mode: real): real; stdcall;
begin
if mode=0 then TGLSceneViewer(trunc64(viewer)).Buffer.Freeze;
if mode<>0 then TGLSceneViewer(trunc64(viewer)).Buffer.Melt;
result:=1;
end;

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 30-05-2016 15:44
У меня почему-то Freeze/Melt вообще не работают, я решил просто добавить в GLWin32Viewer новое свойство AutoRender и рендерить буфер в WMPaint, если оно равно true.

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

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 02-06-2016 12:43
Добавил пример raycasting'а - взаимодействие с предметами в стиле RPG (The Elder Scrolls и др.). При наведении курсора на предмет, отображается его имя:


Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 15-06-2016 13:42
Добавил пример эффекта огня с использованием системы частиц FireFX:


Страницы: 1 2 3 4 5 6 Next>> новая тема
Раздел: 
Форум движка Xtreme3D / Xtreme3D: разработка движка / Xtreme3D 3.x by Gecko

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU