Top > エフェクト-半球ライティング
*エフェクト-半球ライティング [#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); |