问题:

如何让两个透明视频叠加播放

解决播放:

1:使用Unity自带的shader,shader代码如下所示

Shader "Unlit/MaskVideo"
{
Properties
{
_MainTex("MainTex", 2D) = "white" {}
_Mask("Mask", 2D) = "white" {}
_Transparency("Transparency", Range(0, 1)) = 0
_Color("Color", Color) = (0.4485294,0.310013,0.310013,1)
[HideInInspector]_Cutoff("Alpha cutoff", Range(0,1)) = 0.5
} SubShader
{
Tags
{
"IgnoreProjector" = "True"
"Queue" = "Transparent"
"RenderType" = "Transparent"
} Pass
{
Name "FORWARD"
Tags {"LightMode" = "ForwardBase"}
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#define UNITY_PASS_FORWARDBASE
#include "UnityCG.cginc"
#include "UnityPBSLighting.cginc"
#include "UnityStandardBRDF.cginc"
#pragma multi_compile_fwdbase
#pragma exclude_renderers gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2
#pragma target 3.0 uniform sampler2D _MainTex; uniform float4 _MainTex_ST;
uniform sampler2D _Mask; uniform float4 _Mask_ST;
uniform float _Transparency;
uniform float4 _Color; struct VertexInput
{
float4 vertex : POSITION;
float2 texcoord0 : TEXCOORD0;
}; struct VertexOutput
{
float4 pos : SV_POSITION;
float2 uv0 : TEXCOORD0;
}; VertexOutput vert(VertexInput v)
{
VertexOutput o = (VertexOutput)0;
o.uv0 = v.texcoord0;
o.pos = UnityObjectToClipPos(v.vertex);
return o;
} float4 frag(VertexOutput i) : COLOR
{
float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex));
float3 emissive = (_Color.rgb*_MainTex_var.rgb);
float3 finalColor = emissive;
float4 _Mask_var = tex2D(_Mask,TRANSFORM_TEX(i.uv0, _Mask));
return fixed4(finalColor,((lerp(lerp(lerp(_Mask_var.b, _Mask_var.r, _Mask_var.rgb.r), _Mask_var.g, _Mask_var.rgb.g), _Mask_var.b, _Mask_var.rgb.b))*_Transparency));
} ENDCG
} } FallBack "Diffuse"
CustomEditor "ShaderForgeMaterialInspector"
}

 2:准备好格式为两个mp4的视频文件,并且提前下载安装好QuickTime,导入Unity当中,将视频文件由Videoclip改为MovieTexture

3:建立新的Material材质,将编写好的shader使用到材质中去,并将处理好的视频拖入当中

注意 : 上面的视频会遮盖住下面的视频

4:建立plane模型,X旋转90度,将建立好的材质拖到plane模型当中去,用代码控制视频的播放

5:控制代码如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class MovieTextureWithAlphaMask : MonoBehaviour { private MovieTexture mask;
private MovieTexture mainTex; // Use this for initialization
void Start()
{
mask = (MovieTexture)GetComponent<Renderer>().material.GetTexture("_Mask");
mainTex = (MovieTexture)GetComponent<Renderer>().material.GetTexture("_MainTex");
mainTex.Play();
mainTex.loop = true;
mask.Play();
mask.loop = true;
}
}

Unity中带有alpha通道的视频叠加播放的更多相关文章

  1. Unity如何播放带有alpha 通道的视频

    问题: 当使用Video Player播放带有alpha 通道的视频时带有黑色背景 解决方式: 使用文件格式为WEBM的视频,对视频文件进行的修改 在RawImage中,将New Render Tex ...

  2. 去除图像中的alpha通道或透明度

    自从appstore提交app改变后,虽然提交的流程还是和原来一样,但是相比以前还是有很大的改动,本来就不太喜欢 English,改版之后很多东西都变了,开发一个app就已经够他妈的蛋疼啦,上传一个a ...

  3. 在wpf中如何让MediaElement的视频循环播放

    原文:在wpf中如何让MediaElement的视频循环播放 MediaElement原始的播放是只播放一遍:如何设置让MediaElement播放 的视频或者音频循环播放,解决如下: 修改Media ...

  4. Unity中播放带有alpha通道格式为Mp4的视频

    问题: Unity中实现播放透明的MP4视频时出现黑点 解决办法:    使用Unity自带的shader去除黑点 1:shader代码如下所示 Shader "Unlit/NewUnlit ...

  5. 带Alpha通道的色彩叠加问题

    css3的rgba色彩模式.png/gif图片的alpha通道.canvas的rgba色彩模式.css3的阴影.css3的opacity属性等等,这些应用在网页中,有意无意间,我们的页面多了许多半透明 ...

  6. mixer中动态Alpha通道处理案例

       本案例处理的是RGB+a,每个色彩的采样为10位位宽. 1.在Mixer IP中打开Alpha Blending Enable 和Alpha Input Stream Enable.这样在Blo ...

  7. Unity 播放 带 alpha 通道的视频(Video Player组件)

    孙广东  2017.6.18 http://blog.csdn.NET/u010019717 通常是  .webm类型文件!!!!!  你可以下载这个文件到本地: Http://tsubakit1.s ...

  8. (转)unity中基于alpha通道的shadow volume实现

    转自:http://blog.163.com/wmk_2000_ren/blog/static/138846192201019114117466/ 实现呢,Aras大神已经给出了, http://fo ...

  9. 【计算机视觉】OPENCV对于有alpha通道的透明背景图片的读取和图片叠加

    这个是我自己做的粗略的螺旋丸的图,导出为png并带有alpha通道. 最后和一只狗合成成这个样子. 效果还是可以的. 为了实现这个效果,首先我们要明白具有透明通道的图片的OpenCV的读取方式.在Op ...

随机推荐

  1. APICloud平台的融云2.0集成

    融云2.0的官方文档地址:http://docs.apicloud.com/端API/开放SDK/rongCloud2 项目须要IM模块,最后还是选择了融云.在iOS原生开发中,融云sdk集成了聊天界 ...

  2. Python开发【第*篇】【Socket网络编程】

    1.Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. so ...

  3. Python数据导入

    1.csv格式数据导入 import pandas as pd w=pd.read.csv("数据地址") w.describe() w.sort_values(by=" ...

  4. jdk、jre、spring、java ee、java se

    1 java se.java ee和java me 这三个是java的标准.java se是根本,java ee建立在java se上,用于server.java me是java se的子集,用于终端 ...

  5. Aaron Swartz Rewriting Reddit中关于web.py的创建思路

    这天才少年居然自杀了,哎 原文点这 So how should things work? The first principle is that code should be clear and si ...

  6. java jmenu的替代方案

    本来想实现一个类似jmenu的窗口,但是发现找了半天也没从L&F中找到实现menu的消失的头绪,最后还是使用了替代方案 使用JDialog来模拟一个menu的窗口,设置 setModel(fa ...

  7. iOS 证书详解

    引言 关于开发证书配置(Certificates & Identifiers & Provisioning Profiles),相信做iOS开发的同学没少被折腾.对于一个iOS开发小白 ...

  8. javaSE基础(一)

    说明: 1)本系列专综合java SE 之基础概念!因为个人觉得,许多知识点的不理解来自于对各种名称与概念的定义的不理解. 2)其中的定义参考来自于Stuart Reges 和 Marty Stepp ...

  9. searchView 颜色 icon 设置

    public void initSearchViewActions() { searchView.setMaxWidth(Integer.MAX_VALUE); searchView.onAction ...

  10. hdnoip2017

    T1: 小喵喵有 n 个小鱼干排成一列,其中第 i个小鱼干有两种属性,美味度 ai 和特殊度 bi 现在小喵喵要吃掉一些小鱼干,出于一些原因,小喵喵会吃掉连续的一段区间中的所有小鱼干. 如果吃掉了 [ ...