Unity一个旋转的Sharder
2015-11-13 21:08
549 查看
如果有看不懂的参数,请参看http://blog.csdn.net/u011244737/article/details/49819751
将Wrap Mode调整成Clamp
应用到的数学知识
Shader "Custom/Simple"
{
//------------------------------------【属性值】------------------------------------
Properties
{
//主颜色
_Color("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"}
//alpha混合
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
//正反面均可显示
Name "Simple"
Cull off
CGPROGRAM
//顶点处理器
#pragma vertex vert
//片断处理器
#pragma fragment frag
#include "UnityCG.cginc"
float4 _Color;
sampler2D _MainTex;
float _RSpeed;
struct v2f
{
float4 pos:POSITION;
float4 uv:TEXCOORD0;
};
v2f vert(appdata_base v)
{
v2f o;
//mul HLSL内置函数 返回输入矩阵的积
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.uv = v.texcoord;
return o;
}
half4 frag(v2f i):COLOR
{
//将中心点设置为(0.5,0.5)
float2 uv=i.uv.xy - float2(0.5,0.5);
float2 rotate=float2(cos(_RSpeed * _Time.x),sin(_RSpeed * _Time.x));
//逆时针旋转
uv=float2(uv.x * rotate.x - uv.y * rotate.y,uv.x * rotate.y + uv.y * rotate.x);
//顺时针旋转 uv=float2(uv.x * rotate.x + uv.y * rotate.y,uv.x * rotate.y - uv.y * rotate.x);
uv += float2(0.5,0.5 );
//tex2D 2D纹理的查询
half4 c= tex2D(_MainTex,uv) * _Color;
return c;
}
ENDCG
}
}
FallBack "Diffuse"
}
将Wrap Mode调整成Clamp
应用到的数学知识
Shader "Custom/Simple"
{
//------------------------------------【属性值】------------------------------------
Properties
{
//主颜色
_Color("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"}
//alpha混合
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
//正反面均可显示
Name "Simple"
Cull off
CGPROGRAM
//顶点处理器
#pragma vertex vert
//片断处理器
#pragma fragment frag
#include "UnityCG.cginc"
float4 _Color;
sampler2D _MainTex;
float _RSpeed;
struct v2f
{
float4 pos:POSITION;
float4 uv:TEXCOORD0;
};
v2f vert(appdata_base v)
{
v2f o;
//mul HLSL内置函数 返回输入矩阵的积
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.uv = v.texcoord;
return o;
}
half4 frag(v2f i):COLOR
{
//将中心点设置为(0.5,0.5)
float2 uv=i.uv.xy - float2(0.5,0.5);
float2 rotate=float2(cos(_RSpeed * _Time.x),sin(_RSpeed * _Time.x));
//逆时针旋转
uv=float2(uv.x * rotate.x - uv.y * rotate.y,uv.x * rotate.y + uv.y * rotate.x);
//顺时针旋转 uv=float2(uv.x * rotate.x + uv.y * rotate.y,uv.x * rotate.y - uv.y * rotate.x);
uv += float2(0.5,0.5 );
//tex2D 2D纹理的查询
half4 c= tex2D(_MainTex,uv) * _Color;
return c;
}
ENDCG
}
}
FallBack "Diffuse"
}
相关文章推荐
- unity 3D 里的刚体属性
- [unity3d]屏幕坐标跟世界坐标的转换
- 一种Unity2D多分辨率屏幕适配方案
- Unity3D共享材质巧妙用法
- 全面理解Unity加载和内存管理
- Unity3d 鼠标拣选小功能集合
- 全面理解Unity加载和内存管理机制之二:进一步深入和细节
- Unity矩阵说明
- Unity3d调用android里的.so
- unity Sharder的格式与参数
- unity5 新布料系统 分析
- Unity 实现Log实时输出到屏幕或控制台上<一>
- Unity 实现Log实时输出到屏幕或控制台上<一>
- Unity 中Token的应用
- 【Unity特效】永恒战士3中的死亡特效
- 通过Unity实现手机本地模型(obj)的读取
- Unity中资源动态加载的几种方式比较
- Visual Studio 2015 Community - Full download (ISO)
- Unity获取GameObject单例
- [Unity热更新]unity5中的assetbundle