Страница 1 из 1

Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 12 мар 2017, 23:28
Zamarrus
Я уже писал подобный вопрос, касательно наложение текстуры на кастомную модель поверхности. Поискав информацию на форуме, пришел к выводу, что у меня два выхода :
1. В ручную создавать текстуру(красить пиксели);
2. Использовать заготовленные текстуры, как это делает встроенный в Юнити Terrain.
Второй вариант оказался более интересный и сложный, по тому он мне и приглянулся. Вопрос заключается в следующем : Как использовать этот самый шейдер. Я так понял что нужно накладывать все текстуры разом, а потом в определенных местах редактировать Альфаканал, для каждой текстуры отдельно, как это делает Terrain Юньки. В теории все понятно, а на деле как выглядит ума не приложу.

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 07:07
Ололош
допустим у вас 4 текстуры: создаете новую и воспринимаете каждый цвет, как альфаканал. RGBA = 4 канала. шейдер чертовски прост.

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 10:05
Zamarrus
Спасибо за ответ, однако, я все же не понимаю, как использовать несколько текстур на материале, где всего один входной материал. В теории все просто, а на деле, абсолютно не понятно. Причем там всего один альфаканал, а Tarrain позволяет каждой текстуре дать альфаканал.

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 10:07
Zamarrus
Аааааа, я кажеся понял. Создаем голую Texture2D и смешиваем на ней имеющиеся текстуры. Затем редактируем альфаканал. Кажеться...

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 16:09
Zamarrus
В общем, суть проблемы теперь такова: Я беру пиксели текстуры скажем 512 х 512, потом располагаю их в моей свеженькой текстурке 216 х 216. Вопрос таков как сжать изображение до 64 х 64 и можно ли как-то цвета передать без массива. То есть я понимаю что гладко и сладко не бывает. Но я все же не понимаю как это реализует Terrain юнити.
П. С. Как редактировать альфаканалы я так и не понял. Я просто беру цвета из текстур.

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 16:29
Tolking
Ищите сплатинг.

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 18:05
Zamarrus
Tolking писал(а):Ищите сплатинг.

Я скажу честно. Не знаю что это такое.

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 18:08
Woolf
Zamarrus писал(а):
Tolking писал(а):Ищите сплатинг.

Я скажу честно. Не знаю что это такое.


Вот и ищите. http://g.zeos.in/?q=unity3d%20splatting

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 18:11
Zamarrus
Может всетаки объясните как работает шейдер юньки, на обычном террейне, хотя бы в двух словах. Не хочется велосипед придумывать, кой их и так много, причем многие даже не оптимизированы.

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 13 мар 2017, 22:44
Ололош
нашел в гугл картинках. смысл в общем передает на отлично

https://shaderforge.userecho.com/s/atta ... 4e3d8d.png

Понятным языком : используется грубо говоря 5 RGBa текстур:
(например)
1. Трава
2. Песок
3. Камни
4. Лава

5. RGBA текстура, как альфаканал
R - альфа для "травы", G - Альфа для "Песка", B для камней, А - для "лавы". Градиент одного из каналов - дает полупрозрачность. Так работает встроенный шейдер юнити.

При использовании атласов всё немного сложнее, но смысл не меняется.

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 14 мар 2017, 10:48
Zamarrus
Огромное спасибо тебе, думал никто не откликнется. Но видишь в чем фишка шейдера Terrain, он принимает всего одну основную текстуру и одну альфу. Да, без спорно, соорудить шейдер который замиксует текстуры намного проще, однако не хочется ограничивать себя 4/5/6 текстурами. Если не ошибаюсь Terrain Юньки как раз не ограничивается в этом плане. Проще говоря, мне нужен алгоритм, отвечающий за построение собственной текстуры. Весь интернет перерыл, но кроме GetPixel и SetPixel ничего не нашел. Хах, как говорил один хороший программист "Избегай циклов" :).

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 14 мар 2017, 12:14
alt3d
Zamarrus писал(а):однако не хочется ограничивать себя 4/5/6 текстурами.

1. Больше 4 текстур тебе не понадобиться почти никогда
2. Сплаттинг - приличная нагрузка на видеокарту. Если больше 4-ех текстур придется делать шейдер мультипроходной (террейн во всяком случае работает так)

Zamarrus писал(а):без спорно

бесспорно

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 14 мар 2017, 19:10
Zamarrus
Спасибо, будем делать выводы с имеющейся у нас информацией. Спасибо еще раз :)

Re: Использование Шейдера Terrain [Сustom Mesh]

СообщениеДобавлено: 14 мар 2017, 21:26
Woolf
1. Больше 4 текстур тебе не понадобиться почти никогда


Эх, ваши слова, да левелдизу в уши..

На самом деле и 8 не хватает для нормальной карты.. У меня обычно колеблется между 14ю и 16ю текстурами. Вот кто бы научил терейн брать текстуры из атласа? Одна текстура 2048х2048, это 16 текстур по 512. Вот этого уже может хватить.