git-svn-id: svn://db.shs.com.ru/libs@666 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2019-12-10 11:48:25 +00:00
parent 9d05dbe6da
commit 94c6536477
11 changed files with 71 additions and 56 deletions

View File

@@ -68,7 +68,7 @@ Renderer::Renderer(QGLView * view_): RendererBase(view_),
<< ShaderPair("ssao_merge", &shader_ssao_merge)
<< ShaderPair("dof", &shader_dof);*/
shader_fxaa = 0;
exposure_ = 1.;
gamma_ = 1.;
edit_mode = need_init_shaders = is_camera_light = true;
}
@@ -160,6 +160,9 @@ void Renderer::initShaders() {
for (int i = 0; i < 5; ++i)
prog->setUniformValue(QString("tex_%1").arg(i).toLatin1().constData(), i);
}
if (bindShader(srGeometryPass, &prog)) {
setUniformMaps(prog);
}
if (bindShader(srTonemapPass, &prog)) {
prog->setUniformValue("tex_0", 0);
prog->setUniformValue("tex_sum", 1);
@@ -266,17 +269,16 @@ void Renderer::renderScene() {
glEnableDepth();
glClearFramebuffer();
if (bindShader(srGeometryPass, &prog)) {
setUniformMaps(prog);
setUniformCamera(prog, cam);
textures_empty.bind(f, tarEmpty);
textures_maps .bind(f, tarMaps );
renderObjects(scene, rpSolid);
renderObjects(scene, rpTransparent);
}
fbo_ds.release();
/// lighting passes
fbo_ds.bindColorTextures();
fbo_ds.bindDepthTexture(5);
fbo_out.bind();
//int ri = 1, wi = 0;
typedef QPair<Renderer::ShaderRole, Light::Type> PassPair;
@@ -293,6 +295,8 @@ void Renderer::renderScene() {
renderQuad(prog, quad, cam);
}
}
/// blending layers
if (bindShader(srFinalPass, &prog)) {
fbo_out.bindColorTexture(obrSolidOmni, 0);
fbo_out.bindColorTexture(obrSolidSpot, 1);
@@ -302,7 +306,7 @@ void Renderer::renderScene() {
if (tone_proc.process())
fbo_out.bind();
if (bindShader(srTonemapPass, &prog)) {
prog->setUniformValue("exposure", exposure_);
prog->setUniformValue("gamma", gamma_);
prog->setUniformValue("frame_max", tone_proc.frameMax());
//fbo_1x1.bindColorTexture(0, 1);
fbo_out.bindColorTexture(obrSum, 0);