Продвинутый triplanar shader

Полезная литература, исходники шейдеров из серьезных игр и других движков, ссылки на тематические ресурсы - всё здесь.

Продвинутый triplanar shader

Сообщение Kaaktus 22 июн 2012, 17:36

Приветствую, господа.
Появилась необходимость создать продвинутый triplanar шейдер. Существуют готовые решения, (например http://dl.dropbox.com/u/8933990/Webplayers/Triplanar/ShaderDisplay/WebPlayer.html)
но они мне не подходят из-за ряда необходимых мне тонкостей, которые отсутствуют в готовых шейдерах. К тому же, все осложняется тем, что я ни разу не программист, а художник и исправлять готовые шейдера и что-то к ним прикручивать пока не выходит.
Чтоб сразу не усложнять, решил попробовать strumpy shader editor и был бы крайне благодарен, если бы кто-то подсказал по нему одну вещь.
Изображение
Делаю простейший шейдер кубмапа, чтоб разным сторонам разные текстуры повесить можно было, но если координаты брать из world normal, то текстура получается бесконечного размера. Если на шарике она еще на манер линзы собирается в кучу и выглядит как надо, то на кубе уже просто окрашивает стороны цветом проецируемого на нее пикселя.
Как сделать текстуру повторяющейся N количество раз на определенной пощади?
Kaaktus
UNец
 
Сообщения: 9
Зарегистрирован: 22 июн 2012, 16:57

Re: Продвинутый triplanar shader

Сообщение Battle Angel Alita 23 июн 2012, 01:28

Трипланар берёт текстурные координаты из ворлдпос, а по ворлднормал они блендятся.
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Продвинутый triplanar shader

Сообщение Kaaktus 23 июн 2012, 10:37

Все бы хорошо, но вордпос НЕ ПРОЕЦИРУЕТ мои текстуры, а указывает их относительно общего положения меша.
Соотвественно, не будет текстурки на горизонтальной плоскости а ля травка и не будет нужных текстурок на боках мешей. Получаем только текстуры проецируемые так, что подняв меш верхняя его сторона начинает покрывать все, что не нужно.
В общем, проще увидеть, чем рассказать.
Координаты по вордпос даже близко не подходят :(
Kaaktus
UNец
 
Сообщения: 9
Зарегистрирован: 22 июн 2012, 16:57

Re: Продвинутый triplanar shader

Сообщение Battle Angel Alita 23 июн 2012, 21:13

ВорлдПос.xy для проецирования по оси z
ВорлдПос.xz для проецирования по оси y
ВорлдПос.zy для проецирования по оси x
Вот простой трипланар, надеюсь разберёшься. http://unifycommunity.com/wiki/index.ph ... Diffuse1.1
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Продвинутый triplanar shader

Сообщение Kaaktus 26 июн 2012, 20:23

Battle Angel Alita
Спасибо, с этим разобрался, но возникает очередная трудность.
Текстуры проецируются "насквозь", т.е. верх и низ кубика будет с одной текстурой, мне же нужны разные текстуры по Z и -Z
Можно как-то избежать сквозного проецирования и накладывать текстуру только на одну сторону?
Kaaktus
UNец
 
Сообщения: 9
Зарегистрирован: 22 июн 2012, 16:57

Re: Продвинутый triplanar shader

Сообщение Kaaktus 27 июн 2012, 04:04

помимо зеленых потолков, о которых я писал выше, возникла еще одна проблемка.

Изображение

Правый скрин - все как в схеме. Левый - отключен Normalize

Без normalize в областях смешиваня текстур за счет add образуются сильные пересветы. С normalize же текстуры явно теряют в контрасте и выглядят очень тускло.
Есть ли способ побороть пересветы при этом оставив текстурам нормальные цвета? Было бы офигенно еще и сделать смешивание по маске, как на этом видео, но пока это из области фантазий.

Последний раз редактировалось Kaaktus 08 июл 2012, 18:12, всего редактировалось 1 раз.
Kaaktus
UNец
 
Сообщения: 9
Зарегистрирован: 22 июн 2012, 16:57

Re: Продвинутый triplanar shader

Сообщение Battle Angel Alita 28 июн 2012, 11:52

>как-то громоздко (а ведь это только дифуз, а нужен и normal и specular)
В визуальном редакторе конечно будет более громоздко чем кодом. Текстурные координаты посчитаны, добавлять нормаль будет не так громоздко.

>помимо зеленых потолков
Зелёные потолки это потому что не учитывается знак нормали. Можно сделать отдельную текстуру для пола и для потолка, и если нормаль смотрит вверх - ставить текстуру пола, если вниз - потолка.
Мозг рака
Изображение
Аватара пользователя
Battle Angel Alita
UNIверсал
 
Сообщения: 476
Зарегистрирован: 25 ноя 2009, 14:52

Re: Продвинутый triplanar shader

Сообщение Kaaktus 01 июл 2012, 02:54

***
Последний раз редактировалось Kaaktus 08 июл 2012, 18:13, всего редактировалось 1 раз.
Kaaktus
UNец
 
Сообщения: 9
Зарегистрирован: 22 июн 2012, 16:57

Re: Продвинутый triplanar shader

Сообщение Belfegnar_ 01 июл 2012, 12:25

Я так понимаю, это хороший шейдыр для генерируемой в рантайме земли? А для мобилок такие вещи кто-нибудь делает? Или всех останавливает этот момент:
We found that rendering large surfaces (in terms of screen area) with complex fragment shaders kills the framerate even more consistently than alpha blending. Complex fragment shaders should be used for smaller objects only.
Belfegnar_
UNIт
 
Сообщения: 112
Зарегистрирован: 22 ноя 2010, 14:08

Re: Продвинутый triplanar shader

Сообщение Kaaktus 01 июл 2012, 14:00

Belfegnar_
Вот тут вроде есть мобильный шейдер.

HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://dl.dropbox.com/u/8933990/Webplayers/Triplanar/ShaderDisplay/WebPlayer.html&w=640&h=480&t=false&preview=1' height='"+(480+30)+"' width='640' frameborder='0' scrolling='no'></iframe>"); </script>
Kaaktus
UNец
 
Сообщения: 9
Зарегистрирован: 22 июн 2012, 16:57

Re: Продвинутый triplanar shader

Сообщение Kaaktus 05 июл 2012, 03:23

Хочется прикрутить к шейдеру подобие затенения от облаков. Планирую повесить ч/б карту шума и анимировать по координатам.
Но как сделать, чтоб затенение работало только на участках, освещенных светилкой и не работало в тени?
Или это делается как-то по другому? (например, проецировать из светилки мою карту теней облаков)
Kaaktus
UNец
 
Сообщения: 9
Зарегистрирован: 22 июн 2012, 16:57

Re: Продвинутый triplanar shader

Сообщение Kaaktus 06 июл 2012, 01:44

Блин. Комьюнити, я смотрю, не очень то радушно к новичкам. :(
Помогите хотя б понять, почему шейдер игнорирует карту спекуляра. Работает только его интенсивность (плюс параметр glossnes прикрутил) Шейдер реагирует только на полностью белые места на карте спекуляра и то еле-еле заметно.
~x(
Kaaktus
UNец
 
Сообщения: 9
Зарегистрирован: 22 июн 2012, 16:57


Вернуться в Шейдерная школа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1