Unity Shader语法总结

1.unity中有两个渲染相关的组件:
mesh Filter用来存储一个网格mesh,网格是由三角面组成的,其中存储了三角面的一些顶点信息。
mesh renderer 用来渲染外观,这个必须要有的,可以指定材质(shader+贴图),贴图不是必要的。
2.shader是通过openGL,directX来进行编译运行的。openGL使用GLSL来编写shader,dx使用HLSL来编写shader。但是英伟达的CG实现了跨平台,所以unity对CG进行了封装,封装成了shaderLab。
3.三种着色器:
表面着色器:Surface Shader(比较简单,是封装好的,适用于多光源的处理)
顶点/片元着色器:Vertex/Fragment Shader(基础底层,其他两种都是在它基础上进行封装,可以实现更多的功能)
固定函数着色器:Fixed Function Shader(老一代显卡,几乎不使用)
4.shader的基本框架

Shader “myshader”{
Properties{
_Color(“Color”,Color)=(1,1,1,1)
_Vector(“Vector”,Vector)=(1,1,1,1)
_Int(“Int”,Int)=4
_Float(“Float”,Float)=4.4
_Range(“Range”,Range(1,11))=6
_Cube(“Cube”,Cube)=“white”{}
_2D(“Texture”,2D)=“red”{}
_3D(“Texture”,3D)=“black”{}
}
SubShader{
Pass{
CGPROGRAM
float4 _Color;
float3 _t1;
float2 _t;
float _Int;
float _Range;
float _Float;
sampler2D _2D;
samplerCube _Cube;
sampler3D _3D;
#pragma vertex vert
//顶点函数,这里只是声明了顶点函数的函数名
//基本作用:从模型空间转换成裁剪空间(从游戏环境转换成视野屏幕上)
#pragma fragment frag
//片元函数,这里只是声明了片元函数的函数名
//基本作用:返回模型对应屏幕上的每一个像素的颜色值
ENDCG
}
}
Fallback “VertexLit”
}

猜你喜欢

转载自blog.csdn.net/qq842447820/article/details/82954918