2017-03-03 2 views
3

私は自分のBRDFアプローチが正しいかどうかを調べようとしています。物理的レンダリング:BRDFの環境光の役割

// Calculate sun BRDF color 
vec3 sunBrdf = brdf(tsLightSourceDir, tsEyeDir, 
        tsNormal, vtsTangent, vtsBinormal, 
        albedo.rgb, 
        NdotL, NdotV, 
        tRoughness, tMetallic, specular); 

// brdf multiplied by incoming sun radiance -> color 
vec3 irradiance = sunAmbientRadiance + sunDiffuseRadiance * NdotL; 
vec3 brdfColor = sunBrdf * irradiance; 

// Add base ambient color 
vec3 ambientColor = albedo.rgb * sunAmbientRadiance; 
resultColor = ambientColor; 

resultColor += brdfColor; 

// Interpolate by shadow 
resultColor = mix(ambientColor, 
        resultColor, 
        shadowAmount); 

私の質問:環境光2倍を追加します。周囲の色を計算するときは1x、BRDFに入る光の量に1xを加算して計算します。

BRDFは私の意見では表面に届く照明の一部なので、周囲の光が必要なので、これが正しいかどうかはわかりません。しかし一方で、それはすでにアルベドの色とそれを乗算して計算され、ベースカラーとして追加されます。

何か助けがありがとう!

答えて

0

正しい式は、(私の意見では)このように書きます:

vec3放射照度= sunDiffuseRadiance * NdotL。

関連する問題