分享一个基本的顶点片段着色器,可以实现纹理采样。目前没有加入光照和阴影效果。
这个Shader可以作为基本的模板,进行更加细节的修改与开发。这里就简单分享一下吧。
Shader "Unlit/unlit"
{
Properties
{
//定义基本属性,可以从编辑器里面进行设置的变量
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
//在CGPROGRAM代码块中写自己的处理过程
CGPROGRAM
//定义顶点函数和片段函数的入口分别为vert和frag
#pragma vertex vert
#pragma fragment frag
//包含基本的文件,里面有一些宏定义和基本函数
#include "UnityCG.cginc"
//从应用程序传入顶点函数的数据结构定义
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
//从顶点函数传入片段函数的数据结构定义
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
//定义贴图变量
sampler2D _MainTex;
float4 _MainTex_ST;
v2f vert (appdata v)
{
v2f o;
//将物体顶点从模型空间换到摄像机剪裁空间,也可采用简写方式——o.vertex = UnityObjectToClipPos(v.vertex);
o.vertex = mul(UNITY_MATRIX_MVP,v.vertex);
//2D UV坐标变换,也可以采用简写方式——o.uv = TRANSFORM_TEX(v.uv, _MainTex);
o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// 进行纹理采样
fixed4 col = tex2D(_MainTex, i.uv);
return col;
}
ENDCG
}
}
}
直接把上面的Shader赋予一个材质,并将该材质拖到一个Cube上,再选择一张贴图。结果就是下面这个样子的。