innuendo
> Это паттерн visitor, при обходе элементов создаётся массив renderObject - при
> этом можно проверить на повтор геометрии
Что, если массив не сортирован по моделям?
Что, если нам нужно отсортировать перед рендерингом объекты по расстоянию?
> Есть другие варианты?
Иметь централизованный рендерер, который сможет максимально эффективно отрисовать конкретный тип объектов.
Рендерер, который нарисует меши с инстансингом, а полупрозрачные с сортировкой. Другой рендерер, который нарисует террейн с тесселяцией. Третий, что как-то там нарисует партиклы.
innuendo
> Внутри applyPass сделать проверку на повторение геометрии ?
да уж. Уровень "изучения" демок и панты на форуме дает о себе знать. Иди читай книги и пиши 3D движок, пару лет подебажишь на разных платформах, все может станет понятно.
Ах да, можешь не повторяться не обязательно что-бы результат собственного движка использовался в играх. Умение разбираться в архитектуре движков, через опыт разработки своего, это очень большой плюс для тех кто пишет игры на готовых инструментах.
>Давай, сделай или переделай демку про истансинг что-ли
Зачем ? я и так реализовал инстансинг, тоько не на уровне демок из SDK. А подправить демку SDK это удел прогеров кубиков и диванных теоретиков обосрашихся уже по этой теме на форуме.
bool
> ну так-то иннуендо прав) довольно часто в реальной жизни хочется как в статье,
> компоненты, орхетектура. А на самом деле сделать продукт нужно вчера. И там уже
> не особо-то орхетектурят.
Ты наверное не понял, иннуенда постоянно меня цепляет, причем зачастую в тех вопросах, где он полный нуль. Я всего-лишь отвечаю :)
-Eugene-
> Что, если нам нужно отсортировать перед рендерингом объекты по расстоянию?
Да по расстоянию это совсем просто, как минимум еще прозрачность и т.д.
Ждем ответа от великого!
-Eugene-
> Что, если массив не сортирован по моделям?
> Что, если нам нужно отсортировать перед рендерингом объекты по расстоянию?
Всё в контексте делается
-Eugene-
> ендерер, который нарисует меши с инстансингом, а полупрозрачные с сортировкой.
> Другой рендерер, который нарисует террейн с тесселяцией. Третий, что как-то там
> нарисует партиклы.
И сколько таких рендереров ?
Andrey
> Зачем ? я и так реализовал инстансинг, тоько не на уровне демок из SDK.
молодец, а я его реализовал когда ты о чём только читал :)
всё ? или ещё будешь бухтеть ?
что ты не поделился результатами на NV ?
> Иди читай книги и пиши 3D движок
В каких игровых проектах он использован ? Твоя подделка это движок ?
Andrey
> Ты наверное не понял, иннуенда постоянно меня цепляет, причем зачастую в тех
> вопросах, где он полный нуль
Ещё раз напомнить про HOQ ? :)
Andrey
> да уж. Уровень "изучения" демок и панты на форуме дает о себе знать. Иди читай
> книги
Ну давай, покажи свой уровень
innuendo
> Жаль. Очень хочется послушать за практику на коммерческих проектах
В Unreal Engine 1 базовый класс - Actor - делал всё и ещё немного. Он издавал звуки, он же излучал свет (Light был просто наследником Actor со спрайтом факела) и чего он только не делал.
В Unreal Engine 3 он, с одной стороны, больше не светился и, по-моему, даже не звучал; зато на него повесили физику. Ага, в самый базовый класс.
В Unreal Engine 4, напротив, он больше не делает ничего, кроме сетевой репликации и тиканья. Вся работа висит на компонентах. Нужно нарисовать модель? Прикручивайте StaticMeshComponent. Нужен свет? PointLightComponent. Есть, конечно, актёр PointLight, но это просто Actor со встроенным светом.
Летящая ракета - это целое дерево компонентов. Модель - отдельно, звук - отдельно, динамический свет - отдельно, система частиц - отдельно, капсула для коллизий - отдельно, а у некоторых ракет даже есть отдельный CameraComponent.
А у самого Actor даже своей позиции нет, вместо этого он пользуется позицией корнегого TransformComponent (от которого наследуется всё, что имеет положение в мире).
Delfigamer
Ты правда думаешь, что я этого не знаю ?
> вместо этого он пользуется позицией корнегого TransformComponent (от которого
> наследуется всё, что имеет положение в мире).
От MovementComponent ?
innuendo
>всё ? или ещё будешь бухтеть ?
че разозлился? иди опять в запой в свою глушь может поможет.
> Ещё раз напомнить про HOQ ? :)
Еще раз напомнить про инстансинг, про деревья? про импорт ? :).
Andrey
> че разозлился? иди опять в запой в свою глушь может поможет.
Мне на тебя злится ? Слишком много о себе думаешь.
> Еще раз напомнить про инстансинг,
Оk. Ошибся - Не вендоры рекомендуют, а вендор. Так устроит ?
> про деревья? про импорт ?
Что про деревья и импорт ?
innuendo
> И сколько таких рендереров ?
Сколько потребуется.
> Всё в контексте делается
Т.е. контекст хавает все, что в него навалили, и разгребает?
Таким образом контекст содержит всю логику рендерера?
Причем не всю логику, а только ту часть, что не вместилась в логику объекта.
-Eugene-
> Т.е. контекст хавает все, что в него навалили, и разгребает?
> Таким образом контекст содержит всю логику рендерера?
Контекст может сортировать по метериалам и тд. А Renderer уже вызывает GAPI
innuendo
ГАПИ второстепенно. Я пытаюсь понять логику.
Ну, я ощутил структуру сцены.
Значительный недостаток пока вижу один - визитор обходит объекты по одному, поэтому любая групповая обработка объектов делается костылями через контекст.
Специализированный рендерер может делать все напрямую, владея коллекцией объектов в удобном формате.
И любой новый тип объекта придется протягивать через контекст.
А в чем профит такого подхода?
-Eugene-
> обработка объектов делается костылями через контекст.
Что значит костылями ? Это такое слово когда что-то не нравится ?
> А в чем профит такого подхода?
Это классика.
> И любой новый тип объекта придется протягивать через контекст.
Не надо сюда впутывать ECS
innuendo
> Это классика.
А кроме апелляции к возрасту?
> Что значит костылями ? Это такое слово когда что-то не нравится ?
Если у тебя есть контейнер и ты работаешь с ним, как с контейнером, это нормально.
Если ты итерируешь по элементам, чтобы изнутри построить еще один контейнер и работать уже с ним - это костыль.
Тема в архиве.