一、SubShader的Tag:
1、RenderType(渲染什么样的类型)
"Opaque":渲染不透明的物体
"Transparent":渲染透明物体
"BackGround":主要用于天空盒
"Overlay":GUI、镜头光晕
2、Quene
"BackGround" = 1000,可以用于天空盒
"Geometry" = 2000 按空间位置从远到近进行渲染(大部分的物体都在这个队里包括不透明的)
"AlphaTest" = 2450 已进行AlphaTest的物体在这个队列
"Transparent" = 3000 透明物体
"Overlay" = 4000 镜头光晕
我们也可以自定义值,比如"Quene" = "BackGround+100"
3、ForceNoShadowCasting
为true时不接受阴影
4、IgnoreProjector
不接受Projector组件的投影
一帧的渲染队列的生成,依次取决于每个物体的Shader的RenderType tag--Render.sortingLayerID--Render.SortingOrder-Material.renderQueue(默认值为Shader里的"Quene"),Transform.z(默认值从前到后,但当Quene是"Transparent"的时候,按Z值从后到前)
二、LOD
Level of Detail的缩写,在硬件比较差的系统上,可以设置一个比较低点的值,减少细节的显示,Unity内置shader的LOD值如下:
- VertexLit kind of shaders = 100
- Decal, Reflective VertexLit = 150
- Diffuse = 200
- Diffuse Detail, Reflective Bumped Unlit, Reflective Bumped VertexLit = 250
- Bumped, Specular = 300
- Bumped Specular = 400
- Parallax = 500
- Parallax Specular = 600
三、Shader核心编程
LightModel:光照模型
Lambert:该光照模型能很好的表示粗糙表面的光照,但不能表现出镜面反射高光
Toon:最近在游戏中常用的风格之一即是Toon shading(又称 cel shading).这是一种非逼真渲染风格,通过改变了光在一个模型上反射实际情况来给人以手绘的感觉
BlinnPhong:仿真镜面反射材料
Standard:Unity5中默认的光照模式是Standard, 其引入了 物理渲染 (PBR), 但是与其它光照模型没有什么不同。相比于朗伯反射, PBR提供了一个更加逼真的光线物体作用模型,PBR考虑了材料的物理属性, 比如能量守恒以及光的散射
SurfaceOutput
struct SurfaceOutput{
fixed3 Albedo; // diffuse color 漫反射的颜色值。
fixed3 Normal; // tangent space normal, if written 法线坐标
fixed3 Emission; //自发光颜色
half Specular;// specular power in 0..1 range 镜面反射系数
fixed Gloss; // specular intensity 光泽系数
fixed Alpha; // alpha for transparencies 透明度系数
};