Skip to content

Commit

Permalink
GRAPHICS: Store texture handle in ShaderSampler
Browse files Browse the repository at this point in the history
  • Loading branch information
mirv-sillyfish authored and DrMcCoy committed Nov 17, 2018
1 parent af8d58d commit e226f20
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
24 changes: 13 additions & 11 deletions src/graphics/shader/shader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
#include "src/graphics/shader/shader.h"
#include "src/graphics/shader/shadercode.h"

#include "src/graphics/aurora/texture.h"

/*--------------------------------------------------------------------*/

DECLARE_SINGLETON(Graphics::Shader::ShaderManager)
Expand Down Expand Up @@ -174,57 +176,57 @@ void ShaderManager::bindShaderVariable(ShaderObject::ShaderObjectVariable &var,
case SHADER_SAMPLER1D:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_1D, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_1D, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLER2D:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_2D, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_2D, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLER3D:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_3D, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_3D, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLERCUBE:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_CUBE_MAP, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_CUBE_MAP, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLER1DSHADOW:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_1D_ARRAY, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_1D_ARRAY, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLER2DSHADOW:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_2D, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_2D, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLER1DARRAY:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_1D_ARRAY, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_1D_ARRAY, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLER2DARRAY:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_2D_ARRAY, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_2D_ARRAY, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLER1DARRAYSHADOW:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_1D_ARRAY, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_1D_ARRAY, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLER2DARRAYSHADOW:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_2D_ARRAY, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_2D_ARRAY, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_SAMPLERBUFFER:
glUniform1i(loc, static_cast<const ShaderSampler *>(data)->unit);
glActiveTexture(GL_TEXTURE0 + static_cast<const ShaderSampler *>(data)->unit);
glBindTexture(GL_TEXTURE_BUFFER, static_cast<const ShaderSampler *>(data)->texture->getID());
glBindTexture(GL_TEXTURE_BUFFER, static_cast<const ShaderSampler *>(data)->handle.getTexture().getID());
break;
case SHADER_ISAMPLER1D: break;
case SHADER_ISAMPLER2D: break;
Expand Down
3 changes: 3 additions & 0 deletions src/graphics/shader/shader.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@

#include "src/graphics/texture.h"

#include "src/graphics/aurora/texturehandle.h"

namespace Graphics {

namespace Shader {
Expand Down Expand Up @@ -175,6 +177,7 @@ struct ShaderUBO {
*/
struct ShaderSampler {
Texture *texture;
Graphics::Aurora::TextureHandle handle;
uint32 unit;
ShaderSampler() : texture(0), unit(0) {}
ShaderSampler(Texture *t, uint32 u) : texture(t), unit(u) {}
Expand Down

0 comments on commit e226f20

Please sign in to comment.