From 51a9a215b6a15cdf3a3408497c9460da09bac0bd Mon Sep 17 00:00:00 2001 From: Vincent Lejeune Date: Sat, 12 Jul 2014 20:22:49 +0200 Subject: [PATCH] Use a default texture for rubber band --- src/graphics/shaders.cpp | 39 ------------------------------- src/graphics/shaders.hpp | 10 -------- src/graphics/stkmeshscenenode.cpp | 9 +++++-- 3 files changed, 7 insertions(+), 51 deletions(-) diff --git a/src/graphics/shaders.cpp b/src/graphics/shaders.cpp index 07a0ce194..2474b8f7e 100644 --- a/src/graphics/shaders.cpp +++ b/src/graphics/shaders.cpp @@ -336,7 +336,6 @@ void Shaders::loadShaders() MeshShader::InstancedObjectRefPass2Shader::init(); MeshShader::InstancedGrassPass2Shader::init(); MeshShader::DetailledObjectPass2Shader::init(); - MeshShader::UntexturedObjectShader::init(); MeshShader::ObjectRefPass2Shader::init(); MeshShader::ObjectUnlitShader::init(); MeshShader::SphereMapShader::init(); @@ -865,44 +864,6 @@ namespace MeshShader glUniformMatrix4fv(uniform_MM, 1, GL_FALSE, ModelMatrix.pointer()); } - GLuint UntexturedObjectShader::Program; - GLuint UntexturedObjectShader::uniform_MM; - GLuint UntexturedObjectShader::uniform_ambient; - - void UntexturedObjectShader::init() - { - Program = LoadProgram( - GL_VERTEX_SHADER, file_manager->getAsset("shaders/object_pass.vert").c_str(), - GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getLightFactor.frag").c_str(), - GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/untextured_object.frag").c_str()); - uniform_MM = glGetUniformLocation(Program, "ModelMatrix"); - GLuint uniform_DiffuseMap = glGetUniformLocation(Program, "DiffuseMap"); - GLuint uniform_SpecularMap = glGetUniformLocation(Program, "SpecularMap"); - GLuint uniform_SSAO = glGetUniformLocation(Program, "SSAO"); - uniform_ambient = glGetUniformLocation(Program, "ambient"); - if (!UserConfigParams::m_ubo_disabled) - { - GLuint uniform_ViewProjectionMatrixesUBO = glGetUniformBlockIndex(Program, "MatrixesData"); - glUniformBlockBinding(Program, uniform_ViewProjectionMatrixesUBO, 0); - } - - glUseProgram(Program); - glUniform1i(uniform_DiffuseMap, 0); - glUniform1i(uniform_SpecularMap, 1); - glUniform1i(uniform_SSAO, 2); - glUseProgram(0); - } - - void UntexturedObjectShader::setUniforms(const core::matrix4 &ModelMatrix) - { - if (UserConfigParams::m_ubo_disabled) - bypassUBO(Program); - glUniformMatrix4fv(uniform_MM, 1, GL_FALSE, ModelMatrix.pointer()); - const video::SColorf s = irr_driver->getSceneManager()->getAmbientLight(); - glUniform3f(uniform_ambient, s.r, s.g, s.b); - } - - GLuint ObjectRefPass2Shader::Program; GLuint ObjectRefPass2Shader::uniform_MM; GLuint ObjectRefPass2Shader::uniform_TM; diff --git a/src/graphics/shaders.hpp b/src/graphics/shaders.hpp index cd294b264..0bcccacb6 100644 --- a/src/graphics/shaders.hpp +++ b/src/graphics/shaders.hpp @@ -166,16 +166,6 @@ public: static void setUniforms(const core::matrix4 &ModelMatrix); }; -class UntexturedObjectShader -{ -public: - static GLuint Program; - static GLuint uniform_MM, uniform_ambient; - - static void init(); - static void setUniforms(const core::matrix4 &ModelMatrix); -}; - class ObjectUnlitShader { public: diff --git a/src/graphics/stkmeshscenenode.cpp b/src/graphics/stkmeshscenenode.cpp index 016b912ce..505bbf8ec 100644 --- a/src/graphics/stkmeshscenenode.cpp +++ b/src/graphics/stkmeshscenenode.cpp @@ -222,6 +222,8 @@ void STKMeshSceneNode::updatevbo() } } +static video::ITexture *spareWhiteTex = 0; + void STKMeshSceneNode::render() { irr::video::IVideoDriver* driver = irr_driver->getVideoDriver(); @@ -310,7 +312,9 @@ void STKMeshSceneNode::render() if (immediate_draw) { glDisable(GL_CULL_FACE); - glUseProgram(MeshShader::UntexturedObjectShader::Program); + if (!spareWhiteTex) + spareWhiteTex = getUnicolorTexture(video::SColor(255, 255, 255, 255)); + glUseProgram(MeshShader::ObjectPass2Shader::Program); // Only untextured for (unsigned i = 0; i < GLmeshes.size(); i++) { @@ -320,7 +324,8 @@ void STKMeshSceneNode::render() GLenum itype = mesh.IndexType; size_t count = mesh.IndexCount; - MeshShader::UntexturedObjectShader::setUniforms(AbsoluteTransformation); + setTexture(MeshShader::ObjectPass2Shader::TU_Albedo, getTextureGLuint(spareWhiteTex), GL_NEAREST, GL_NEAREST, false); + MeshShader::ObjectPass2Shader::setUniforms(AbsoluteTransformation, mesh.TextureMatrix); assert(mesh.vao); glBindVertexArray(mesh.vao); glDrawElements(ptype, count, itype, 0);