Войти
ФлеймФорумПрограммирование

HLSL or Compute shader раставить объекты с учетом высоты сетки по Y

Страницы: 1 2 38 9 Следующая »
#0
(Правка: 22:08) 22:04, 4 авг 2022

У меня есть сделанная в Блендере возвышенность\холм.
И по ее контуру хочу раставить камни, траву и деревья.
Что бы на холме были деревья , камни и трава.

Вопрос как узнать в HLSL\Compute Shader координату Y возвышунности под определенным камнем ?

Или прийдется перебирать вершины сетки на CPU и заносить в POS_XYZ камней высоту Y вершин ?

#1
22:05, 4 авг 2022

да.

#2
22:13, 4 авг 2022

Да ?

#3
22:15, 4 авг 2022

да, кпу.

#4
(Правка: 22:18) 22:17, 4 авг 2022

На CPU не очень удобно.
Так как таких разнообразных холмов будет штук 60.
И ренднрятся те холмо , что рядом с героем. А это не больше пяти холмов на экране.

И хотелось бы быстро на Compute shadere, генерить дату позиции травы,камней,деревьев на видимом холме.

Иначе в ОЗУ будет дофига данных позиций с 60 холмов.

#5
22:27, 4 авг 2022
Изображение
#6
22:45, 4 авг 2022

Уснул что ли ? :)

#7
(Правка: 5 авг 2022, 0:10) 23:36, 4 авг 2022

На CPU сделал. И залил в ConstantBuffer.
Теперь по контуру холма есть 120 камней.
Я так теперь могу бороду выростить у холма ! Как Дукалис Дукат :)
Я покрою эту лысину из 5 поста, волосами !
Изображение

По хорошему надо брать нормаль треугольника холма, чтобы камень повернуть правильно к плоскости треугольника.
Или чуть пониже по Y камень в холм рисовать.
Чтобы большая часть камня не висела в воздухе.

#8
(Правка: 0:04) 0:03, 5 авг 2022

а вы смотрели доклад GDC про Horizon Zero Down, хотя даже там есть такая проблема)
https://youtu.be/ToCozpl1sYY

+ Показать

Всегда есть 2 пути, предварительный и на лету. На лету делают тогда когда это ускоряет, а не замедляет.
Если предварительно запечь все heightmap для каждого холма, сложить их в атлас, а затем читать из него информацию.
Это одно из самых очевидных решений.
А там вы можете брать из неё хоть в шейдере. Я не дошел до создания геометрий на лету.
Поэтому CPU, это наше всё)
Если вычесть относительную позицию pivot холма от той, в которой его запекали в текстуру и добавить высоту из текстуры, получим точную позицию в пространстве.

#9
0:10, 5 авг 2022

Salamandr
> На лету делают тогда когда это ускоряет, а не замедляет.
Ну так-то на лету может быть дешевле по занимаемому месту.

#10
(Правка: 0:19) 0:16, 5 авг 2022

Понравилось как на видео 18 минуты, рисуют в выбранном участке земли траву.

Но вот я не пойму как мне найти нужные треугольники , нужного участка сетки.

Типа перебирать все треугольники сетки земли, пока координаты XZ не совпали с координатами курсора ?

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

#11
(Правка: 0:17) 0:17, 5 авг 2022

ronniko
> Типа перебирать все треугольники сетки земли, пока координаты XZ не совпали с
> координатами курсора ?
рисуй в отдельный слой UV координаты, и по ним восстанавливай позицию.
Это ж редактор тайм, тут можно обмазаться слоями.

#12
(Правка: 0:54) 0:48, 5 авг 2022

ronniko
там для деревьев одна текстура, для травы другая.
Поэтому по сути ты рисуешь в слое (текстуре). Разрежённость пространства определяется непосредственно твоими настройками и представлениями. Например рисуя деревья, у них есть какой то радиус (или ширина и высота). Можно высчитать средний радиус (или взять минимальный из возможных) и по нему складывать в текстуру, где каждый пиксель будет равен этому радиусу. Ну а дальше дело техники, лишь добавить переменную которая будет определять более большие расстояния между ними, что и будет определять разрежённость. В текстуру можно складывать не только наличие или отсутствие дерева в этом пикселе, но и индекс модели. Получится палитра возможных моделей, как индексируют цвета в PNG.

Доклады GDC очень информативны и после их просмотра, я будто открываю новые вселенные способов мышления. Это просто потрясающие люди..

#13
4:25, 5 авг 2022

Salamandr
А ты как корректно добавляешь ролик с ЮТуба? Я делаю вот так [ youtube = https : // youtu . be / w_eWB3NICfo ] без пробелов и выходит вот такая хрень:

+ Показать
#14
(Правка: 7:06) 7:05, 5 авг 2022

Даниил Петров
> А ты как корректно добавляешь ролик с ЮТуба? Я делаю вот так [ youtube = https
> : // youtu . be / w_eWB3NICfo ] без пробелов и выходит вот такая хрень:
Объясняю на пальцах этот ооочень сложный интерфейс.
Копипастишь линк на видео https://www.youtube.com/watch?v=WMlcLwdxF2s
выделяешь его в своем редактируемом сообщении
и нажимаешь на

[youtube]

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Готовечно.

да, ему надо просто скормить "w_eWB3NICfo" если ты руками делаешь.

Страницы: 1 2 38 9 Следующая »
ФлеймФорумПрограммирование