@@ -1083,24 +1083,38 @@ bool ShaderEngine::linkProgram(GLuint programID) {
10831083}
10841084
10851085
1086- void ShaderEngine::loadPresetShaders (Pipeline &pipeline) {
1086+ bool ShaderEngine::loadPresetShaders (Pipeline &pipeline) {
10871087
1088- // compile and link warp and composite shaders from pipeline
1089- if (!pipeline. compositeShader . programSource . empty ()) {
1090- programID_presetComp = loadPresetShader (PresentCompositeShader, pipeline. compositeShader , pipeline. compositeShaderFilename );
1091- if (programID_presetComp != GL_FALSE)
1092- presetCompShaderLoaded = true ;
1093- }
1088+ bool ok = true ;
1089+
1090+ // blur programs
1091+ blur1_enabled = false ;
1092+ blur2_enabled = false ;
1093+ blur3_enabled = false ;
10941094
1095+ // compile and link warp and composite shaders from pipeline
10951096 if (!pipeline.warpShader .programSource .empty ()) {
10961097 programID_presetWarp = loadPresetShader (PresentWarpShader, pipeline.warpShader , pipeline.warpShaderFilename );
10971098 if (programID_presetWarp != GL_FALSE) {
10981099 uniform_vertex_transf_warp_shader = glGetUniformLocation (programID_presetWarp, " vertex_transformation" );
10991100 presetWarpShaderLoaded = true ;
1101+ } else {
1102+ ok = false ;
11001103 }
11011104 }
11021105
1103- std::cout << " Preset composite shader active: " << presetCompShaderLoaded << " , preset warp shader active: " << presetWarpShaderLoaded << std::endl;
1106+ if (!pipeline.compositeShader .programSource .empty ()) {
1107+ programID_presetComp = loadPresetShader (PresentCompositeShader, pipeline.compositeShader , pipeline.compositeShaderFilename );
1108+ if (programID_presetComp != GL_FALSE) {
1109+ presetCompShaderLoaded = true ;
1110+ } else {
1111+ ok = false ;
1112+ }
1113+ }
1114+
1115+ // std::cout << "Preset composite shader active: " << presetCompShaderLoaded << ", preset warp shader active: " << presetWarpShaderLoaded << std::endl;
1116+
1117+ return ok;
11041118}
11051119
11061120GLuint ShaderEngine::loadPresetShader (const ShaderEngine::PresentShaderType shaderType, Shader &presetShader, std::string &shaderFilename) {
@@ -1187,13 +1201,20 @@ GLuint ShaderEngine::CompileShaderProgram(const std::string & VertexShaderCode,
11871201 glAttachShader (programID, FragmentShaderID);
11881202 bool linkOK = linkProgram (programID);
11891203
1190- GLuint m_temp_vao;
1191- glGenVertexArrays (1 , &m_temp_vao);
1192- glBindVertexArray (m_temp_vao);
1204+ glDetachShader (programID, VertexShaderID);
1205+ glDetachShader (programID, FragmentShaderID);
11931206
1194- glValidateProgram (programID);
1207+ glDeleteShader (VertexShaderID);
1208+ glDeleteShader (FragmentShaderID);
11951209
1196- glDeleteVertexArrays (1 , &m_temp_vao);
1210+ return linkOK ? programID : GL_FALSE;
1211+ }
1212+
1213+ void ShaderEngine::validateProgram (const GLuint programID) {
1214+ GLint Result = GL_FALSE;
1215+ int InfoLogLength;
1216+
1217+ glValidateProgram (programID);
11971218
11981219 // Check the program
11991220 glGetProgramiv (programID, GL_VALIDATE_STATUS, &Result);
@@ -1203,15 +1224,6 @@ GLuint ShaderEngine::CompileShaderProgram(const std::string & VertexShaderCode,
12031224 glGetProgramInfoLog (programID, InfoLogLength, NULL , &ProgramErrorMessage[0 ]);
12041225 fprintf (stderr, " %s\n " , &ProgramErrorMessage[0 ]);
12051226 }
1206-
1207-
1208- glDetachShader (programID, VertexShaderID);
1209- glDetachShader (programID, FragmentShaderID);
1210-
1211- glDeleteShader (VertexShaderID);
1212- glDeleteShader (FragmentShaderID);
1213-
1214- return linkOK ? programID : GL_FALSE;
12151227}
12161228
12171229// use the appropriate shader program for rendering the interpolation.
@@ -1226,6 +1238,10 @@ bool ShaderEngine::enableWarpShader(Shader &shader, const Pipeline &pipeline, co
12261238
12271239 glUniformMatrix4fv (uniform_vertex_transf_warp_shader, 1 , GL_FALSE, glm::value_ptr (mat_ortho));
12281240
1241+ #if OGL_DEBUG
1242+ validateProgram (programID_presetWarp);
1243+ #endif
1244+
12291245 return true ;
12301246 }
12311247
@@ -1245,6 +1261,10 @@ bool ShaderEngine::enableCompositeShader(Shader &shader, const Pipeline &pipelin
12451261
12461262 SetupShaderVariables (programID_presetComp, pipeline, pipelineContext);
12471263
1264+ #if OGL_DEBUG
1265+ validateProgram (programID_presetComp);
1266+ #endif
1267+
12481268 return true ;
12491269 }
12501270
0 commit comments