概要
リムライトとは、モデルの輪郭を光らせるコンピュータグラフィックスの技法の1つです。
モデルの頂点座標からカメラまでのベクトルと法線ベクトルのなす角度を求めて、その角度が一定値より多ければ、モデルを光らせます。
シェーダー
shader rim_shader(
//テクスチャ
color texture_color = color(0.0,0.0,0.0),
//法線
normal n = N,
//座標
point position = point(0,0,0),
//計算結果カラー
output color final_color = color(0.0,0.0,0.0)
)
{
final_color = texture_color;
//カメラの座標
point camera_pos = point("camera",0,0,0) - point("world",0,0,0);
//カメラに向かうベクトル
point to_camera = normalize(camera_pos-position);
//カメラに向かうベクトルと法線ベクトルのなす角を求める。
float angle = acos(dot(n,camera_pos));
//角度が約68.7度より大きかったら。
if(d > 1.2)
{
//光らせる。
final_color *= 10.0;
}
}