![]() |
Sigel::EntityShaders
хочу поговорить о "объектных шейдерах".
на досуге мне подумалось что неплохо было бы сделать возможность задания "программы обработки" для отдельных объектов. такая программка вызывается каждый раз перед отрисовкой объекта, в ней могут использоваться все методы объекта (Entity). пример программки которая крутит объект Код:
void *Turner(Entity* ent) Код:
Entity *MyEnt = new Entity(sSomeSurface); внимание, вопросы: 1) Как вам идея, бредовая или имеет право жить? 2) Что делать с невидимыми объектами (отрезанными по фрустум, или еще каким методом) //лично я считаю что ничего с ними делать ненадо, в на крайняк проврека на видимость может быть осуществленна в програмке: Код:
void *Turner(Entity* ent) смысл - например можно организвать "затухание" объекта. Код:
void *Fader(Entity* ent) Код:
5) (не по теме). скрытый объект переностися в другой список. все просто - объект не будет обрабатываться при рендере вообще. хоть 1000000 скрытых объектов - они не обрабатываются. минус метода - почти бесплатная операция по скрытию/появлению объекта становится недешевой. внимание вопрос: как часто вы скрываете/показываете объект. что важнее - скорость скрытия/показывания или скорость обработки? |
Ответ: Sigel::EntityShaders
это банальное назначение функции Update ( или PreRender) для обьекта
лутче сделать список таких функций, даже классов (типов) и назвать его еффектами но это всё имхо :) |
Ответ: Sigel::EntityShaders
А я вообще ничего не понял, ну пробуй, ну тестируй, ну заводи списки объектов в фрустуме и вне его, ширяй из одного в другой, ну скорость тестируй, ну выкинь <list> или <vector> или что там у тебя? Критерий - скорость рендера, важен на финишном этапе. Красота кода и вензеля функуий тоже не самый важный параметр на стадии тестирования движка. Дружественность к пользователю, гибкость, предсказуемость и расширяемые возможности - вот главные цели, к которым надо стремиться на данном этапе.
|
Ответ: Sigel::EntityShaders
Я например уже скрываю часто, точнее не очень часто, но если скрываю\показываю, то большими объёмами.
Хм, вызов выполнения заданий объекта, будет перед рендером, либо при вызове назначеной на эту должность функции? Вообще не совсем понимаю надобность такого, приведи пример, когда бы юзал подобное? |
Ответ: Sigel::EntityShaders
Цитата:
up: таки сделал ети объектные процедурки. все работает как надо (кроме удаления) Цитата:
Цитата:
скрываеш/показываеш кучи объектов в геймтайме? можно было бы ввести конструкцию типа: Код:
LockEntites(); |
Ответ: Sigel::EntityShaders
:)
Ну выбор твой. Главное чтобы это не замедляло LoD'ы (не программные, а методом замены на другие версии модели), и на систему Порталов. |
Ответ: Sigel::EntityShaders
про систему порталов знать ничего не знаю, а вот лоды будут обрабатоваться на уровне движка (что то типа:)
Код:
Entity *ent = new Entity(sSomeSurface); |
Ответ: Sigel::EntityShaders
Система Порталов? Представь, у тебя есть indoor сцена, много комнат, в каждой много объектов, так вот, когда ты находишся в другой комнате, то остальные не рендерятся (только если через дверь не видно ту комнату), и всё что в комнате, не обрабатывается, это Очень хорошая оптимизация для indoor FPS или RPG (third/first person). Но требуется разумеется редактор участков и корректная реализация переборов.
|
Ответ: Sigel::EntityShaders
да ну нафиг. мой движог будет для outdoor сцен приемущественно. и с видом сверху желательно. вообще, он делается с рассчетом на стратегию.
|
Часовой пояс GMT +4, время: 22:41. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot