开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:517

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

_____________________________________________________________________________________________________________
问答求助版块规则:

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

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

[复制链接]  [移动端链接]
5熟悉之中
885/1000
排名
3312
昨日变化
19

2

主题

135

帖子

885

积分

Rank: 5Rank: 5

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

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

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

回复

使用道具 举报

5熟悉之中
719/1000
排名
17399
昨日变化
7

0

主题

315

帖子

719

积分

Rank: 5Rank: 5

UID
110232
好友
5
蛮牛币
1290
威望
0
注册时间
2015-6-24
在线时间
372 小时
最后登录
2018-4-26
发表于 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"
}

回复

使用道具 举报

4四处流浪
449/500
排名
5120
昨日变化
5

3

主题

106

帖子

449

积分

Rank: 4

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

回复

使用道具 举报

5熟悉之中
719/1000
排名
17399
昨日变化
7

0

主题

315

帖子

719

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

5熟悉之中
719/1000
排名
17399
昨日变化
7

0

主题

315

帖子

719

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

5熟悉之中
719/1000
排名
17399
昨日变化
7

0

主题

315

帖子

719

积分

Rank: 5Rank: 5

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

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

回复

使用道具 举报

5熟悉之中
719/1000
排名
17399
昨日变化
7

0

主题

315

帖子

719

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

5熟悉之中
719/1000
排名
17399
昨日变化
7

0

主题

315

帖子

719

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

5熟悉之中
885/1000
排名
3312
昨日变化
19

2

主题

135

帖子

885

积分

Rank: 5Rank: 5

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

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

回复

使用道具 举报

5熟悉之中
719/1000
排名
17399
昨日变化
7

0

主题

315

帖子

719

积分

Rank: 5Rank: 5

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

回复

使用道具 举报

2初来乍到
136/150
排名
24255
昨日变化
11

2

主题

52

帖子

136

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

3偶尔光临
191/300
排名
10900
昨日变化
8

0

主题

49

帖子

191

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

5熟悉之中
885/1000
排名
3312
昨日变化
19

2

主题

135

帖子

885

积分

Rank: 5Rank: 5

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

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

是不是我的参数错了?

回复

使用道具 举报

3偶尔光临
153/300
排名
11929
昨日变化
7

0

主题

45

帖子

153

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

5熟悉之中
885/1000
排名
3312
昨日变化
19

2

主题

135

帖子

885

积分

Rank: 5Rank: 5

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

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

回复

使用道具 举报

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

本版积分规则

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