《Unity Shader入门精要》学习关键词
第2章 渲染流水线[*]渲染流水线的过程
[*]应用,几何,光栅化各自干的事情,和每阶段的输入输出
[*]前者具体到CPU和GPU上是干什么的
[*]顶点着色器,片元着色器
[*]模板测试,深度测试,混合
第3章 Unity Shader 基础
[*]Shader和材质的关系
[*]Shader结构->Shader,Properties,SubShader,Tags,RenderStep,Pass,FallBack
[*]Vertex shader和Fragment shader
[*]CG/HLSL加ShaderLab怎么写Shader
[*]表面着色器,顶点/片元着色器,固定函数着色器
[*]随意写的简单Unity Shader代码模板,如下
Shdaer "shader类别/shader名字" {
Properties {
_name1 ("dispaly name", PropertyType) = DfaultValue
_name2 ("dispaly name", PropertyType) = DfaultValue
//假设有纹理
_MainTex ("Texture", 2D) = "white" {}
}
//显示器会选择可以运行的SubShader
SubShader {
//常见LOD 200
Pass {
CGPROGRAM
//表示顶点着色器程序为vert,片元着色器程序为frag
//包含的"UnityCG.cginc"文件提供appdata结构以及一些常用函数
#pragma vertex vert
#pragma fragment frag
#inlcude "UnityCG.cginc"
//要在程序里调用Properties,要映射到同名变量
PropertyType _name1;
PropertyType _name2;
//假设有纹理,采样需要加下面这句
float4 _MainTex_ST
//这是一个在顶点着色器和片元着色器间传递数据的结构
struct v2f{
float4 pos:SV_POSITION;//表示这是MVP矩阵后输出的顶点坐标
float2 uv:TEXCOORD0;//表示这是顶点的纹理坐标
fixed3 color:COLOR0;//表示这是顶点的颜色,0表示第0组
}
v2f vert(appdata_full v) //或appdata_base等
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);//模型转世界转观察转裁剪/视口(坐标系)
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);//加上材质球的tiling和offset
o.color = (1, 0.5, 0.5);//随意定一个颜色
return o;//顶点着色器核心任务,输出经过MVP矩阵后的顶点
}
fixed4 frag(v2f i):SV_Target//输出要渲染的目标颜色
{
fixed4 texcol = tex2D(_MainTex, i.uv);//用纹理坐标从纹理上取纹素
//中间有一些改变颜色的操作,如texcol.rgb= fixed3(0.5, 0.5, 1);
//或者不取纹理的颜色,return fixed4(i.color, 1)
return texcol;//片元着色器核心任务,返回渲染的颜色
}
ENDCG
{
Pass {
//其他Pass
}
}
SubShader{
//其他SubShader
}
FallBack "Diffuse"//或FallBack "VertexLit"或FallBack Off
}
第4章 学习Shader所需的数学基础
[*]模型空间,世界空间->左手坐标系,观察空间->右手坐标系
页:
[1]