Top > エフェクト-半球ライティング

エフェクト-半球ライティング

アンビエントライトを天球側と地面側で2種類用意し、その補間色をアンビエントとする。


半球ライティング計算

float3 GroundColor; // Uniform 地面の色
float3 SkyColor;    // Uniform 空の色
float3 SkyDir;      // Uniform 空の方向ベクトル

// 空の方向ベクトル
float3 sky_vector = normalize(SkyDir);
// 法線
float3 normal = normalize(Normal);

// 半球ライティングの数値
float hemisphere_rate = dot(normal, sky_vector);

// -1.0~1.0 -> 0.0~1.0
hemisphere_rate = hemisphere_rate * 0.5 + 0.5;

// 求めた数値から、空と地面のカラーを混ぜる。0 -> 地面, 1 -> 空
float3 hemisphere = lerp(GroundColor, SkyColor, hemisphere_rate);

float3 color = hemisphere;

参考

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

半球ライティングのみ(空を青色、地面を茶色)
hemisphere-hemisphere_lighting.JPG

ディフューズライト+半球ライティング
hemisphere-all_lighting.JPG

シェーダコード

filehemisphere_lighting.fx


添付ファイル: filehemisphere_lighting.fx 423件 [詳細] filehemisphere-all_lighting.JPG 477件 [詳細] filehemisphere-hemisphere_lighting.JPG 496件 [詳細] filehemisphere-default_lighting.JPG 502件 [詳細]

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