UnityShader快速入门(2)UnityShader的形式
1. 简介
UnityShader最重要的任务是:指定各种着色器所需的代码
而代码的编写形式有以下三种
2. 长子:顶点/片元着色器
在Unity中我们可以使用CG/HLSL语言来编写顶点/片元着色器(Vertex/Fragment Shader)。
它更复杂也更灵活。
它写在Pass语句块内,格式如下
Shader "Unlit/MyFirstShader"
{
Properties
{
_Color("Color", Color) = (1,1,1,1)
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
ENDCG
}
}
}
#pragma是Unity内置的编绎指令用的命令
在Pass中我们就利用此命令来声明所需要的顶点着色器与片元着色器。
-
#pragma vertexName
定义顶点着色器为*name,*通常情况下会起名为vert。 -
#pragma fragmentName
定义片元着色器为*name,*通常情况下会起名为frag。
2.1 顶点着色器
顶点着色器就是处理顶点的着色器,每个顶点都会执行一次顶点着色器。
例如:
float4 vert(float4 vertex:POSITION):SV_POSITION
{
return UnityObjectToClipPos(vertex);
}
首先呢,我们先来解释下顶点这个函数的结构。
- 顶点着色器函数的名称,在上面我们已经指定了顶点着色器的名称就是vert,所以这里我们必须要用vert作为名称。
- 其中float4 vertex是我们自己定义的一个四维向量,名字叫vertex(名字我们可以随便起),仅仅定义一个四维向量并不能使它拥有我们模型的顶点信息,所以这里我们需要为它指定一个语