forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Эффекты/Шейдеры (http://forum.boolean.name/forumdisplay.php?f=170)
-   -   Depth water shader (http://forum.boolean.name/showthread.php?t=19333)

Evgen 04.08.2014 14:12

Ответ: Depth water shader
 
Мне кажется z берется не из Z буфера...

Mr_F_ 04.08.2014 14:17

Ответ: Depth water shader
 
твой шейдер выводит глубину самого объекта, на который он наложен, если что.
возможно ты попутал что-то и хочешь увидеть в нём глубину того что под водой? или я не так понял, что ты хотел им показать?

Evgen 04.08.2014 14:43

Ответ: Depth water shader
 
Я пытаюсь извлечь глубину из z-buffera что-то вроде: d=Linear01Depth(UNITY_SAMPLE_DEPTH(tex2D(_CameraDe pthTexture,i.uv)));
Но ни как не получается, уже много вариантов перебрал...
Может в indie эта функция заблокирована?(
Для начала я пытаюсь извлечь значение z земли, что под водой из z буфера...
Потом от этого отнять высоту воды
Ну и затемнить воду по этому значению.
Была такая depth water, но в 4 версии Unity она не работает(

pax 04.08.2014 18:09

Ответ: Depth water shader
 
Возьми любой шейдер частиц (частицы работают на Free), там все что тебе надо находится вот в таком условии:
PHP код:

#ifdef SOFTPARTICLES_ON
...
#endif 

ну и еще надо sampler2D_float _CameraDepthTexture;

Evgen 05.08.2014 17:35

Ответ: Depth water shader
 
Вот ссылка на что_то подобное:
http://forum.unity3d.com/threads/ble...slider.253270/

В чем разница: sampler2D_float _CameraDepthTexture ?
В Google упоминается всего пару раз.

pax 05.08.2014 17:54

Ответ: Depth water shader
 
В шейдере частиц данный самплер задан вне директив препроцессора. Поэтому я его привел.

Evgen 20.08.2014 14:17

Ответ: Depth water shader
 
Оставлю пока этот шейдер до лучших времен

Izunad 19.09.2014 20:43

Ответ: Depth water shader
 
По идее если учитывать глубину воды то схема будет такая

прячем плоскость воды
срезаем все что выше воды
рендерим сцену высот (низменость светлая/высота темная)-> сохраняем в текстуру N1 КАРТА ВЫСОТ

далее рендерим эту же сцену с нормальными текстурами -> сохраняем в текстуру N2 КАРТА ПРОЗРАЧНОСТИ/ПРЕЛОМЛЕНИЯ

далее срезаем все что ниже воды
опускаем камеру(важно повернуть правильно)
рендерим ->сохраняем в текстуру N3 КАРТА ОТРАЖЕНИЯ

возвращаем камеру плоскость воды
начинаем рендерить смешивая три выше подготовленые текстуры

Естественно в последнем рендере координаты текстур являются проекционными, то есть ориентируемся по экрану

Код:

VS
OUT.Position = mul(IN.Position, matrixWorldViewProject);
OUT.TexProj.x = 0.5f*(OUT.Position.w+OUT.Position.x);
OUT.TexProj.y = 0.5f*(OUT.Position.w-OUT.Position.y);
OUT.TexProj.z = OUT.Position.w;


PS
tex2D(TextureSampler,IN.TexProj.xy/IN.TexProj.z)

Важно так же учитывать что карту высот вы будете делать через шейдер на той же модели где лежат нормальные текстуры, отсюда следует что для модели надо подготовить шейдер с двумя эффектами


Часовой пояс GMT +4, время: 03:09.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot