feat: deferred lighting (WIP)

This commit is contained in:
MihailRis
2025-06-14 22:43:18 +03:00
parent 2ad076bec3
commit e849d5e9b7
10 changed files with 105 additions and 12 deletions
+16 -2
View File
@@ -88,7 +88,9 @@ void PostProcessing::configureEffect(
shader.uniform1i("u_position", 1);
shader.uniform1i("u_normal", 2);
}
shader.uniform1i("u_noise", 3);
shader.uniform1i("u_noise", 3); // used in SSAO pass
shader.uniform1i("u_ssao", 3);
shader.uniform1i("u_shadows", 4);
shader.uniform2i("u_screenSize", viewport);
shader.uniform1f("u_timer", timer);
@@ -126,13 +128,25 @@ void PostProcessing::render(
glBindTexture(GL_TEXTURE_2D, noiseTexture);
glActiveTexture(GL_TEXTURE0);
auto& ssaoEffect = assets.require<PostEffect>("ssao");
auto& shader = ssaoEffect.use();
configureEffect(context, ssaoEffect, shader, timer, camera, shadowMap);
gbuffer->bindSSAO();
quadMesh->draw();
gbuffer->unbind();
glActiveTexture(GL_TEXTURE3);
gbuffer->bindSSAOBuffer();
} else {
glActiveTexture(GL_TEXTURE0);
fbo->getTexture()->bind();
}
if (totalPasses == 0) {
auto& effect = assets.require<PostEffect>("default");
auto& effect = assets.require<PostEffect>(
gbuffer ? "deferred_lighting" : "default"
);
auto& shader = effect.use();
configureEffect(context, effect, shader, timer, camera, shadowMap);
quadMesh->draw();