反射

reflection.png
reflection.jpg
javaのリフレクション機能の話はこちら
鏡面反射正反射
拡散反射乱反射
である。
アンビエントは反射光ではない!
物体表面で反射、あるいは物体表面から入った光が物質内で多重散乱したあとに表面から出てきた光である。

反射ベクトルの計算

キューブマッピングの場合は

reflectDir =reflect(eyeDir,normal);// 視線の反射ベクトル だったら
reflectDir=eyeDir-2.0*dot(normal,eyeDir)*normal;//と同じ

鏡面反射で使う正反射ベクトルはフォンのモデル
vec3 reflection = normalize(lightpos+viewvec);//正反射方向ベクトル
float specularLight=pow(max(dot(reflection,normal),0),shininess);

拡散反射はランバートの余弦則

float diffuseLight=max(dot(lightpos,normal),0);

サポートサイト Wikidot.com