Недавно я реализовал SSAO в своем двигателе (отложенное затенение), но я очень не уверен, как объединить SSAO с глобальным светом и локальными огнями (точечный свет).Комбинат SSAO с глобальным светом и местным освещением
Должен ли я это сделать:
//Global light pass.
vec3 sceneColor = DiffuseBRDF + SpecularBRDF;
float luminance = dot(sceneColor, vec3(0.2126, 0.7152, 0.0722));
sceneColor *= mix(texture(ssaoTexture, texCoord).r, 1.0, luminance);
//Local light pass.
//Use additive blending in this pass, i.e. glBlendFunc(GL_ONE, GL_ONE).
//The final result would be:
vec3 finalColor = sceneColor + pointLight0 + pointLight1 + ... + pointLightN;
или это:
//Global light pass.
vec3 sceneColor = DiffuseBRDF + SpecularBRDF;
//Local light pass.
//Use additive blending in this pass, i.e. glBlendFunc(GL_ONE, GL_ONE).
vec3 finalColor = sceneColor + pointLight0 + pointLight1 + ... + pointLightN;
//Composite pass.
float luminance = dot(finalColor, vec3(0.2126, 0.7152, 0.0722));
finalColor *= mix(texture(ssaoTexture, texCoord).r, 1.0, luminance);
Ум, что означает 'ssaoTexture'? У меня создалось впечатление, что SSAO произошло на экране, основываясь на поиске углов в сценах и устранении окружающего света на основе этого. Я не знаю, что будет в 'ssaoTexture', который вписывается в эту модель. –
ssaoTexture содержит рассчитанный SSAO для текущего кадра. – karl88