delete GLView crash fix

fixed fog/background color, now not x2 amplified
fixed bug when no shadows enabled on start (sum with fog on geometry)
This commit is contained in:
2023-04-23 23:15:31 +03:00
parent c179bc95cf
commit 0151e34477
4 changed files with 10 additions and 7 deletions

View File

@@ -223,6 +223,10 @@ void Renderer::initShaders() {
prog->setUniformValue("tex_coeff_brdf", trCoeffBRDF);
prog->setUniformValue("tex_env", trEnvironment);
setUniformMaps(prog);
prog->setUniformValue("tex_shadows_cone", (int)tarShadowsCone);
prog->setUniformValue("tex_shadows_omni", (int)tarShadowsOmni);
prog->setUniformValue("tex_depths_cone", (int)tarDepthsCone);
prog->setUniformValue("tex_depths_omni", (int)tarDepthsOmni);
}
if (bindShader(srFinalPass, &prog)) {
prog->setUniformValue("tex_g1", 0);
@@ -345,12 +349,13 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) {
}*/
fbo_out.setWriteBuffer(first_wr_buff + pass.second);
glClearFramebuffer(back, false);
back = QColor(0, 0, 0, 0);
if (clear_only) continue;
setUniformCamera(prog, cam);
setUniformViewCorners(prog, cam);
prog->setUniformValue("lights_start", lights_start[pass.second]);
prog->setUniformValue("lights_count", (int)cur_lights[pass.second].size());
prog->setUniformValue("fog_color", view->fogColor());
prog->setUniformValue("fog_color", color2vector(view->fogColor()) / 2.);
prog->setUniformValue("fog_decay", qMax(view->fogDecay(), 0.001f));
prog->setUniformValue("fog_density", view->fogDensity());
prog->setUniformValue("view_mat", cam->viewMatrix().inverted().toGenericMatrix<3, 3>());
@@ -361,10 +366,6 @@ void Renderer::renderLight(int first_wr_buff, bool clear_only) {
prog->setUniformValue("soft_shadows_enabled", view->soft_shadows);
prog->setUniformValue("soft_shadows_samples", view->soft_shadows_samples);
prog->setUniformValue("soft_shadows_quality", view->soft_shadows_quality);
prog->setUniformValue("tex_shadows_cone", (int)tarShadowsCone);
prog->setUniformValue("tex_shadows_omni", (int)tarShadowsOmni);
prog->setUniformValue("tex_depths_cone", (int)tarDepthsCone);
prog->setUniformValue("tex_depths_omni", (int)tarDepthsOmni);
GLenum filter = view->softShadows() ? GL_NEAREST : GL_LINEAR;
shadow_maps_cone.bind(view, tarShadowsCone);
view->glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, filter);