Сообщение от MOrtAl44444
Я думаю, что если дать мне полный шейдер, то у меня как раз не возникнет вопросов)) Он будет исчерпан...когда написал пост я потом что и делал читал про шейдеры и изучал семплы .... так что Please me help
|
Никто тебе такой шейдер не даст потому что его ни у кого нет.
Его нужно написать под конкретно твою задачу. Станет ли кто-то это делать за тебя? Вряд ли.
Что конкретно тебе непонятно? Как прочитать пиксель из текстуры? Как их смешать?
Пусть у нас будет какая-то "подложка" — диффузина, которая есть всегда, в любом месте меша. Например пусть это будет текстура скалы.
Потом у нас есть другие текстуры - травы, грязи, ещё чего-нибудь.
У нас информация о распределении текстур хранится в цветной кляксе.
В кляксе 4 канала: RGBA.
То есть максимум мы можем раскрасить наш меш в 4 текстуры + подложка, которая есть всегда. Аналогия в Фотошопе (если знаком): подложка — Background-слой, остальные слои — текстуры, их ластиком подтёрли в местах где нужно и наложили друг на друга.
Делаем в шейдере вектор4. В нём мы будем хранить результат. В него сразу записываем данные из текстуры-подложки.
Потом смешиваем его с первой текстурой. Пусть её "интенсивность" обозначается красным каналом из кляксы.
Берём значение R из кляксы. Умножаем на него значение прочитанное из первой текстуры. Умножаем на (1-R) значение подложки. Складываем. Записываем в наш вектор4.
Потом смешиваем со второй текстурой. Пусть её "интенсивность" хранится в канале G кляксы. Читаем оттуда G, умножаем на него тексель второй текстуры. На (1-G) умножаем значение, того, что у нас получилось перед этим. Складываем, помещаем в наш вектор результата.
Аналогично делаешь с каналами B и A если таковые нужны.
Как сделать больше текстур? Решать можно по-разному, проще всего сделать ещё одну "кляксу" для хранения интенсивности ещё текстур.
Хотя сначала сделай с четырьмя чтоб работало, потом двигайся дальше.
В итоге у тебя должен получиться в векторе4 правильно смешанный цвет из всех текстур. Применяешь его как будто пиксель прочитанный из текстуры.
Вот тебе полный алгоритм как делать. Возьми и делай. Задавай вопросы в конкретных местах если не получается.