Skip to content

Commit

Permalink
GRAPHICS: Add binding of texture view matrix in ShaderSurface
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 cfc2b09 commit e2e7f03
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/graphics/shader/shadersurface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ namespace Shader {

#define SHADER_SURFACE_VARIABLE_OWNED (0x00000001)

ShaderSurface::ShaderSurface(Shader::ShaderObject *vertShader, const Common::UString &name) : _variableData(), _vertShader(vertShader), _flags(0), _name(name), _usageCount(0), _objectModelviewIndex(0xFFFFFFFF) {
ShaderSurface::ShaderSurface(Shader::ShaderObject *vertShader, const Common::UString &name) : _variableData(), _vertShader(vertShader), _flags(0), _name(name), _usageCount(0), _objectModelviewIndex(0xFFFFFFFF), _textureViewIndex(0xFFFFFFFF) {
vertShader->usageCount++;

uint32 varCount = vertShader->variablesCombined.size();
Expand All @@ -43,6 +43,8 @@ ShaderSurface::ShaderSurface(Shader::ShaderObject *vertShader, const Common::USt

if (vertShader->variablesCombined[i].name == "_objectModelviewMatrix") {
_objectModelviewIndex = i;
} else if (vertShader->variablesCombined[i].name == "_textureViewMatrix") {
_textureViewIndex = i;
} else if (vertShader->variablesCombined[i].name == "_projectionMatrix") {
setVariableExternal(i, &(GfxMan.getProjectionMatrix()));
} else if (vertShader->variablesCombined[i].name == "_modelviewMatrix") {
Expand Down Expand Up @@ -178,6 +180,12 @@ void ShaderSurface::bindObjectModelview(Shader::ShaderProgram *program, const gl
}
}

void ShaderSurface::bindTextureView(Shader::ShaderProgram *program, const glm::mat4 *t) {
if (_textureViewIndex != 0xFFFFFFFF) {
ShaderMan.bindShaderVariable(program->vertexObject->variablesCombined[_textureViewIndex], program->vertexVariableLocations[_objectModelviewIndex], t);
}
}

void ShaderSurface::bindGLState() {
if (_flags & SHADER_SURFACE_NOCULL) {
glDisable(GL_CULL_FACE);
Expand Down
2 changes: 2 additions & 0 deletions src/graphics/shader/shadersurface.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class ShaderSurface {
void bindProgram(Shader::ShaderProgram *program);
void bindProgram(Shader::ShaderProgram *program, const glm::mat4 *t);
void bindObjectModelview(Shader::ShaderProgram *program, const glm::mat4 *t);
void bindTextureView(Shader::ShaderProgram *program, const glm::mat4 *t);

void bindGLState();
void unbindGLState();
Expand All @@ -101,6 +102,7 @@ class ShaderSurface {
uint32 _usageCount;

uint32 _objectModelviewIndex;
uint32 _textureViewIndex;

void *genSurfaceVar(uint32 index);
void delSurfaceVar(uint32 index);
Expand Down

0 comments on commit e2e7f03

Please sign in to comment.