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); |