游戏蛮牛学习群(纯技术交流,不闲聊):959392658
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:565

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 2360|回复: 20

[着色器] Unity 透明视频Shader (能完美过滤视频黑色背景的Shader )

[复制链接]  [移动端链接]
6蛮牛粉丝
1370/1500
排名
1857
昨日变化
4

2

主题

143

帖子

1370

积分

Rank: 6Rank: 6Rank: 6

UID
202689
好友
0
蛮牛币
1586
威望
0
注册时间
2017-1-17
在线时间
527 小时
最后登录
2018-12-11
发表于 2018-4-11 10:37:36 | 显示全部楼层 |阅读模式
20蛮牛币
做AR项目的时候需要将现实和UI结合在一起,但是视频透明没有完美弄出来,视频透明总是会将视频里面的内容也透明一些,不能完美的将黑色背景透明了,如下图所示:
QQ截图20180411103149.jpg

而把视频用视频播放器打开(原始样式),如图所示:
QQ截图20180411103239.jpg

对比下两个人物有色差,这该怎么解决?

回复

使用道具 举报

5熟悉之中
886/1000
排名
18839
昨日变化
8

0

主题

373

帖子

886

积分

Rank: 5Rank: 5

UID
110232
好友
6
蛮牛币
1656
威望
0
注册时间
2015-6-24
在线时间
479 小时
最后登录
2018-12-5
发表于 2018-4-11 10:37:37 | 显示全部楼层
那 就再帮你一次  下次就收费啦啊
Shader "SYN/BlackScreenClipTex" {
        Properties {
                _Color("Alpha Color Key", Color) = (0,0,0,1)
                _MainTex ("Albedo (RGB)", 2D) = "white" {}
                _Range("Range",Range(0,1.01)) = 0.1
        }
        SubShader {
                Tags { "RenderType"="Opaque" }
                LOD 200

                CGPROGRAM
                #pragma surface surf BlinnPhong Alpha Blending
                #pragma target 3.0

                sampler2D _MainTex;

                struct Input {
                        float2 uv_MainTex;
                };

                float _Range;
                float4 _Color;

                void surf (Input IN, inout SurfaceOutput o)
                {
                        half4 cc = tex2D(_MainTex, IN.uv_MainTex);
                        float v = (cc.r + cc.g + cc.b) / 3;
                        v = 1 - v;
                        half4 color = half4(v, v, v, v);
                        float4 oo = float4(1, 0, 0, 0.2);
                        half4 c = color;
                        oo.rgb = c.rgb;
                        if (abs(c.r - _Color.r)<_Range && abs(c.g - _Color.g)<_Range && abs(c.b - _Color.b)<_Range)
                        {       
                                clip(o.Alpha - 1);
                        }
                        else
                        {       
                                o.Emission = cc;
                        }
                }
                ENDCG
        }
        FallBack "Diffuse"
}

回复

使用道具 举报

5熟悉之中
513/1000
排名
5212
昨日变化
1

3

主题

114

帖子

513

积分

Rank: 5Rank: 5

UID
21708
好友
3
蛮牛币
62
威望
0
注册时间
2014-4-16
在线时间
130 小时
最后登录
2018-11-22
发表于 2018-4-12 09:40:17 | 显示全部楼层
不能简单的透明,需要大神支招

回复

使用道具 举报

5熟悉之中
886/1000
排名
18839
昨日变化
8

0

主题

373

帖子

886

积分

Rank: 5Rank: 5

UID
110232
好友
6
蛮牛币
1656
威望
0
注册时间
2015-6-24
在线时间
479 小时
最后登录
2018-12-5
发表于 2018-4-12 10:28:27 | 显示全部楼层
你那个视频的背景你确定是(0,0,0,0)的纯黑色吗,如果是那还好说,不是那你就得写固定颜色背景抠图的逻辑了

回复

使用道具 举报

5熟悉之中
886/1000
排名
18839
昨日变化
8

0

主题

373

帖子

886

积分

Rank: 5Rank: 5

UID
110232
好友
6
蛮牛币
1656
威望
0
注册时间
2015-6-24
在线时间
479 小时
最后登录
2018-12-5
发表于 2018-4-12 10:31:54 | 显示全部楼层
你可以用你的 Alpha 通道 乘以 你uv的rgb的平均值来试试
[发帖际遇]: 小小游戏梦 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

5熟悉之中
886/1000
排名
18839
昨日变化
8

0

主题

373

帖子

886

积分

Rank: 5Rank: 5

UID
110232
好友
6
蛮牛币
1656
威望
0
注册时间
2015-6-24
在线时间
479 小时
最后登录
2018-12-5
发表于 2018-4-12 10:32:59 | 显示全部楼层
小小游戏梦 发表于 2018-4-12 10:31
你可以用你的 Alpha 通道 乘以 你uv的rgb的平均值来试试

这是我能想出 你最好理解 最投机的办法了

回复

使用道具 举报

5熟悉之中
886/1000
排名
18839
昨日变化
8

0

主题

373

帖子

886

积分

Rank: 5Rank: 5

UID
110232
好友
6
蛮牛币
1656
威望
0
注册时间
2015-6-24
在线时间
479 小时
最后登录
2018-12-5
发表于 2018-4-12 10:56:21 | 显示全部楼层
办法已经放到附件的图片里了,我这里用的是你发的那张jpg所以没办法变透明,我用了白色代替,你只要换回clip那个方法就可以了
QQ图片20180412105408.png

回复

使用道具 举报

5熟悉之中
886/1000
排名
18839
昨日变化
8

0

主题

373

帖子

886

积分

Rank: 5Rank: 5

UID
110232
好友
6
蛮牛币
1656
威望
0
注册时间
2015-6-24
在线时间
479 小时
最后登录
2018-12-5
发表于 2018-4-12 11:00:15 | 显示全部楼层
那今个心情好 送佛送到西  自己看附件图片吧
QQ图片20180412105907.png
[发帖际遇]: 小小游戏梦 被钱袋砸中进医院,看病花了 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1370/1500
排名
1857
昨日变化
4

2

主题

143

帖子

1370

积分

Rank: 6Rank: 6Rank: 6

UID
202689
好友
0
蛮牛币
1586
威望
0
注册时间
2017-1-17
在线时间
527 小时
最后登录
2018-12-11
 楼主| 发表于 2018-4-12 11:29:38 | 显示全部楼层
小小游戏梦 发表于 2018-4-12 11:00
那今个心情好 送佛送到西  自己看附件图片吧

QQ截图20180412111540.jpg
不行的,变成这样了

回复

使用道具 举报

5熟悉之中
886/1000
排名
18839
昨日变化
8

0

主题

373

帖子

886

积分

Rank: 5Rank: 5

UID
110232
好友
6
蛮牛币
1656
威望
0
注册时间
2015-6-24
在线时间
479 小时
最后登录
2018-12-5
发表于 2018-4-12 11:58:21 | 显示全部楼层
你不会 自己找找 边缘吗  把每个被clip掉的 uv 在自己的8方向上 采个样 看看自己是不是应该被剔除,还有 那个黑色 你自己改个自发光不就解决了

回复

使用道具 举报

3偶尔光临
157/300
排名
24816
昨日变化
9

2

主题

53

帖子

157

积分

Rank: 3Rank: 3Rank: 3

UID
162813
好友
0
蛮牛币
225
威望
0
注册时间
2016-8-17
在线时间
77 小时
最后登录
2018-8-1
发表于 2018-4-12 12:24:04 | 显示全部楼层
如果背景颜色跟主体颜色绝对不同的时候就在shader里面判断如果是背景颜色就透明。如果背景颜色和主体颜色可能存在相同的情况,只能使用模板了
[发帖际遇]: Mailko 乐于助人,奖励 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

4四处流浪
301/500
排名
8257
昨日变化
3

0

主题

61

帖子

301

积分

Rank: 4

UID
40761
好友
1
蛮牛币
556
威望
0
注册时间
2014-8-19
在线时间
99 小时
最后登录
2018-12-6
QQ
发表于 2018-4-12 16:42:40 | 显示全部楼层
https://blog.csdn.net/u011017980/article/details/79858429

回复

使用道具 举报

6蛮牛粉丝
1370/1500
排名
1857
昨日变化
4

2

主题

143

帖子

1370

积分

Rank: 6Rank: 6Rank: 6

UID
202689
好友
0
蛮牛币
1586
威望
0
注册时间
2017-1-17
在线时间
527 小时
最后登录
2018-12-11
 楼主| 发表于 2018-4-13 09:40:14 | 显示全部楼层
myth 发表于 2018-4-12 16:42
https://blog.csdn.net/u011017980/article/details/79858429

这个跟我那个差不多,还是把所有的透明化 QQ截图20180413093952.jpg

是不是我的参数错了?

回复

使用道具 举报

3偶尔光临
220/300
排名
10666
昨日变化
3

0

主题

62

帖子

220

积分

Rank: 3Rank: 3Rank: 3

UID
191422
好友
0
蛮牛币
395
威望
0
注册时间
2016-12-12
在线时间
64 小时
最后登录
2018-12-10
发表于 2018-4-17 10:00:49 | 显示全部楼层
报个这样的错:Unrecognized #pragma surface directive: Alpha at line 12

回复

使用道具 举报

6蛮牛粉丝
1370/1500
排名
1857
昨日变化
4

2

主题

143

帖子

1370

积分

Rank: 6Rank: 6Rank: 6

UID
202689
好友
0
蛮牛币
1586
威望
0
注册时间
2017-1-17
在线时间
527 小时
最后登录
2018-12-11
 楼主| 发表于 2018-4-17 10:57:42 | 显示全部楼层
雨落随风 发表于 2018-4-17 10:00
报个这样的错:Unrecognized #pragma surface directive: Alpha at line 12

没有错啊,你哪里写错了吧

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表