高光反射:會受到相機方向的影響 specular=直射光 *pow(max(cosθ,0),10);
shader效果 類似於乙個亮點
//反射光的方向,unity方法reflect() 反射光是平行光的反射 -lightdir 法線是normaldir 得到的是光照的反射方向 reflectdir
fixed3 reflectdir = normalize(reflect(-lightdir, normaldir));
//相機位置減去對應光照點的座標,得到viewdir的是視野的方向
fixed3 viewdir=normalize(_worldspacecamerapos.xyz - mul(v.vertex, unity_worldtoobject).xyz);
// 得到夾角。光照方向的反射方向和視野方向 進行點乘
fixed3 speacular = _lightcolor0.rgb * _specular.rgb * pow(max(dot(reflectdir, viewdir),0),_gloss);
高光反射中的半蘭伯特方式:
//這個是半蘭伯特公式(2個的叉乘)*0.5+0.5 ,用於遊戲方面比較多,因為背光的材質不容易發黑
float halflambert = dot(normaldir, lightdir)*0.5 + 0.5;
//取得漫反射的顏色
fixed3 diffuse = _lightcolor0.rgb*halflambert*_diffuse.rgb;//dot()用來取得函式的點乘//_lightcolor0用來取得平行光的顏色
高光反射的公升級版本 blinnphong
//取到系統內建的環境光線 unity_lightmodel_ambient.rgb
fixed3 ambient = unity_lightmodel_ambient.rgb;
//unity_worldtoobject從世界空間轉換到模型空間
fixed3 normaldir = normalize(f.worldnormal);
//_worldspacelightpos0用來取得平行光的位置
//fixed3 lightdir = normalize(_worldspacelightpos0.xyz);//normalize用來把乙個向量單位化。
//下面的是對上面的進行更改,利用cg函式來實現
fixed3 lightdir = normalize(worldspacelightdir(f.worldvertex));
float halftemp = dot(normaldir, lightdir)*0.5 + 0.5;
//取得漫反射的顏色
fixed3 diffuse = _lightcolor0.rgb*halftemp*_diffuse.rgb;//dot()用來取得函式的點乘//_lightcolor0用來取得平行光的顏色
//相機位置減去對應光照點的座標,得到viewdir的是視野的方向
fixed3 viewdir=normalize(_worldspacecamerapos.xyz - f.worldvertex);
//這個是求相機視野方向和光的方向的平分線的值
fixed3 halfdir = normalize(viewdir + lightdir);
// 得到夾角。 法線跟平分線進行點乘
fixed3 speacular = _lightcolor0.rgb * _specular.rgb * pow(max(dot(normaldir, halfdir),0),_gloss);
漫反射 :不會受到相機方向的影響 diffuse=直射光顏色 *max(0,cos夾角(光和法線的夾角)) coso=光方向*法線方向
求叉乘用dot(法線,燈光);
fixed3 diffuse = _lightcolor0.rgb*max(dot(normaldir, lightdir), 0)*_diffuse.rgb;
shader入門5 高光反射
高光反射一般用於實現金屬光澤的效果,原理是反射光與物體朝相機的方向的夾角cos值為標準進行光照補償,夾角越小補償值越高.其實現原理與在漫反射基礎上加了高光補償的部分,要注意的是世界座標系中的光照與入射角方向是相反的 n是normaldir v是viewdir l是lightdir 因為反射公式的入射...
Shader 基礎光照 高光反射光照模型
高光反射計算公式 我們需要4個引數,光源的顏色和強度,材質的高光反射係數,視角方向和反射方向.在高光反射中我們要取得反射光線和視線的夾角.cg提供了反射光線的函式reflect i,n 1.宣告三個屬性,specular控制高光反射材質,diffuse漫反射材質,gloss控制高光區域大小 prop...
逐頂點高光反射
逐頂點高光反射 shader unity shader book chapter 6 specular vertex leve1 subshader cgprogram pragma vertex vert pragma fragment frag 引用內建的變數 include lighting....