2017-03-03 10 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); 

내 질문 : 주변 조명 2x를 추가합니다. 주변 색을 계산할 때는 1 배, BRDF에 들어오는 빛의 양에이를 더하면 1 배가됩니다.

BRDF가 표면에 도달하는 조명의 일부이기 때문에 내 의견으로는 주변 조명이 필요하기 때문에 이것이 올바른지 아닌지를 알아낼 수 없습니다. 그러나 다른 한편으로는 이미 알베도 색을 곱하여 기본 색으로 추가 된 것입니다 ...

어떤 도움을 많이 받으실 수 있습니다!

답변

0

정확한 수식 (내 의견)과 같이 진행한다 :

VEC3 조도 = sunDiffuseRadiance * NdotL;