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

Unity3D: возможно ли менять запеченную текстуру теней в Runtime? (3 стр)

Страницы: 1 2 3 4 5 Следующая »
#30
13:16, 23 мая 2020

Alerr
> Что-то проблем много, кажется имеет смысл запариваться с линией только в случае
> если это ключевая механика.
как бы удваивать число текстур и создавать отдельную развертку, ради не основной механики это тоже такое себе.


#31
13:20, 23 мая 2020

Mira
> как бы удваивать число текстур и создавать отдельную развертку, ради не
> основной механики это тоже такое себе.
1. второй текстуре достаточно иметь гораздо меньшее разрешение
2. если следы только на полу - делать развертку вручную и не надо.

#32
13:25, 23 мая 2020

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

#33
13:38, 23 мая 2020

Mira
зачем вы отговаривате?) как будто вам лично это предстоит все делать :) наша задача (тсс..) - убедить автора чтобы он попробовал. потому что:
1. он поделится результатами.
2. он так быстрее прокачается и потом нас учить будет.

#34
13:59, 23 мая 2020

kkolyan
> почему вы так избегаете написания шейдеров? в этом ничего архисложного. очень советую преодолеть этот порог, т.к. современные игры без них немыслимы, а surface shaders в Unity особенно дружелюбны.

А я и не избегаю, я уже пишу их через код (без визуальных редакторов) XD Как можно делать игры незная графики XD

> вы уже запарились) а хороший геймдев собственно из такого и состоит.
Да тут кроме линии много чего еще, но да, согласен. Чтобы сделать что-то хоть немного приличное, нужно постараться.

kkolyan
Шейдеры я пишу, достаточно давно. Я не понял идею того как рисовать по маске гладкую линию в шейдере.
Вы мне блендить темный цвет от луча с сцветом стен предлагаете или...?

#35
14:01, 23 мая 2020

kkolyan
> 1. он поделится результатами.
> 2. он так быстрее прокачается и потом нас учить будет.

Хорошая стратегия XD Что-то да делать придется, посмотрим.

#36
(Правка: 17:36) 17:26, 23 мая 2020

Alerr
а, ну тогда все проще)

можно и не цветом, а текстурой вроде тлеющего следа от BFG (это будет в общем-то почти бесплатно), или любой другой.

идея в том, чтобы в шейдере проверять принадлежность точки к сглаженной кривой (конкретный алгоритм не подскажу), заданной маской и если принадлежит - подставляем точку из "телющей текстуры", используя "worldPos.xz * k" в качестве UV.

если определение принадлежности точки к кривой окажется слишком медленным из-за лукапов соседних битов, то можно кодировать соседние биты в кажую точку  (в флоат 5x5 спокойно влезет).

#37
19:34, 23 мая 2020

Понятно.
Все упирается в то, что чем больше текстура, тем тяжелее ее гонять между cpu / gpu - памятью. Текстура 4096 вообще завешивает игру прилично. Кисть еле движется. Можно использовать vertex painting. Дешевле, проще, быстрее.
Здесь есть статья на тему. Посмотрел код, но так и не понял что DrawMesh делает:

+ Показать

Мне давно попадался DrawMesh(), но я так и не понял зачем нужна эта функция. Никто не знает что она делает. В документации вроде как "рисует меш с заданными параметрами". То есть рисует текстуриованный обьект? Он же и сам по себе рисуется без вызова DrawMesh, не? В чем смысл?
DrawMesh меняет цвет вершин?

#38
(Правка: 23:32) 21:43, 23 мая 2020

Alerr
> Мне давно попадался DrawMesh(), но я так и не понял зачем нужна эта функция.
> Никто не знает что она делает. В документации вроде как "рисует меш с заданными
> параметрами". То есть рисует текстуриованный обьект? Он же и сам по себе
> рисуется без вызова DrawMesh, не? В чем смысл?
> DrawMesh меняет цвет вершин?
не пробовал, но прочитав доки сделал вывод что ежекадровый вызов DrawMesh эквивалентен наличию на сцене объекта с MeshRenderer с точно таким же мешем. Бонус в том, что можно рендерить миллионы мешей без миллиона GameObject-ов

+ Показать

а еще с помощью этой штуки удобно рендерить не на экран, а куда-то еще (что собственно и делается в статье).
#39
(Правка: 23:34) 22:09, 23 мая 2020

Alerr
> Можно использовать vertex painting. Дешевле, проще, быстрее.
Круто, не знал что так можно. И это отлично сочетается с тем что я предложил. Все абслютно то же самое, просто вместо рисования следа на текстуре в RAM и переотправки всей текстуры на GPU мы шлем на GPU команду, которая прямо на GPU нарисует в нашей большой текстуре те заветные 15 пикселей о том, что здесь мол след от меча.

Кстати, именно DrawMesh - как мне кажется не лучший вариант для этой техники и твоей задачи. отправить след от меча на GPU будет удобнее маленькой текстуркой (нарисованной SetPixel) и Graphics.DrawTexture.

#40
(Правка: 0:37) 0:36, 24 мая 2020

Может я чего не понимаю, но разве нельзя просто лайн рендерером рисовать след?

#41
0:54, 24 мая 2020

kkolyan
дак для рисования 100500 объектов есть DrawMeshInstanced

Drawmesh нужен тупо для рисования чего попало без создания геймобжектов на сцене. когда GO слишком дохера, сцена тоже прикуривает обходить весь этот граф и иерархию валидировать, ну и на GC нагрузка лишняя с их созданием и уничтожением. кароче ее можно использовать а можно не использовать, от игры зависит и от того как привычнее оптимизировать)

#42
0:57, 24 мая 2020

Sevil
ему нужно весь уровень этими следами засрать и чтоб не стиралось.
лайнрендерер это для спецэффектиков же а не для царапин

#43
2:06, 24 мая 2020

kkolyan
> мы шлем на GPU команду, которая прямо на GPU нарисует в нашей большой текстуре те заветные 15 пикселей о том, что здесь мол след от меча.

Что? Как напрямую на GPU можно послать команду? Я что-то совсем уже не догоняю.
У нас есть точка на модели. Мы ищем ближашие вертексы (массив colors) и красим их. Потом все color вертексов присваиваем обратно модели. Вы об этом?

#44
2:09, 24 мая 2020

Sevil
Лайн-рендерер создаст бесконечное число полигонов. Он непригоден для того чтобы можно было красить ими все на свете (как кисточкой в паинте).

Страницы: 1 2 3 4 5 Следующая »
UnityФорумПрограммирование