4.《unityshader中级篇》Unity Shader内置文件、变量和语义

1、Unity提供的内置文件和变量

我们知道一个简单的顶点/片元着色器很简单。复杂的着色器可能需要我们处理法线,光照,阴影等。为了方便开发者的编码,Unity提供了很多内置文件,包含了提前定义的函数、变量和宏等。下面我们逐一讲解。

内置包含文件:类似于C++的include。在Unity中,包含文件的后缀是.cginc。这样我们就可以使用该包含文件为我们提供的变量和函数。写法如下:

CGPROGRAM

//...

#include "UnityCG.cginc"

//...

EndCG

CGIncludes文件夹中包含的是内置的包含文件。我们以后需要常去查阅一些内置函数的写法,就在这里找对应的包含文件。

2.CGIncludes中主要的包含文件及其用处

文件名 概要
UnityCG.cginc 我们常用的结构体和函数基本都在里面
UnityShaderVariables.cginc 即使我们没用#include包含进来,它们也会自动包含进来,例如UnityShaderVariables.cginc里的UNITY_MATRIX_MVP,我们可以直接用
HLSLSupport.cginc 即使我们没用#include包含进来,它们也会自动包含进来
Lighting.cginc 包含了内置的一些光照模型 ,编写表面着色器会被自动包含进来

3.UnityCG.cginc是最常接触的包含文件。我们常用的结构体和函数基本都在里面。例如,我们可以直接使用其中预定义的结构体作为顶点着色器的输入和输出,如下:

名称 描述 包含的信息
appdata_base 可用于顶点着色器输入 顶点位置,法线,第一组纹理坐标
appdata_tan 可用于顶点着色器输入 顶点位置,法线,切线,第一组纹理坐标
appdata_full 可用于顶点着色器输入 顶点位置,法线,切线,四组纹理坐标
v2f_img 可用于顶点着色器输出 裁剪空间中的位置,纹理坐标
appdata_img 可用于顶点着色器输入 顶点位置,第一组纹理坐标

点击关注我的微博,给大家带来欢乐

你可能感兴趣的:(4.《unityshader中级篇》Unity Shader内置文件、变量和语义)