Top > エフェクト-リムライト

エフェクト-リムライト

逆光時に輪郭部分が光る。バーチャファイター5などで実装されてる。


リムライト計算

float3 EyeDir;   // Uniform 視線ベクトル
float3 LightDir; // Uniform ライトベクトル


// 視線ベクトル
float3 eye_vector = normalize(EyeDir);
// ライトベクトル
float3 light_vector = normalize(LightDir);
// 法線
float3 normal = normalize(Normal);
// リムライトの強さ
float rim_power = 2.0;

// 内積の値を反転しモデルの縁部分が1.0、視線と平行部分を0.0にする。
float rim = 1.0 - dot(normal, eye_vector);

// リムライトの強さを補正
rim = pow(abs(rim), rim_power);

// 太陽との逆光を計算(頂点シェーダでOK)
float light_rim = max(dot(-light_vector, eye_vector), 0.0);

// モデルの縁計算と、太陽の逆光計算を乗算
float3 color = rim * light_rim;

参考

通常ライティング
rim-default_lighting.JPG

リムライティングのみ
rim-rim_lighting.JPG

通常+リムライティング
rim-all_lighting.JPG

通常シェーディング
rim-default.JPG

リムライト有りシェーディング
rim-shading.JPG

シェーダコード

filerim_lighting.fx


添付ファイル: filerim_lighting.fx 649件 [詳細] filerim-default.JPG 628件 [詳細] filerim-shading.JPG 729件 [詳細] filerim-all_lighting.JPG 778件 [詳細] filerim-rim_lighting.JPG 748件 [詳細] filerim-default_lighting.JPG 746件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2011-08-16 (火) 01:45:16 (4640d)