В КОХ у них эти кружочки вообще геометрией сделаны, судя по скрину в посте 18...
Хм... я обычно делал так:
создаю полоскость (6х6 полигон), при загрузки сцены. А потом уж перемещаю по пронстранству, выдавливая точки по точкам ландшафта, которые находятся под ним (примерно, конечно). Конечно, этот способ походит на способ DEN 3D, только там плоскость создаётся каждый раз.
А так, в зависимости от случая я за шейдеры ;).
Вот меня смущает это "выдавливать", каждый раз при изменении положения данные в вершинном буфере менять? Можно конечно наверное прикрутить VTF, но както не вижу особых плюсов по сравнению с моей достаточно помоему лёгкой реализацией...
Даже на скриншоте в 0 посте видно, что там не кружочки, а многоугольники. Т.е. геометрия.
Насчет изменения вершинного буфера -- а что в этом плохого? Рендер таргет менять не надо, так что все в порядке. Текст и вообще GUI, например, так выводится обычно в гораздо больших объёмах.
Mirage
> Даже на скриншоте в 0 посте видно, что там не кружочки, а многоугольники. Т.е. геометрия.
Да вроде никто и не утверждал обратного...
> Насчет изменения вершинного буфера -- а что в этом плохого?
Это относительно медленно ИМХО...
Гонять данные по шине... Хотя... Их не так уж и много, чтобы было страшно...
помоему проще всего и экономнее сделать фигуру которая будет окружать обьект и зделать что-то типо стенсильной тени ток вершины вытягивать не от источника света а тупо вниз приэтом всё будет работать довольно быстро
Chaos_Optima
Интересное решение... Надо взять на заметку... :)
Executor
> Это относительно медленно ИМХО...
Это фантастически быстро в сравнении с текстурой 1024x1024.
Mirage
> Это фантастически быстро в сравнении с текстурой 1024x1024.
Не верю, но буду проверять... :)
Поднял фпс до 177 (вместо 120) с 1000 штук декалей, это я ландшафт оптимизировал чуток, теперь малость подделаю, попробую под кеш чтоб шоколадно было и тогда займусь декалями с помощью геометрии, тогда и посмотрим, что быстрее будет...
Всё таки не могу догнать, как сделать декали геометрией? Не в том смысле, что не могу понять как саму геометрию построить, а в том смысле как это всё организовать?
Декали могут быть любых размеров... Соответственно минимум 4 вершины, максимум 262144 вершин... Количество, поидее должно быть не ограниченным, но даже тысячей пусть ограничим... Получается 4000-262144000 вершин... Не много ли 200 лямов вершин на какието декали? Да и в один большой вершинный буфер оно не влезет? Ограничивать размеры? Ладно... Пусть самый большой декаль будет 64х64 на ландшафте... Получается опять же сумма астрономическая - буфер для 4ёх лямов вершин... Ну ладно, можно пойти на жертвы, ограничив 100 декалей... 400к на какието декали? И всё таки не пойму преимуществ по сравнению с моим способом, который не имеет ограничений вообще... Может объясните как правильно делается?
Что за ограничения? бред какойто ты откуда такое количество взял?никак не пойму для круга можно использовать например 50 вершин 100 декалей это всеголиш 5000 вершин + если их индексировать то получится и того меньше откуда ты взял 400 000 вершин непойму бред какойто
>на какието декали?
так не делай их вовсе если они "какие-то". А если они очень важны, то не стоит жалеть на них память.
>400к
примерно 20мб, оно того стоит?
Chaos_Optima
> Что за ограничения? бред какойто ты откуда такое количество взял?никак не пойму
> для круга можно использовать например 50 вершин 100 декалей это всеголиш 5000
> вершин + если их индексировать то получится и того меньше откуда ты взял 400
> 000 вершин непойму бред какойто
Чем больше декаль, тем больше на неё надо вершин, чтобы она корректно огибала ландшафт, так?
Если взять декаль размером 64х64 (не размер текстуры, а имеется ввиду размер занимаемого куска ландшафта), то это 4096 вершины на которые натянута текстура кружочка, квадратика или какогонить ацкого взрыва, не суть важно... Умножаем 4096 на их количество, то бишь на 100, получаем 409600 = ~400k вершин размером 64х64 на сотню декалей...
Adler
> примерно 20мб, оно того стоит?
При этом надо отрисовать 400к вершин, что совсем не пустяк... При этом эти 400к надо ещё каждый кадр обновлять, что вообще ппц...
сделай набор из 16 вершин т.е. в данном случае это будет покрывать 9 тайлов которые ложится круг выбора, расстановка этого квадрата элементарная, соответственно на каждую точку ландшафта свою точку из набора вершин ну и чуть повыше
у этих квадратов будет прозрачная текстура, ставь этот квад так чтобы полностью покрывал позицию юнита, ну и накладывай на него текстуру круга выбора в нужном месте, что сложного то
накладывание текстуры круга делается если че правкой текстурных коордсов
ashujon
> сделай набор из 16 вершин т.е. в данном случае это будет покрывать 9 тайлов
> которые ложится круг выбора, расстановка этого квадрата элементарная,
> соответственно на каждую точку ландшафта свою точку из набора вершин ну и чуть
> повыше
> у этих квадратов будет прозрачная текстура, ставь этот квад так чтобы полностью
> покрывал позицию юнита, ну и накладывай на него текстуру круга выбора в нужном
> месте, что сложного то
А если я хочу чтобы они были больше, чем 4х4?
Тема в архиве.