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

*エフェクト-リムライト [#m4264859]
逆光時に輪郭部分が光る。バーチャファイター5などで実装されてる。
----

#contents


** リムライト計算 [#qa9b6bd3]
 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;


** 参考 [#zf6f5ac7]
通常ライティング
&ref(rim-default_lighting.JPG,,40%);

リムライティングのみ
&ref(rim-rim_lighting.JPG,,40%);

通常+リムライティング
&ref(rim-all_lighting.JPG,,40%);


通常シェーディング
&ref(rim-default.JPG,,40%);

リムライト有りシェーディング
&ref(rim-shading.JPG,,40%);


** シェーダコード [#ob7a0ce4]
&ref(rim_lighting.fx);



    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS