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);
我的問題:我添加環境光2x。計算環境顏色時爲1x,將其添加到進入BRDF的光量時爲1x。
我不明白這是否正確,因爲BRDF在我看來需要環境光線,因爲它是到達表面的照明的一部分。但另一方面,它已經通過將其與反照色相乘並添加爲基色來計算...
任何幫助非常感謝!