透明通道图纹理贴图渐变色效果

原创 2016年08月30日 14:41:32




Shader "YouXiDao/AlphaSimple"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_Color("Main Color", Color) = (1, 1, 1, 1)
}
SubShader
{
Tags { //贴图带透明通道 ,半透明效果设置如下:
"Queue"= "Transparent" 
"RenderType"="Transparent" 
"IgnoreProjector" = "True"
}

Pass
{
Cull off
fog{Mode Off} //雾效关闭,半透明效果用Blend
Blend  SrcAlpha OneMinusSrcAlpha           //Blend选值为: SrcAlpha 和1-SrcAlpha  //也可测试为 DstColor SrcColor    //one one            
ZWrite Off

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
//#pragma multi_compile_fog
#pragma multi_compile_instancing
#include "UnityCG.cginc"

sampler2D _MainTex;//变量使用前声明
float4 _Color;

struct appdata
{
float4 vertex : POSITION;//模型顶点坐标
float2 uv : TEXCOORD0;//模型纹理坐标
float3 normal:NORMAL;//模型法线
float4 color : COLOR;    //模型不带顶点颜色情况下为白色
};

struct v2f
{
float4 uv : TEXCOORD0;
//UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
float4 col :COLOR;
};

v2f vert (appdata v)
{
v2f o;
o.vertex =  mul(UNITY_MATRIX_MVP, v.vertex);//unity5.4版本之上  UnityObjectToClipPos(v.vertex)
o.uv = float4(v.uv.xy,0,0);//TRANSFORM_TEX(v.uv, _MainTex);
o.col = v.vertex +0.5;                      // 根据顶点坐标设置颜色(颜色设置小于0部分为0,大于1部分为1)。
//还可以根据法线设置颜色 o.col =  float4(v.normal *0.5 +0.5, 1.0);根据UV坐标设置颜色o.col =  float4(v.uv,0.0,1.0) B蓝色部分为0
return o;
}

fixed4 frag (v2f i) : SV_Target
{
// sample the texture
half4 col =  i.col * _Color * tex2D(_MainTex, i.uv) ;  //颜色结果为:顶点颜色X我们设置的颜色X纹理贴图颜色
// if(any(saturate(i.uv)-i.uv))//saturate:如果 x 小于 0 ,返回 0 ;如果 x 大于 1 ,返回 1 ;否则,返回 x
// col.b=0.5; //UV坐标0-1之外的部分蓝色为0.5// apply fog //any,非0为true,为false//UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
}



//Blend  SrcAlpha OneMinusSrcAlpha      注释掉之后不带透明效果


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

unity3d 纹理贴图移动特效产生岩浆、瀑布效果

shader处理纹理贴图移动特效产生岩浆、瀑布效果
  • wolf96
  • wolf96
  • 2014-12-08 11:07
  • 5733

【C++ OpenGL ES 2.0编程笔记】4: 纹理贴图-图片叠加效果实现

本文介绍了如何使用C++语言和OpenGL ES 2.0 API实现纹理图片的叠加显示效果
  • elloop
  • elloop
  • 2016-01-04 21:44
  • 3032

Unity Shaders and Effects Cookbook (2-1) 修改 UV 坐标实现纹理贴图的滚动 模拟水流效果

昨天加班晚了,困。刚爬起来翻开书学习这一节。这一节是摘抄自Unity Shader and Effect Cookbook 上面的 2.2 节。这书写的简单易懂,每天花一点时间学习一小节,慢慢来。 ...

opengl es纹理贴图效果实例

一、先准备好一张用来贴图的照片 二、纹理效果代码: gl.glEnable(GL10.GL_TEXTURE_2D); // 创建纹理 gl.glGenT...

OpenGL 两个纹理贴图

  • 2015-09-23 19:26
  • 11.44MB
  • 下载

android opengl 纹理贴图

  • 2015-01-22 11:41
  • 78KB
  • 下载

qt5_qml_Opengl_shader 第四弹----------------------纹理贴图(YUV视频循环播放)

openglunderqml6 将初始化放在一个函数里,, 首先初始化操作,注意一定不能把gentexture写到循环里边,这样会导致gpu内存溢出(另外关于顶点的定义有时可以直接写在...

OpenGL纹理贴图实验代码

  • 2010-07-11 06:55
  • 10KB
  • 下载

【GLSL教程】(八)纹理贴图

简单的纹理贴图(Simple Texture) 为了在GLSL中应用纹理,我们需要访问每个顶点的纹理坐标。GLSL中提供了一些属性变量,每个纹理单元一个: attribute vec4 gl_Mu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)