![]() |
Ответ: Enesea
Ну да какбы.. Но сам факт потдержки рендера в текстуру на дх есть, а на огл нету :( может там всёже есть какой-то способ?
|
Ответ: Enesea
Вложений: 1
у меня тут пока учёба очень много времени отбирает, медленно но уверено движок портируется под линукс, сейчас все подсистемы движка работают (но пока не работают боковые кнопки мышки, не работает vsync и установка частоты монитора, не работает msaa, не работает изменение размера окна в fullscreen, не работает showcursor) и двиг уже сейчас держит много-оконный рендер ^_^
очень большой неожиданостью оказалось что wchar_t под линуксом имеет размер 32 бита (для справки - wchar_t это wide character тип, используется для unicode-строк, под windows он занимает 16 бит) пришлось жостко ограничить его размер в движке до 16 бит для всех платформ (у меня от его 16-битности очень-очень многое зависит) таскать с собой зависимости под линуксом намного удобнее ^_^ после окончания портирования займусь за полное переписование системы материалов, система cgfx оказалось жудко тормозной, думаю писать свой run-time код управления шейдерами, но для компиляции использовать CG, таким образом избегаем зависимости от рендера :) ps. если будет время и не будет таких "неожиданостей", то вполне возможно портировать двиг под mac os x (внутри двига всего на всего надо добавить два класса и добавить мелкое изменение в еще два) ps2. squall есть только под виндой, думаю использовать fmod |
Ответ: Enesea
провожу сферические тесты в вакууме, рендер сильно ускорил по-сравнению со старым кодом (раз в 8-12, ибо некоторые вещи безбожно тормозили)
а теперь интересные картинки : http://dump.jimon.org/enesea_revision6.jpg http://dump.jimon.org/enesea_revision7.jpg одинаковая сцена, одинаковый код (почти, версии отличаются только парой вещей которые не влияют на рендер) и что мы тут видим ? скорость батчей разная - под линуксом это 0.5 мс, под виндой это 0.15 мс драйвера почти одинаковые (может в этом проблема) ps. фрустума и сортировки по-материалам нету, альфа сортировка включена, в сцене 441 куб и одна b3d модель (ну плюс линии дебага которых не видно и квад) |
Ответ: Enesea
Вложений: 1
работа понемногу начинает идти, почти закончил deferred shading, но для качественого внедрения его, необходимо еще много чего написать
и так разметка G-Buffer'а ![]() в подальшем думаю изменить R32F для глубины на R24_G8 чтобы добавить stencil из плюсов реализации вижу то что позиция востанавливается из экранной глубины, те DS использует один Z-Buffer |
Ответ: Enesea
Вложений: 1
базовый deferred shading готов и уже лежит в ядре
разметка G-Buffer'а не менялась, разве что вместо RG16F может использоватся RGBA8 в ущерб качеству но нужна оптимизация, 100 источников света на одной сфере дают 30 фпс без оптимизации, и 180 фпс с читерским костылём сейчас в движке полное соответствие форвард контексту OpenGL 3.1, в прочем планируется 4 режима : 1) Legacy OpenGL (1.1), запустится даже если драйвера не установлены, но без всяких эффектов, освещения и тд 2) OpenGL 1.4, работа на ARB шейдерах, вполне должно хватить для форвард освещения 3) OpenGL 2.1, в общем тут полный функционал, используется GLSL 1.20 4) OpenGL 3.1, от 2.1 слабо чем отличается, используется GLSL 1.40 готов normal mapping, в ядро его вставлять смысла нету, ибо такой эффект уже делается только прибегая к изменению базы данных ps. тут нету спекуляра, ибо он для этой модели как-то хитро считается |
Ответ: Enesea
jimon
Что насчет OpenGL ES ? |
Ответ: Enesea
FDsagizi
в принципе заставить работать можно :) но у меня нету устройств чтобы тестить |
Ответ: Enesea
Цитата:
|
Ответ: Enesea
потихоньку вожусь :
1) востановил фрустум куллинг (он вырезан был :lol:) 2) привязал к деферреду MSAA рендер буферы, но они дают некоторую погрешность, в принципе движок уже умеет рисовать с MSAA текстурами, но я не понял как с ними сделать рендер деферреда в другую MSAA текстуру 3) добавил глобальные шейдерные техники, в движке каждый шейдер должен иметь пару макросов, которые потом изменяются и шейдер перекомпилируется, нужно это для многопроходного рендера, к примеру ставим технику в рендер нормалей и делаем проход нормалей, ставим технику в рендер цвета - рендерим цвет и тд и всё это без изменения начальных шейдеров :) 4) добавил режимы совместимости, работают OpenGL 1.1,2.1,3.0,3.1,3.2 5) внедрил шрифты, написал ресурс шрифтов, подключил FreeType2, дописал битмап шрифты в Enesea Data Format, разбирался с типографикой :lol: и вот результат разбирательства : ![]() может я упустил что-то ? конечно это самый простой рендер битмап шрифтов, нету поддержки под и надстрочных надписей и прочих извращений ps. вот тут более очевидный пример кернинга ![]() как видим буква 'e' немного заежает в область буквы 'T' |
Часовой пояс GMT +4, время: 15:09. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot