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

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

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

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

СообщениеДобавлено: 23 июн 2012, 01:28
Battle Angel Alita
Трипланар берёт текстурные координаты из ворлдпос, а по ворлднормал они блендятся.

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

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

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

СообщениеДобавлено: 23 июн 2012, 21:13
Battle Angel Alita
ВорлдПос.xy для проецирования по оси z
ВорлдПос.xz для проецирования по оси y
ВорлдПос.zy для проецирования по оси x
Вот простой трипланар, надеюсь разберёшься. http://unifycommunity.com/wiki/index.ph ... Diffuse1.1

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

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

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

СообщениеДобавлено: 27 июн 2012, 04:04
Kaaktus
помимо зеленых потолков, о которых я писал выше, возникла еще одна проблемка.

Изображение

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

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


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

СообщениеДобавлено: 28 июн 2012, 11:52
Battle Angel Alita
>как-то громоздко (а ведь это только дифуз, а нужен и normal и specular)
В визуальном редакторе конечно будет более громоздко чем кодом. Текстурные координаты посчитаны, добавлять нормаль будет не так громоздко.

>помимо зеленых потолков
Зелёные потолки это потому что не учитывается знак нормали. Можно сделать отдельную текстуру для пола и для потолка, и если нормаль смотрит вверх - ставить текстуру пола, если вниз - потолка.

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

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

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

СообщениеДобавлено: 01 июл 2012, 12:25
Belfegnar_
Я так понимаю, это хороший шейдыр для генерируемой в рантайме земли? А для мобилок такие вещи кто-нибудь делает? Или всех останавливает этот момент:
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.

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

СообщениеДобавлено: 01 июл 2012, 14:00
Kaaktus
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>

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

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

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

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