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

This commit is contained in:
2019-05-24 19:06:35 +00:00
parent 1082db07c6
commit 58fce3cd81
29 changed files with 394 additions and 599 deletions

View File

@@ -59,7 +59,7 @@ fbo_g(5, true, GL_RGBA16F), fbo_out(3, false, GL_RGBA16F), fbo_hsmall(1, false,
RendererDeferredShading::~RendererDeferredShading() {
for (int i = 0; i < shaders.size(); ++i) {
__GLShaderProgram__ * p(*(shaders[i].second));
QOpenGLShaderProgram * p(*(shaders[i].second));
if (p) delete p;
}
delete df;
@@ -88,15 +88,15 @@ void RendererDeferredShading::renderScene() {
fbo_g.bind();
int buffs[] = {0, 1, 2, 3, 4};
fbo_g.setWriteBuffers(buffs, 5);
if (white_image_id == 0 && currentGLTextureManager) {
if (white_image_id == 0) {
glActiveTextureChannel(6);
white_image_id = ((GLTextureManagerBase*)currentGLTextureManager)->loadTexture(white_image, false);
white_image_id = view.textureManager()->loadTexture(white_image, false);
glBindTexture(GL_TEXTURE_2D, white_image_id);
glActiveTextureChannel(0);
}
if (violent_image_id == 0 && currentGLTextureManager) {
if (violent_image_id == 0) {
glActiveTextureChannel(7);
violent_image_id = ((GLTextureManagerBase*)currentGLTextureManager)->loadTexture(violent_image, false);
violent_image_id = view.textureManager()->loadTexture(violent_image, false);
glBindTexture(GL_TEXTURE_2D, violent_image_id);
glActiveTextureChannel(0);
}
@@ -112,7 +112,7 @@ void RendererDeferredShading::renderScene() {
shader_ds_0->setUniformValue("t2", 2);
shader_ds_0->setUniformValue("t3", 3);
shader_ds_0->setUniformValue("t4", 4);
shader_ds_0->setUniformValue("dt", QVector2D(1. / view.viewport()->width(), 1. / view.viewport()->height()));
shader_ds_0->setUniformValue("dt", QVector2D(1. / view.width(), 1. / view.height()));
//qDebug() << rp.view_matrix << prev_view;
//shader_ds_0->setUniformValue("qgl_ModelViewMatrix", rp.view_matrix);
renderObjects(GLObjectBase::Solid, 0, shader_ds_0, true, false, false);
@@ -170,7 +170,7 @@ void RendererDeferredShading::renderScene() {
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()));
shader_ds_1->setUniformValue("dt", QVector2D(1. / view.width(), 1. / view.height()));
rp.setUniform(shader_ds_1);
fbo_g.bindColorTextures();
fbo_g.bindDepthTexture(5);
@@ -507,7 +507,7 @@ void RendererDeferredShading::renderScene() {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
shader_fxaa->bind();
shader_fxaa->setUniformValue("dt", QVector2D(1. / view.viewport()->width(), 1. / view.viewport()->height()));
shader_fxaa->setUniformValue("dt", QVector2D(1. / view.width(), 1. / view.height()));
} else {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@@ -521,9 +521,7 @@ void RendererDeferredShading::renderScene() {
void RendererDeferredShading::init(int width, int height) {
#if QT_VERSION >= 0x050600
initializeOpenGLFunctions();
#endif
resize(width, height);
}
@@ -532,15 +530,15 @@ void RendererDeferredShading::resize(int width, int height) {
fbo_g.resize(width, height);
fbo_out.resize(width, height);
fbo_hsmall.resize(width / 16, height / 16);
view.setSceneRect(QRect(0, 0, width, height));
// view.setSceneRect(QRect(0, 0, width, height));
//df->move(-width / 2, -height / 2);
}
void RendererDeferredShading::reloadShaders() {
for (int i = 0; i < shaders.size(); ++i) {
__GLShaderProgram__ * p(*(shaders[i].second));
if (!p) p = new __GLShaderProgram__(view.context());
QOpenGLShaderProgram * p(*(shaders[i].second));
if (!p) p = new QOpenGLShaderProgram(view.context());
loadShaders(p, shaders[i].first, "shaders");
*(shaders[i].second) = p;
}