Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поговорим о оптимизации GLScene. [Delphi, GLScene, Windows]


Страницы:   1 2 3 4 5 6

Conferno ©   (2005-07-26 16:37:00) 

Привет мастерам и игроделам на GLScene!
В данной ветке давайте будем обсуждать оптимизацию GLScene.
Товарищи, кто делал игры на этом движке, расскажите о оптимизациях:
1. Как правельно пользоваться TGLPortal?
2. Какую текстурную фильтрацию лучше использовать Анизотропную или Изотропную...
3. Почему туман не повышает ФПС...
4. Виды Cull'ингов - какие лучше и как правельно пользоваться,
как отрезать невидимые обьекты, находящиеся, например, за стеной...
5. Динамичные тени и Lightmap'ы - как правельно с ними работать...
6. Можно ли модель в 3DMax экспортировать в 3ds, при этом, чтоб он не урезал имена используемых текстур?
Или где можно достать доки или примеры...
Обо всем здесь :)

Также можно задавать свои вопросы... :)


Coriolis   (2005-09-09 12:14:00) [1]

ГЫГЫГЫ :)
Да, планы-то наполеоновские. Но не из-за их нереальности, а из-за "крутости". Но ведь красиво, а? (нет, я не говорю что идея моя, просто это действительно удобно для всех, и главное - для ГП)
Но и ручками нарезать - неудобно же! Вот налепил ты свои спрайты в кучу, штук так под 30. А потом понадобилось или поменять размеры, или вообще убрать один из них. Не, если ты не художник - то конечно, это не твоя проблема. Но художнику-то каково?..
Всё-таки ручками - дедовский метод! (типа провокация ;))
Мне тоже его влом писать ;)
Поэтому и интерисуюсь - не реализовано ли в GLScene подобного.
Вот, например, в движке халфы как текстуры хранятся? Нужели создаются аппаратные текстуры под каждую картинку? Их ведь дофига там, всяких размеров.

А GLScene хотя-бы сортирует объекты перед рендерингом по текстурам? Чтобы каждая используемая текстура вызывалась только один раз.


Fosgen   (2005-09-09 10:31:00) [2]

Мда... Так почитаешь твои "наполеоновские планы", так подумаешь, да ну его нафиг такой менеджер... Лучше уж как сейчас - все ручками... Вот именно такому навороченному менеджеру я бы и не доверился... Ну разве уж только мною же и написанному, но вот писать мне его влом...


Coriolis   (2005-09-09 00:58:00) [3]

Хех. "Так и думал" - В смысле что ты натянул на полигоны текстуру. Хотя, не знаю, как можно ещё подобное реализовать :) Ну, может с помощью частиц...
А не колишься - и не надо :!

Так, погоди, что значит "Нет уж лучше о таких вещах я сам позабочусь чем доверять движку. :)))" ?!!! Ты не доверяешь коду, тобой написанному? Хм. Нет, я имею в виду что некий менеджер объектов при загрузке раскидает мелкие текстурки в одну большую. Естественно, он будет их раскидывать _оптимально_ по занимаемой поверхности, чтобы как можно больше вместилось.
Ну и этот менеджер будет помнить смещение для каждой текстуры (и, возможно, её поворот), чтобы как только ты к ней обратишься, он выдал тебе текстуру общую и координаты/размер интересующего тебя участка.
А для моделей - я действительно стормозил. Просто припомнились мои заморочки старые, и я ляпнул.
"И рпедлагаешь это все в одной картинке хранить?"
Ты невнимательно читаешь. Я как раз таки и не предлагаю хранить всё в одном файле, ёлы-палы!!! Как раз наоборот: всё лежит по отдельности!!! Одна текстура - один граф файл. Так художникам легче что-то переделать, изменить размерность тектуры например.
Всё вмести уже сам движок соединяет. Причём при загрузке, исходя из параметров видеокарты (максимальных размеров текстуры).
Во время загрузки он берёт все текстуры, самые частоиспользуемые кладёт вместе (например шрифт, элементы интерфейса, курсоры). А остальные - как ты сам задашь(к примеру задать всем текстурам логический вес и отсортировать по убыванию). Цель всего этого шаманства - оптимизация. Ведь если при выводе отсортировать объекты по используемым текстурам, то получится очень-очень мало переключений между текстурами.
Правда, может возникнуть ситуация, когда такая здоровенная текстура будет подключаться к контексту из-за одного-единственного кусочка на ней... но тут уж ничего не сделать. Разве что можно провести статистику для каждого уровня и для каждой текстуры, чтобы посчитать - сколько раз за кадр используется каждая текстура(естественно на стадии тестирования). И это количество брать за "логический вес" для сортировки.


Fosgen   (2005-09-09 00:19:00) [4]

И интересно что именно ты "примерно так и думал"? :))) Пока что я не только реализации такой как у меня не видел, а даже намеков на идею не слышал - потому так просто и не колюсь...

И как он тебе об этом позаботится? Нет уж лучше о таких вещах я сам позабочусь чем доверять движку. :))) Насчет интерфейса - тут вообще все зависит от того как ты его организуешь... Да и не факт что одна модель - одна текстура. Вот у меня каждая модель состоит из 3-6 3ds-ок, да еще к каждой по 5 текстур. И рпедлагаешь это все в одной картинке хранить? Да ну нафиг. Надо будет - сложу в один файл ресурсов, да и все дела...


Coriolis   (2005-09-08 22:48:00) [5]

Ага, ну я примерно так и думал.

А на счёт текстур - хотелось бы именно автоматом. Вот текстуры модели - это понятно, что одна модель - одна текстура. А текстуры интерфейса? Всякие там кнопочки/рюшечки/палочки/крючёчки, фон окон.
К тому же если размещать текстуры во время загрузки, то получится оптимизация под конкретное видео. Будут создаваться текстуры как можно большего размера, и на них распихиваться картинки.
Это ещё удобно и для художников - им не надо с этим париться - они могут не напрягаясь хранить даже самые мелкие текстуры в отдельных файлах, об их стыковке в одну большую текстуру позаботится сам движок.


Fosgen   (2005-09-08 22:28:00) [6]

Взрыв - однозначно генерится. Вообще-то он использует одну и ту же текстуру (слегка анимированную), и состоит из 14 полигонов :)), но каждый раз получается разным. А в игрухе что я пишу у меня 9 текстур. Вот разнообразие-то...

Как текстуры будешь хранить - так оно и будет. Запихаешь все в одну bmp-шку - будет одна текстура, только разбирай их оттуда уже сам...


Coriolis   (2005-09-08 15:35:00) [7]

Да не, я не про осколки. гыгы.
Я про сам взрыв. :)
Я не понял, он у тебя анимацией сделан или генерится каждый раз.

Т.е. GLScene не оптимизирует мелкие текстурки?..
А если их полторы сотни, и они все влезут на одну 512х512?
То будет создано 150 текстур? Всместо одной на 512?
Это же грустно...


Fosgen   (2005-09-08 10:10:00) [8]

2: Coriolis - Скорее уж я их располагаю в пределах куба. Это и есть намек. :)))
Оптимизацией хранения текстур вроде должен не движок, а программист заниматься. GLScene может хранить все текстуры в одной библиотеке, ее структуру я не разбирал, хотя сомневаюсь что она похожа на "одну большую"...


Coriolis   (2005-09-07 23:51:00) [9]

О, я по поводу оптимизации GLScene хочу спросить:
Оптимизирует ли GLScene текстуры по размеру: т.е. если есть много мелких текстур, то GLScene их помещает в одну большую. Или нет?
(наболевший вопрос :) )


Coriolis   (2005-09-07 23:44:00) [10]

Красивый взрыв. Правда, заметен минус - частицы ты распологаешь рандомом в пределе квадрата, да? Они и рзлетаются квадратом. А вообще красиво.
Можешь хоть намекнуть, как ты это реализовал?


Fosgen   (2005-09-07 23:18:00) [11]

2: Warstone - поменяться на что-нить могу. Посмотреть демку взрывов можно на сайте adm.trening-omsk.ru. Там же есть скриншоты с огнем и выхлопами двигателей, туманностями.
Меня лично интересует реализация подобная TGLLensFlare (я сам пользуюсь старым релизом GLScene, там нет этого модуля, а писать самому малость некогда), и может быть (если тут одна идея не получится) спрайтовый интерфейс, который позволяет произвольное расположение кнопок, иконок на экране и обрабатывает клики обоими клавишами мыши.


Warstone   (2005-09-07 17:09:00) [12]

А можно твой механизм посмотреть/использовать в своём проекте, а то я уже ничего в TGLParticles не понимаю, а инфы - нету...


Fosgen   (2005-09-07 00:27:00) [13]

Честно говоря, отстой эти самые TGLParticles... Я вот свою систему сделал - загляденье. И взрывы обалденные и осколки и выхлопы двигателей вот недавно переработал. Ко всему еще и реализовал горение как в "Ил-2:Штурмовик", да и утечки воздуха из корпуса тож неслабо смотрятся...


Coriolis   (2005-09-06 23:48:00) [14]

Как-то ты не по теме...


Warstone   (2005-09-06 23:12:00) [15]

Ребята, спасайте... Уже неделю как не могу разобраться с частицами. Надо сделать "выхлоп" из двигатеря звездолёта. Пытаюсь провернуть это с частицами, но: Как их заставить лететь от источника, или просто сделать так, чтоб их координаты не были связаны с источником??? (А то при перемешении источника перемещаются и сами частицы.) Использовал TGLParticles.


DeadMeat   (2005-09-06 14:17:00) [16]

Frost (Freak)
Спасибо.. обязательно прочту на ночь.


Frost (Freak)   (2005-09-06 12:54:00) [17]

Особенно радует специальная поддержка аппаратного ускорения DRI в Linux :) Радует, понятно, не жадного Билли ;)


Frost (Freak)   (2005-09-06 12:47:00) [18]

2 DeadMeat:
Почитай о нововведениях в OGL 2.0
http://opengl.org/documentation/specs/version2.0/glspec20.pdf

2 Fosgen:
Я бы не сказал, что добавили не так уж много... :)


Fosgen   (2005-09-06 10:18:00) [19]

Идут, идут. Вообще во второй версии не так уж много добавили... А то что игра ПОДДЕРЖИВАЕТ навороты второй версии - совсем не означает что она не работает с версией 1.1. Так что покамисть у меня все работало. Например ПАРКАН 2, который вообще без пиксель шейдеров не запускается.


DeadMeat   (2005-09-06 10:14:00) [20]

Я про фрагмент и пиксель шейдеры.. короче те, что от второй..
Или я путаю и они тоже до второй версии идут?


Страницы:   1 2 3 4 5 6

Наверх

Титульная страница Поиск, карта сайта Написать письмо