Шейдер для проигрывания видео без фона

Шейдеры и все-все-все.

Re: Шейдер для проигрывания видео без фона

Сообщение novavision 18 июл 2015, 11:23

Буду разбираться... спасибо за помощь с шейдером. Надо бы как-нибуь взяться изучить базу для их написания, хотябы простых под такие нужды
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

Re: Шейдер для проигрывания видео без фона

Сообщение novavision 22 июл 2015, 08:54

вообще как ни странно, но ваш шейдер работает в Vuforia. Единственное я не могу настроить координаты смещения... Помогите пожалуйста
на картинке на верхнем плейне это первый ваш вариант, а на нижней - второй
Изображение
Первый был
Синтаксис:
Используется csharp
v.texcoord.y = clamp(v.texcoord.y, 0.5, 1.0);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);

v.texcoord1.y = clamp(v.texcoord1.y, 0.0, 0.5);
o.texcoord1 = TRANSFORM_TEX(v.texcoord1, _MainTex);
 

а второй
Синтаксис:
Используется csharp
v.texcoord.x = clamp(v.texcoord.x, 0.0, 0.5);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);

v.texcoord1.x = clamp(v.texcoord1.x, 0.5, 1.0);
o.texcoord1 = TRANSFORM_TEX(v.texcoord1, _MainTex);
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

Re: Шейдер для проигрывания видео без фона

Сообщение DbIMok 22 июл 2015, 15:26

UV координаты
Изображение
соответствуют XY в коде шейдера. texcoord - координаты, откуда берется RGB, texcoord1 - координаты Alpha. у вас похоже, видео дублировано по Х, только координаты берутся неправильно. возможно должно быть
Синтаксис:
Используется csharp
v.texcoord.x = clamp(v.texcoord.x, 0.5, 1.0);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);

v.texcoord1.x = clamp(v.texcoord1.x, 0.0, 0.5);
o.texcoord1 = TRANSFORM_TEX(v.texcoord1, _MainTex);
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Шейдер для проигрывания видео без фона

Сообщение novavision 22 июл 2015, 17:44

ну да, по координатам то я понял, но я не могу понять саму логигу метода clamp
Синтаксис:
Используется csharp
genType clamp(  genType x,
        genType minVal,
        genType maxVal);
 

clamp returns the value of x constrained to the range minVal to maxVal. The returned value is computed as min(max(x, minVal), maxVal).


Смещение там действительно идет по X, на 0.5 - то есть нормальное изображение слева, а маска справа
отсюда следуют что значения должны быть такими
Синтаксис:
Используется csharp
v.texcoord.x = clamp(v.texcoord.x, 0.0, 0.5);
o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
                               
v.texcoord1.x = clamp(v.texcoord1.x, 0.5, 1.0);
o.texcoord1 = TRANSFORM_TEX(v.texcoord1, _MainTex);


но почему тогда результат следующий (ваш вараинт сверху, мой внизу) Я развернул видео как оно в оригинале
Скрытый текст:
Изображение
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

Re: Шейдер для проигрывания видео без фона

Сообщение DbIMok 22 июл 2015, 17:52

попробуйте на Quad'e
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Шейдер для проигрывания видео без фона

Сообщение novavision 22 июл 2015, 18:00

не поулчается все равно
Изображение

Я модифицировал шейдер, поставил на него скролы для регулировки.. Как ни кручу, все равно не выходит
shader setup example.unitypackage
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

Re: Шейдер для проигрывания видео без фона

Сообщение DbIMok 22 июл 2015, 18:39

Изображение
с таким
Синтаксис:
Используется csharp
                                v.texcoord.x = clamp(v.texcoord.x, 0.0, 0.5);
                                o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);

                                v.texcoord1.x = clamp(v.texcoord1.x, 0.5, 1.0);
                                o.texcoord1 = TRANSFORM_TEX(v.texcoord1, _MainTex);

для Plane шейдер не подходит, нужен другой
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Шейдер для проигрывания видео без фона

Сообщение novavision 22 июл 2015, 18:58

а что изменили то?
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

Re: Шейдер для проигрывания видео без фона

Сообщение DbIMok 22 июл 2015, 19:11

все аналогично моему предыдущему примеру кроме координат в шейдере
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Шейдер для проигрывания видео без фона

Сообщение novavision 22 июл 2015, 19:56

делая одни и те же действия, результат разный. Делал обычный сквад, как и ваш, но при этом импортнув ваш префаб все заработало.
Но к сожаления Vuforia не проирывает на squad. Есть ли способ переделать подобный шейдер? Я вообще в замешательстве... под юнити рподобных решений еще нет
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

Re: Шейдер для проигрывания видео без фона

Сообщение DbIMok 22 июл 2015, 20:30

подобный - в смысле для Plane? по сути это то же самое, но из-за того что вертексов больше, расчеты немного другие
Синтаксис:
Используется csharp
                                v.texcoord.x = v.texcoord.x * 0.5;
                                o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);

                                v.texcoord1.x = v.texcoord.x + 0.5;
                                o.texcoord1 = TRANSFORM_TEX(v.texcoord1, _MainTex);

TestSplitAlpha.zip
У вас нет доступа для просмотра вложений в этом сообщении.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Шейдер для проигрывания видео без фона

Сообщение novavision 22 июл 2015, 22:06

Огромнейшее спасибо, наконец заработало! Даже и не верится...
На обычный плейн, помещенный в объект, все равно не хотело заводится, в вот на стандартный Vuforia VideoPlayback все пошло на ура. Хотя ничем не отдичаются.. мистика
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

Re: Шейдер для проигрывания видео без фона

Сообщение DbIMok 22 июл 2015, 22:14

вероятно, у "обычного" плейна что-то не так с UV координатами
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Шейдер для проигрывания видео без фона

Сообщение novavision 03 авг 2015, 11:21

Тут вскрылся баг непонятный в iOS билде... Почему то при автоповороте пропадает Vuforia камера и фон становится черным. Смотрел решения, подсказывали отключить в настройках Metal
Изображение
и оставить только OpenGLES2.0. Это сработало, но при таком раскладе видео с прозрачностью проигрывается без прозрачности.
Вот тут возникает вопрос про ваш шейдер - он не должен был работать под OpenGLES? Можно ли его адаптировать?
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

Re: Шейдер для проигрывания видео без фона

Сообщение DbIMok 03 авг 2015, 13:51

всегда работал. будет время, проверю. но скорее всего, у меня все будет работать.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Пред.След.

Вернуться в Shader Lab

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

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