自己做个总结先。当然文中很多内容都是从各位大神的文档当中看的。我只是站在巨人的肩膀上。
首先什么是shader?其实就是一个在显示屏当中的显示程序,俗称着色器。它可以定义物体在硬件显示屏当中的显示方式,例如物体颜色和表面贴图,光泽等。貌似3Dmax和maya都有相关的shader程序。本篇基于unity内部的shader总结。
shader在unity的编程当中有3种,1.固定管式shader ;2.可编程shader; 3.surface shader 表面shader。
1.固定功能着色器(Fixed Function Shader)
- Properties
- {
- }
- SubShader
- {
- Pass
- Material
- {
- }
- }
- }
2.表面着色器(Surface Shader)-建议从这块学起。
结构:
Properties
{}
SubShader
{
//渲染类型为Opaque,不透明
Tags { "RenderType" = "Opaque" }
//-------------------开始CG着色器编程语言段-----------------
CGPROGRAM //使用兰伯特光照模式
#pragma surface surf Lambert
//输入结构
struct Input
{
};
void surf (Input IN, inout SurfaceOutput o)
{
}
3.顶点着色器&片段着色器 (Vertex Shader & Fragment Shader)
结构:
Properties{
}
Pass{
Tags{ "LightMode" = "" }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata_t {
};
struct v2f {
};
v2f vert(appdata_t v)
{
}
half4 frag(v2f i) : COLOR
{
}
本文只是初略研究shader,如有错误之处,欢迎大神指点。