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

Граф сцены (2 стр)

Страницы: 1 2 3 48 Следующая »
#15
17:32, 23 ноя 2022

ronniko
> Когда рендеришь каждую часть корабля считай  матрицу детали и общую матрицу
> корабля.
ну ты б хоть текст внимательней читал, глубина дереве != 2, у объектов внутри старшипа могут быть свои внутренние подобъекты, а у них - ещё свои потомки и т.д. В твоём понимание, нужно для каждого самого глубокого объекта в графе хранить 100500 матриц в шейдере

#16
(Правка: 17:41) 17:35, 23 ноя 2022

Вот потому я и спросил без графа никак нельзя обойтись ?
Одна общая матрица корабля и плюс у каждого элемента float2 rotXY и float3 PosXYZ
Из этого, в шейдере скомпоновать новую матрицу .

#17
17:53, 23 ноя 2022

THE_MASTER
При перерисовке узла:

push текущую matrix
умножаешь текущую matrix на matrix узла
рисуешь потомков
pop текущую matrix

Одно умножение на узел иерархии - нестрашно, в узле может быть много обьект

#18
18:44, 23 ноя 2022

Aslan
> push текущую matrix
> умножаешь текущую matrix на matrix узла
> рисуешь потомков
> pop текущую matrix
Я смотрю ты ГЛ1.0 переизобретаешь? :)

#19
20:38, 23 ноя 2022

MrShoor
А как еще сделать?

#20
22:06, 23 ноя 2022

Aslan
> А как еще сделать?
Ну я бы прошелся по всему деерву сверху вниз и посчитал абсолютные трансформы, без push -> render -> pop. Сложил бы абсолютные трансформы в SSBO/UBO и из него бы получал итоговый трансформ в шейдере.

#21
22:19, 23 ноя 2022

MrShoor
На разных объектах могут быть разные шей
дера

#22
22:42, 23 ноя 2022

innuendo
> На разных объектах могут быть разные шей
> дера
Ну так и пусть будут. SSBO то с абсолютными трансформами тут причем?

#23
0:43, 24 ноя 2022

Aslan
> Одно умножение на узел иерархии - нестрашно, в узле может быть много обьект
Ослан, это совершено не так. В том же анреале акторы делятся на статические и динамичесие. И для статических все эти трансформы просчитываются заранее.

Вдобавок принято рисовать по материалам, потомучто менять материал дороговато.

#24
(Правка: 9:20) 8:49, 24 ноя 2022

samrrr
> В том же анреале акторы делятся на статические и динамичесие
да кстати, про это я и забыл, так же сделаю, а то уж я хотел целые вселенные на лету просчитывать :)
Хотя, вот что до UE, так там вроде статик и динамик только на свет влияет, ну типа для статика он будет прекомпьют.
Но в любом случае, хорошая идея для каждой ноды сделать:

glm::mat4x4 modelTransform;
glm::mat4x4 worldTransform;

где modelTransform - оригинальная, которая есть в листе дерева, а worldTransform - уже просчитанная заранее в world space-е, ну типа один раз просчитал дерево по всем modelTransform и записал прекомпьют матрицы в worldTransform для каждого объекта, то есть все статики или малоподвижные объекты практически всегда будут ренедерится с worldTransform, а если уж им суждено сдвинуться с места, тогда - заново просчёт дерева до этого объекта по modelTransform, сохранение результата в worldTransform и рендер по последней.

#25
9:37, 24 ноя 2022

samrrr
Гондон, ясное дело, что речь о динамических объектах.
Ты чего вообще за мной бегаешь, как шлюха, занеси меня в свой списочек, с кем не общаешся, обиженный

#26
9:41, 24 ноя 2022

MrShoor
В чем экономия, посчитать сразу все матрицы на CPU, занести в UBO и потом оттуда доставать?
В одном вызове glUniform?

#27
11:35, 24 ноя 2022

Aslan
> Ты чего вообще за мной бегаешь, как шлюха, занеси меня в свой списочек, с кем
> не общаешся, обиженный
Вообще это ты за мной бегаешь.

THE_MASTER
>
> Но в любом случае, хорошая идея для каждой ноды сделать
Я бы компонентом в ецс сделал. Так память не будет занимать впустую в динамик объектах.

#28
(Правка: 16:00) 15:59, 24 ноя 2022

Aslan
> В чем экономия, посчитать сразу все матрицы на CPU, занести в UBO и потом
> оттуда доставать?
> В одном вызове glUniform?
Смысл в том, что у тебя не будет GPU-GPU синхронизаций между дравколлами. Сначала максимально обновляешь данные, потом из этих данных рисуешь. А не обновил-сделал_дроуколл-обновил-сделал_дроуколл.

#29
15:59, 24 ноя 2022

samrrr
> компонентом в ецс
что за ецс?

Страницы: 1 2 3 48 Следующая »
ПрограммированиеФорумГрафика