Тема: Tower Defense 3D
Показать сообщение отдельно
Старый 29.09.2011, 16:17   #59
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Tower Defense 3D

Сообщение от Taugeshtu Посмотреть сообщение
В своё время практиковал хитропопое решение задачки:
Маска пишется в альфа-канал диффузной текстуры. Устанавливаем тайлинг, смещение для текстуры, а маску читаем без этих значений... Как результат - не нужна доп. текстура-маска. Но это наверное из разряда извращений, ибо нельзя иметь маску и текстуру в разных разрешениях. То есть решение не универсальное.
Один плюс - это экономия видео памяти.
Минусы:
1. Технически чтение из текстур в шейдере будет таким же, т.к. всё равно нужно делать две выборки по разным текстурным координатам.
2. Только два слоя, т.к. на один канал много не уместишь. Можно сделать больше слоёв, но переходы между ними будут более "лесенчатыми".

Сообщение от Taugeshtu Посмотреть сообщение
вот кстати, любопытная задачка:
Ландшафт. Вейпоинты. Нужно проложить дорогу, но не просто "асфальт", а из текстуры с разметкой, т.е. направленную. Ничего умнее доп. меша, повторяющего поверхность ландшафта, мне пока в голову не идёт... Может быть, есть возможность придумать хитрую математику, запаковывающую в маску информацию об ориентации текстуры, и тогда модифицировать текстурные координаты...
Если это FPS или RPG, то лучше делать таки декалей на ландшафте, как делают везде.
Но если это стратежка, или игрулька с высоко подвешанной камерой, то можно сделать так:
В R канале хранить степень смещения влево/вправо, а в G канале вектор направления дороги. Но G канал нужно как-то затайлить, чтобы он не был постоянным, а длина вектора плавно шла от 0.0 до 1.0 и циклилась. При этом скорость изменения длины будет зависеть от вектора направления самой дороги. Получается что мы сможем сделать текстурные координаты для дороги, но нужно также в B канале держать маску - есть/нету дороги.
Получается эта тестура будет давать инфу о текстурных координатах для выборки из тайленной текстуры дороги, и плюс маску.
Сгенерировать такую текстуру не просто, в динамике думаю возможно, но не просто.
Можно ещё другой вариант, "более живой". Суть у него такая, что в RG будет содержаться вектор направления движения по пикселям. А B канал, степень частости перемещения по нему. Исходя из RG канала, и вектора направления нужно крутить тайленную текстуру и выбирать исходя из этого, а B канал, будет снова степенью - маской. Таким образом направления дорог, будет адаптируемо, получается почти как Volumetric Smoke
Но снова, вопросом стоит как текстурные координаты покрутить для выборки. Но там будет скорее текстура земли разъезжанная вертикально. С кучей следов по вертикали.
(Offline)
 
Ответить с цитированием