Skip to content

Commit

Permalink
GRAPHICS: Add binding methods with transparency to ShaderMaterial
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 e69ada5 commit 24fa50e
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/graphics/shader/shadermaterial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,30 @@ void ShaderMaterial::bindProgram(Shader::ShaderProgram *program) {
}
}

void ShaderMaterial::bindProgramNoFade(Shader::ShaderProgram *program) {
for (uint32 i = 0; i < _variableData.size(); i++) {
if (_alphaIndex != i) {
ShaderMan.bindShaderVariable(program->fragmentObject->variablesCombined[i], program->fragmentVariableLocations[i], _variableData[i].data);
}
}
}

void ShaderMaterial::bindProgram(Shader::ShaderProgram *program, float alpha) {
for (uint32 i = 0; i < _variableData.size(); i++) {
if (_alphaIndex == i) {
ShaderMan.bindShaderVariable(program->fragmentObject->variablesCombined[i], program->fragmentVariableLocations[i], &alpha);
} else {
ShaderMan.bindShaderVariable(program->fragmentObject->variablesCombined[i], program->fragmentVariableLocations[i], _variableData[i].data);
}
}
}

void ShaderMaterial::bindFade(Shader::ShaderProgram *program, float alpha) {
if (_alphaIndex != 0xFFFFFFFF) {
ShaderMan.bindShaderVariable(program->fragmentObject->variablesCombined[_alphaIndex], program->fragmentVariableLocations[_alphaIndex], &alpha);
}
}

void ShaderMaterial::bindGLState() {
if (_flags & SHADER_MATERIAL_TRANSPARENT) {
glBlendFunc(ShaderMaterialBlendfuncArray[(_flags >> SHADER_MATERIAL_TRANSPARENT_SRC_SHIFT) & SHADER_MATERIAL_TRANSPARENT_SHIFT_MASK],
Expand Down
3 changes: 3 additions & 0 deletions src/graphics/shader/shadermaterial.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@ class ShaderMaterial {
bool isVariableOwned(const Common::UString &name) const;

void bindProgram(Shader::ShaderProgram *program);
void bindProgramNoFade(Shader::ShaderProgram *program);
void bindProgram(Shader::ShaderProgram *program, float fade);
void bindFade(Shader::ShaderProgram *program, float fade);

void bindGLState();
void unbindGLState();
Expand Down

0 comments on commit 24fa50e

Please sign in to comment.