带透明通道贴图旋转UV

原创 2016年08月31日 15:28:59
Shader "YouXiDao111/AlphaSimple"
{


Properties
{
_Color("Base Color", Color) = (1,1,1,1)
_MainTex("Base(RGB)", 2D) = "white" {}
_RSpeed("RotateSpeed", Range(1, 100)) = 30 //旋转速度
}
SubShader
{
//贴图带透明通道 ,半透明效果设置如下:
tags{"Queue"= "Transparent" "RenderType"="Transparent" "IgnoreProjector" = "True"}
//"Queue "多写了个空格就没透明效果了老子找了一个小时的错误。。。。。。
Blend  SrcAlpha OneMinusSrcAlpha           //Blend选值为: SrcAlpha 和1-SrcAlpha  //也可测试为 DstColor SrcColor    //one one            

Pass
{
Name "Simple"
Cull off //双面


CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"

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

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

struct v2f
{
float4 uv : TEXCOORD0;
float4 pos : POSITION;
};

v2f vert (appdata v)
{
v2f o;
o.pos =  mul(UNITY_MATRIX_MVP, v.vertex); // unity5.4版本之上  UnityObjectToClipPos(v.vertex)
o.uv = v.texcoord; // 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;
}

half4 frag (v2f i) : COLOR
{
float2 uv = i.uv.xy - float2(0.5, 0.5);   //uv原点转移到UV中心点
// θ旋转角度  UV旋转 (xcosθ - ysinθ,xsinθ+ycosθ)
  uv = float2(uv.x * cos(-_RSpeed * _Time.x) - uv.y * sin(-_RSpeed * _Time.x), 
uv.x * sin(-_RSpeed * _Time.x) + uv.y * cos(-_RSpeed * _Time.x));
//UV中心转移回原来原点位置
uv += float2(0.5, 0.5); 
half4 c = tex2D(_MainTex , uv) * _Color;
return c;


// float2 uv = i.uv.xy -0.5;
// half4 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,0为false//UNITY_APPLY_FOG(i.fogCoord, col);
// return col;
}
ENDCG
}
}

}

运行就可以看到效果了(想顺时针还是逆时针都可以改θ的正负)


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

相关文章推荐

UNITY3D shader代码例子<三> shader旋转动画

Shader "Custom/RotateShader" {               Properties        {     &...

【Unity Shaders】Using Textures for Effects——通过修改UV坐标来滚动textures

题外话 新年第一篇!在此就献给了这个系列。马上就可以放假回家了,虽然还有一些事情需要处理,但是能和家人团聚实在是件很难得的事了。希望所有朋友也能记得多回家看看,借最近很热门的电影《私人定制》(我没...

unity3d对材质球的uv进行平移,缩放和旋转

平移和缩放比较好解决: 平移:  v2 = new Vector2(0f,v);

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

不带贴图(或贴图为纯白色)效果 Shader "YouXiDao/AlphaSimple" { Properties { _MainTex ("Texture", 2D) = "white" {...

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

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

UV动画/纹理融合/法线贴图/过程纹理

让VS支持Shaderlab语法VS2013中并没有Shaderlab的语法高亮,好在网上已经有个插件来支持语法的高亮和拼写提示,从这里下载插件,双击安装就好了。ShaderlabVS - https...

maya uv、贴图传递 mel

shader学习之路(2)- 贴图uv移动模拟水流效果

前言 在游戏中,水流效果是十分常见的,实现的原理除开真实流体计算以外,还有一种简易的方式实现简单的水流效果,即通过移动贴图的UV坐标,在静态的物体贴图上模拟出水流效果。

Nuke下实现UV 贴图重复(整数形态)

在Maya 程序中有 UV重复纹理贴图功能: 在Nuke 中找不到现成对应的贴图重复功能。尤其在贴图需要大批量的重复度时,尤其麻烦。以下就是 Nuke节点加上自定义的表达式,实现贴图...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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