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

Все об устройстве и отрисовке сцены (6 стр)

Страницы: 15 6 7 811 Следующая »
#75
13:27, 1 мая 2016

Vlad2001_MFS
> Держи статью
Почитал. Ну это вообще не то. Это опыт начинающих разработчиков, о том, с какими подводными камнями они столкнулись.
Рендерер не должен заниматься никакой организацией сцены, он про сцену ничего знать не должен. В идеале рендерер имеет на входе список видимых объектов (или сам отсекает) и просто их рисует. А что это за объекты ему знать не положено. Только на уровне типов - уровень, модель, биллборд, декаль, источник света.


#76
13:34, 1 мая 2016

За организацию объектов что можно сказать. Объекты организуются без привязки к какой-либо подсистеме движка.
Это просто список объектов. Есть базовый класс, который включает в себя те переменные, которые гарантированно используются для рендеринга, звука, передачи по сети. Если устройство объекта не укладывается в базовый класс, от него берётся наследование, но с таким расчётом, чтобы в конечном итоге заполнить эти базовые переменные валидными значениями. Т.е. для монстра это будет поиск пути, для физ.объекта - физика. Но в конечном итоге у нас получаются значения позиции объекта и его поворота. Эти значения по сети передаются на клиент (если есть сеть), далее звуковой движок играет звуки, из центра этой позиции, рендер рисует модель на этой позиции. В эту схему укладывается практически любая архитектура. Принципиальная разница только в том, где это всё организовано - на клиенте или на сервере, иными словами как выполняется синхронизация объектов.

#77
15:00, 1 мая 2016

g-cont
Какие звуки издают источники света? Где в игровом мире находится таблица очков?

#78
15:03, 1 мая 2016

innuendo
> std::vector<RendeSceneObject*> для начала
Отлично, у нас есть эта штука.
Какой интерфейс у RenderSceneObject и как, имея этот список, нам его отрисовать?
Дай угадаю... foreach(object in objects) { object->render() }?

g-cont
> В идеале рендерер имеет на входе список видимых объектов (или сам отсекает) и
> просто их рисует. А что это за объекты ему знать не положено. Только на уровне
> типов - уровень, модель, биллборд, декаль, источник света.
Этот подход плох тем, что для добавления объекта нового класса тебе придется протягивать эту зависимость через весь код. Тогда как в ECS нужно добавить только компонент и систему для нового класса.

#79
15:17, 1 мая 2016

-Eugene-
> Дай угадаю... foreach(object in objects) { object->render() }?

foreach(object in objects) { object->applyPass(currentPass); }

Подойдёт ?

#80
15:25, 1 мая 2016

Delfigamer
> Какие звуки издают источники света? Где в игровом мире находится таблица очков?

Любые. Таблица находится вне мира.

#81
15:27, 1 мая 2016

clc
> Любые.
Зачем?
clc
> Таблица находится вне мира.
Какие значения позиции и поворота соответствуют местонахождению "вне мира"?

#82
15:48, 1 мая 2016

-Eugene-
> Тогда как в ECS нужно добавить только компонент и систему для нового класса.

Один только вопрос. Ты работал с компонентами на реальных проектах или только статьи читал ?

#83
16:21, 1 мая 2016

innuendo
> Один только вопрос. Ты работал с компонентами на реальных проектах или только
> статьи читал ?
Если называть реальным проектом наколенную игру мечты, то да.

> Подойдёт ?
А теперь вопрос. Как добавить инстнсинг?

#84
16:25, 1 мая 2016

innuendo
> Вопрос закрыт ?
Конено закрыт, а что тут обсуждать то? Про твои тупые вопросы, не относящиеся к теме? как любишь цепляться ко многим на форуме?
>foreach(object in objects) { object->applyPass(currentPass); }
>Подойдёт ?
-Eugene-
> Какой интерфейс у RenderSceneObject и как, имея этот список, нам его
> отрисовать?
> Дай угадаю... foreach(object in objects) { object->render() }?
> -Eugene-
> > Тогда как в ECS нужно добавить только компонент и систему для нового класса.
> Один только вопрос. Ты работал с компонентами на реальных проектах или только
> статьи читал ?
Запасаюсь попкормом.

#85
16:31, 1 мая 2016

Andrey
ну так-то иннуендо прав) довольно часто в реальной жизни хочется как в статье, компоненты, орхетектура. А на самом деле сделать продукт нужно вчера. И там уже не особо-то орхетектурят.

#86
16:33, 1 мая 2016

Andrey
> Запасаюсь попкормом.

> Про твои тупые вопросы, не относящиеся к теме?

Диабет только не заработай :)

А твоё постоянное "убогое апи" - это не тупое ? :)

Давай, сделай или переделай демку про истансинг что-ли


-Eugene-
> Если называть реальным проектом наколенную игру мечты, то да.

Жаль. Очень хочется послушать за практику на коммерческих проектах

> > Подойдёт ?
> А теперь вопрос. Как добавить инстнсинг?

Внутри applyPass сделать проверку на повторение геометрии ?

#87
17:08, 1 мая 2016

innuendo
> Жаль. Очень хочется послушать за практику на коммерческих проектах
Мне тоже жаль.

> Внутри applyPass сделать проверку на повторение геометрии ?
Каким образом? Типа, если рисуем ту же геометрию, сливаем данные, а если не ту же, то рисуем?

#88
17:12, 1 мая 2016

-Eugene-
> > Внутри applyPass сделать проверку на повторение геометрии ?
> Каким образом? Типа, если рисуем ту же геометрию, сливаем данные, а если не ту
> же, то рисуем?

Есть другие варианты?
Это паттерн visitor, при обходе элементов создаётся массив renderObject - при этом можно проверить на повтор геометрии

#89
17:13, 1 мая 2016

Andrey
> > std::vector<RendeSceneObject*> для начала
> о да. сразу чувствуется опыт.

Ну да, покажи свой опыт. Как там, уже работает редактор с id ? :)

Страницы: 15 6 7 811 Следующая »
ПрограммированиеФорумГрафика

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