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; 参考 †シェーダコード † |