- 追加された行はこの色です。
- 削除された行はこの色です。
*エフェクト-半球ライティング [#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);