git-svn-id: svn://db.shs.com.ru/libs@60 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -66,6 +66,8 @@ void RendererDeferredShading::renderScene() {
|
||||
QMatrix4x4 mview = rp.view_matrix;
|
||||
QMatrix4x4 mviewi = rp.view_matrix_i;
|
||||
QMatrix4x4 mviewproji = (mview * mproj).inverted();
|
||||
QMatrix4x4 moffset = view.camera().offsetMatrix();
|
||||
QMatrix4x4 moffseti = moffset.inverted();
|
||||
rp.prev_proj_matrix = prev_proj;
|
||||
rp.prev_view_matrix = prev_view;
|
||||
QMatrix4x4 vc_proji;
|
||||
@@ -133,7 +135,7 @@ void RendererDeferredShading::renderScene() {
|
||||
l->shadow_map.setWriteBuffer(0);
|
||||
glClearFramebuffer();
|
||||
//glClear(GL_DEPTH_BUFFER_BIT);
|
||||
renderShadow(l, shader_shadow, mviewi);
|
||||
renderShadow(l, shader_shadow, moffseti*mviewi);
|
||||
l->shadow_map.release();
|
||||
}
|
||||
}
|
||||
@@ -160,6 +162,7 @@ void RendererDeferredShading::renderScene() {
|
||||
shader_ds_1->setUniformValue("mat_view", mview);
|
||||
shader_ds_1->setUniformValue("mat_viewi", mviewi);
|
||||
shader_ds_1->setUniformValue("mat_viewproji", mviewproji);
|
||||
shader_ds_1->setUniformValue("shadow_on", view.isFeatureEnabled(QGLView::qglShadowsEnabled) ? 1 : 0);
|
||||
shader_ds_1->setUniformValue("dt", QVector2D(1. / view.viewport()->width(), 1. / view.viewport()->height()));
|
||||
rp.setUniform(shader_ds_1);
|
||||
fbo_g.bindColorTextures();
|
||||
@@ -181,7 +184,7 @@ void RendererDeferredShading::renderScene() {
|
||||
glActiveTextureChannel(6);
|
||||
glBindTexture(GL_TEXTURE_2D, fbo_out.colorTexture(ri));
|
||||
fbo_out.setWriteBuffer(wi);
|
||||
setupDSLights(l, mview);
|
||||
setupDSLights(l, mview * moffset);
|
||||
glDrawQuad(shader_ds_1, corner_dirs);
|
||||
//break;
|
||||
}
|
||||
@@ -369,8 +372,13 @@ void RendererDeferredShading::setupDSLights(int pass, const QMatrix4x4 & view_ma
|
||||
lv << view.lights()[i];
|
||||
glActiveTextureChannel(shadow_start + i - light_start);
|
||||
glBindTexture(GL_TEXTURE_2D, lv.back()->shadow_map.depthTexture());
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
if (view.isFeatureEnabled(QGLView::qglShadowsSoftEnabled)) {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
} else {
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
}
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
|
||||
}
|
||||
amb_light.setName("null");
|
||||
|
||||
Reference in New Issue
Block a user