第一个shader 程序

来源:互联网 发布:淘宝美潮店铺推荐 编辑:程序博客网 时间:2024/05/21 17:06
Shader "Custom/SimpleDev1"
{
Properties{//属性
_MainTex("Base(RGB)",2D)="white"{}//定义贴图属性接口
_Color("Base Color",Color)=(1,1,1,1)//定义颜色属性接口
_Rspeed("RotateSpeed",Range(1,100))=30//定义滑块属性接口
}
SubShader{
tags{"Queue"="Transparent" "RenderType"="Transparent" "IgnoreProjector"="True"}
Blend SrcAlpha OneMinusSrcAlpha
Pass{
Name "SimpleDev1"
Cull off //双面显示
CGPROGRAM
// Upgrade NOTE: excluded shader from DX11 and Xbox360; has structs without semantics (struct v2f members _RSpeed)
#pragma exclude_renderers d3d11 xbox360
#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;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
o.uv=v.texcoord;
return o;
}
half4 frag(v2f i):COLOR{
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);//实现旋转xsinθ-ysinθ,xsinθ+ycosθ
uv+=float2(0.5,0.5);//恢复到原来的位置
half4 c=tex2D(_MainTex,uv)*_Color;//颜色与贴图相乘
//half4 c=i.col;
return c;
}
ENDCG
}
}
}
原创粉丝点击