1.余弦值和角度成(0-180度) 负相关
点积值和角度成(0-180度) 负相关
2.三种着色器区别
(1)固定管线着色器:比较老的一种着色器,针对高级Shader在老显卡上兼容性不是很友好的时候,使用固定管线
(2)顶点片段着色器:相对来说比较难的着色器,可以实现复杂的视觉效果
(3)表面着色器:unity推荐使用的着色器,底层是顶点片段着色器,unity在基础上进行封装,使用起来比较简单,并且官方处理一些光照效果.
3.着色器书写格式
Shader "着色器名称" //给当前着色器命名
{
Properties
{
//颜色 贴图 颜色区域
}//属性定义
SubShader
{
}//子着色器1
SubShader
{//子着色器2}
...
FallBack"备用着色器名称"
}
4.子着色器和FallBack的关系
程序在执行到第一个子着色器的时候,如果第一个子着色器兼容当前显卡,那么执行第一个子着色器内部代码
后面的子着色器不再执行
如果第一个子着色器不兼容,检查第二个,以此类推...直到有一个子着色器可以使用
如果都不兼容,执行FallBack
5.固定管线属性定义
Properties
{
名称("显示名称",Vector)=(1,1,1,1)//四维向量值
名称("显示名称",Float)=0.1//浮点属性
名称("显示名称",Range(0.02,0.15))=0.07//范围
名称("显示名称",Color)=(1,1,1,1)//颜色
名称("显示名称",2D)=""{}//2D纹理
名称("显示名称",Rect)=""{}//矩形纹理
}
6.表面着色器属性
float:float2 float3 float4
half:浮点型
int:整形
fixed:定点型
bool
Sampler2D:纹理类型
string:
7.模型上颜色的叠加用的是乘法,环境光的叠加用加法
8.边缘高光(描边)
视角和物体的视角向量,观察位置点的法线向量
视角向量和法线向量的夹角 越接近0 越接近中心 越接近90度 越靠近边缘
-->余弦值
视角向量和法线向量的余弦值越接近1,夹角越接近0 余弦值越接近0 夹角越接近90
余弦值和夹角成负相关 余弦值越小的话 越接近边缘
-->点积
视角向量和法线向量的点积 点积值接近1的话 越接近1,夹角越接近0 点积值越接近0 夹角越接近90
余弦值和夹角成负相关 点积值越小的话 越接近边缘
9.高光Pong光照模型
原理:
计算光的反射向量和 视角向量的夹角,光照强度和点积值 是 正相关
夹角越小(余弦值越大,点积值越大,越接近1),当前像素点的光越强
夹角越大(余弦值越小,点积值越小,越接近0),当前像素点的光越弱