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

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

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

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

Добрый день
Дело вот какое - есть ролик в .mp4 где изображен объект на черном фоне.И в этом же видео есть alpha маска для того чтобы спрятать черный фон.
То есть по сути мне надо было внести в шейдер 2 MovieTexture, вторую использовать как маску, со смещением (offset).
пример
Скрытый текст:
Изображение

Я нашел подходящий шейдер в сети, немного переделал и получил, но не тот что нужен. Видео как будто затемненное, и видно "поле" UI ImageRaw элемента, в котором оно играет.
вот картинка
Скрытый текст:
Изображение

Подскажите пожалуйста, как сделать так, чтобы видео было полноцветным, как обычно проигрывается видео в MovieTexture?
Синтаксис:
Используется csharp
Shader "Custom/VideoAlpha"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _AlphaVideo ("Alpha Video(R)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }
    SubShader
    {
    Tags { "Queue"="Transparent" "RenderType"="Transparent" }
        LOD 200
       
        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard alpha
 
        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0
 
        sampler2D _MainTex;
        sampler2D _AlphaVideo;
 
        struct Input {
            float2 uv_MainTex;
            float2 uv_AlphaVideo;
        };
 
        half _Glossiness;
        half _Metallic;
        fixed4 _Color;
 
        void surf (Input IN, inout SurfaceOutputStandard o) {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            fixed4 _alpha = tex2D (_AlphaVideo, IN.uv_AlphaVideo);
            o.Albedo = c.rgb;
            // Metallic and smoothness come from slider variables
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
            o.Alpha = _alpha.r;
           
        }
        ENDCG
    }
    FallBack "Diffuse"
}
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

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

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

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

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

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

Паралелно тестирую на 2 объектах World Space UI c RawImage и обычный Plane. В обоих случаях качество отображения одинаковое, как и описывал выше.
Если я беру любой другой шейдер (например Unlit/Texture) то видео проигрывается в полноцветном варианте как и должно (как в любом видео плеере).
Другого шейдера на прозрачность у меня нет.
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

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

Сообщение waruiyume 17 июл 2015, 17:07

Видео расшарьте.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

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

Сообщение DbIMok 17 июл 2015, 18:54

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

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

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

waruiyume писал(а):Видео расшарьте.

https://drive.google.com/file/d/0B08OQO3Ji1r9VGZYbkhVLWgxSnM/view?usp=sharing



1 и 3 уже до этого изучил вдоль и поперек. 2-ое - попробовал все решения.. не работает ничего. В каких то случаях видео просто не воспроизводится

По пеовой ссылки все ссылаются на шейдер SplitAlpha, но у него ошибка
Синтаксис:
Используется csharp
Shader warning in 'AlphaVideo/MovieWithSeperateAlpha': Both vertex and fragment programs must be present in a CGPROGRAM. Excluding it from compilation. at line 12 (on )


по второй ссылке был комментарий
1) How could it be possible to make this texture "Unlit" ? does someone have the answer ?

You just need to modify line 26 in your shader script from "o.Albedo = c.rgb;" to "o.Emission = c.rgb;"

Тоже не помогает. Материал становится ярко розовым

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

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

Сообщение DbIMok 17 июл 2015, 23:24

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

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

Сообщение novavision 17 июл 2015, 23:43

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

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

Сообщение DbIMok 17 июл 2015, 23:53

в вашем случае в шейдере должно быть
Синтаксис:
Используется 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);

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

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

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

да, теперь на RawTexture все в порядке, в вот на plane опять косяк какой то. А скорей всего мне надо будет как на Plane, чтобы заустить четез Vuforia Playback
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

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

Сообщение DbIMok 18 июл 2015, 00:41

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

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

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

Суть в том что я хочу проигрывать этот ролик с прозрачным фоном в Vuforia Playback на мобильных устройствах. Там используется Plane для рендера видео на его поверхности.
Применить там обычную MovieTexture и вставить в RawImage (world canvas) не получится, т.к. известно что MovieTexture не рабоатет на мобилных устройствах
Аватара пользователя
novavision
UNITрон
 
Сообщения: 158
Зарегистрирован: 05 ноя 2014, 19:21

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

Сообщение DbIMok 18 июл 2015, 00:54

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

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

Сообщение novavision 18 июл 2015, 01:10

я так и подозревал
смотрел в сторону плагинов подешевле
https://www.assetstore.unity3d.com/en/#!/content/32877

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

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

Сообщение DbIMok 18 июл 2015, 03:27

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

След.

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

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

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