J'essaie de déterminer si mon approche BRDF est correcte ou non.Rendu physique: rôle de la lumière ambiante dans 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);
Ma question: J'ajoute la lumière ambiante 2x. 1x lors du calcul de la couleur ambiante et 1x en l'ajoutant à la quantité de lumière entrant dans la BRDF.
Je ne peux pas comprendre si c'est correct ou pas, puisque la BRDF a besoin de la lumière ambiante à mon avis car c'est une partie de l'éclairage qui arrive sur la surface. Mais d'un autre côté, il est déjà calculé en le multipliant avec la couleur albédo et ajouté comme couleur de base ...
Toute aide est très appréciée!