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

This commit is contained in:
2015-11-23 17:07:25 +00:00
parent 104a7f99ad
commit 48addec20f
32 changed files with 738 additions and 541 deletions

View File

@@ -45,6 +45,12 @@ void RendererDeferredShading::renderScene() {
glBindTexture(GL_TEXTURE_2D, white_image_id);
glActiveTextureChannel(0);
}
if (violent_image_id == 0) {
glActiveTextureChannel(7);
violent_image_id = ((GLTextureManagerBase*)currentGLTextureManager)->loadTexture(violent_image, false);
glBindTexture(GL_TEXTURE_2D, violent_image_id);
glActiveTextureChannel(0);
}
glClearFramebuffer(QColor(0, 0, 0, 0));
//glEnable(GL_TEXTURE_2D);
glEnableDepth();
@@ -127,12 +133,14 @@ void RendererDeferredShading::reloadShaders() {
void RendererDeferredShading::setupShadersTextures(GLObjectBase & object, GLRendererBase::RenderingParameters & rp) {
shader_ds_0->setUniformValue("has_diffuse", object.material().map_diffuse.bitmap_id != 0);
shader_ds_0->setUniformValue("has_bump", object.material().map_bump.bitmap_id != 0);
shader_ds_0->setUniformValue("has_bump", object.material().map_normal.bitmap_id != 0);
shader_ds_0->setUniformValue("has_height", object.material().map_relief.bitmap_id != 0);
shader_ds_0->setUniformValue("bump_scale", object.material().map_bump.color_amount);
shader_ds_0->setUniformValue("bump_scale", object.material().map_normal.color_amount);
shader_ds_0->setUniformValue("height_scale", object.material().map_relief.color_amount);
glActiveTextureChannel(6);
glBindTexture(GL_TEXTURE_2D, white_image_id);
glActiveTextureChannel(7);
glBindTexture(GL_TEXTURE_2D, violent_image_id);
}
@@ -144,7 +152,7 @@ void RendererDeferredShading::setupDSLights(int pass, int lights_per_pass, const
amb_light.intensity = (pass == 0 ? 1. : 0.);
amb_light.setColor(pass == 0 ? view.ambientColor() : Qt::black);
amb_light.setName("ambient");
setUniformLight(shader_ds_1, &amb_light, "qgl_AmbientLight", QMatrix4x4());
setUniformLight(shader_ds_1, &amb_light, "qgl_AmbientLight");
amb_light.intensity = 0.;
QVector<Light*> lv;
for (int i = light_start; i < light_end; ++i)
@@ -152,7 +160,7 @@ void RendererDeferredShading::setupDSLights(int pass, int lights_per_pass, const
amb_light.setName("null");
for (int i = light_end; i < lmax; ++i)
lv << &amb_light;
setUniformLights(shader_ds_1, lv, view_matrix);
setUniformLights(shader_ds_1, lv, view_matrix, view.camera().pos());
}