Войти
ПрограммированиеФорумГрафика

Renderer architecture

#0
15:52, 8 мая 2014

Добрый день,

При проектировании системы рендерера столкнулся с проблемой.
Проблема в том, что с точки зрения архитектуры сущность Renderer знает о многих других сущностях (Scene, Entity и т.д.), причем в будущем планируется добавить в данный цикл отрисовку в текстуру, постэффекты, свет и т.д.
На диаграме ниже изображен текущий цикл отрисовки, в коде вызов происходит следующим образом

renderer->Render(currentActiveScene)
Хотелось бы получит ответы на следующие вопросы:
- корректен ли данный подход для реализации отрисовки одного кадра?
- могли бы вы предложить алтернативный вариант?

P.S. Заранее благодарен
render_tick_diagram | Renderer architecture


#1
16:11, 8 мая 2014

asherstnev
Все фигня. В реальной жизни эта схема разобьется как корабль о скалы.

Элементарно:
1. Где пост-процессинг?
2. Где-склеивание ентитей с сабмешей для уменьшения дипов?
3. Где фрустум куллинг, лайт куллинг и шадоу-куллинг?
4. А меш может влиять на материал? Ну например, когда противник ничего не подозревает - лампочки на нем светятся зеленым, а если он заметил врага - красным.
Ну и т.д..

Для какой-нибудь академической писульки - сойдет.

#2
16:21, 8 мая 2014

Demiurg-HG

Не могли бы вы подсказать более приемлемую архитектуру или где можно получить информацию по данной теме (именно построения Render архитектуры)? Спасибо

#3
16:23, 8 мая 2014

asherstnev
> - корректен ли данный подход для реализации отрисовки одного кадра?
Есть уже написанный код по такой архитектуре, который рендерит картинку современного качества? Есть, значит норм подход, нет - фигня.

> - могли бы вы предложить алтернативный вариант?
Сколько реализаций, столько и вариантов.

#4
20:57, 8 мая 2014

Demiurg-HG
>1. Где пост-процессинг?
а с этим все просто единственное для навороченных эффектов нужен проход в глубину. Остальное вся последовательность проходов создания рендер таргетов можно описать в файлах описания постпроцессинга. В любом случае это финальная обработка готовой картинки.
> 2. Где-склеивание ентитей с сабмешей для уменьшения дипов?
Это на этапе подготовке уровня лучше сделать в редакторе тулзах. Городить с движке это лишний геморрой.
>3. Где фрустум куллинг, лайт куллинг и шадоу-куллинг?
Наверное GetVisibilityEntities() а вот поиск источников света и объектов которые их освещают действительно нету.
asherstnev
Ну у меня сцена обращается к методам renderer  и рисуется сама. У тебя еще нету описания проходов для теней для глубины и т.д. Где сбор и сортировка рендер операций?

#5
16:36, 9 мая 2014

_NetSurfer_
> Есть уже написанный код по такой архитектуре, который рендерит картинку
> современного качества?

Я бы сказал про картинку, что если этот рендер справляется с текущими задачами, то значит все хорошо. Когда появятся проблемы, система все равно будет изменяться, а может и переписываться с нуля.

asherstnev
Подход с понятием Renderer я тоже использую, просто у тебя он пока не полон.

#6
0:33, 12 мая 2014

Osiris
> система все равно будет изменяться, а может и переписываться с нуля.
Так это нормально. Интереснее было бы обсудить какие фичи не получается добавить в существующий рендер.

#7
12:45, 12 мая 2014

_NetSurfer_
> Интереснее было бы обсудить какие фичи не получается добавить в существующий
> рендер.

ДА по этой картинке все равно нихрена не понятно, у меня примерно такой же Render Object, но внутри еще лабуды служебной море. И добавляй что хочешь и сколько хочешь. Склеивание и другие сложные группировки можно выполнять выше уровнем, на моменте генерации кадра, и тогда система ну очень расширяема.

И даже с DX12 подход можно не менять будет, нижний уровень просто будет куда более жуткий )

ПрограммированиеФорумГрафика

Тема в архиве.

Тема закрыта.