• 追加された行はこの色です。
  • 削除された行はこの色です。
*エフェクト-半球ライティング [#r45540af]
アンビエントライトを天球側と地面側で2種類用意し、その補間色をアンビエントとする。
----

#contents


** 半球ライティング計算 [#v76bd4e8]
 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;


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

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

ディフューズライト+半球ライティング
&ref(hemisphere-all_lighting.JPG,,40%);



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


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