From c122151cfb8fb3d0b83d26be22eb3d518923c84b Mon Sep 17 00:00:00 2001
From: Ansgar Philippsen <ansgar.philippsen@gmail.com>
Date: Mon, 18 Jul 2011 20:31:43 -0400
Subject: [PATCH] fixed gfx hf/hemilight bug in ost

---
 modules/gfx/src/scene.cc  | 7 ++++---
 modules/gfx/src/shader.cc | 2 ++
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/modules/gfx/src/scene.cc b/modules/gfx/src/scene.cc
index 456b6ce79..a51c3842b 100644
--- a/modules/gfx/src/scene.cc
+++ b/modules/gfx/src/scene.cc
@@ -269,11 +269,12 @@ void Scene::SetShadingMode(const std::string& smode)
   // this here is required - in case SetShadingMode is called
   // before GL is initialized (e.g. during batch mode rendering)
   def_shading_mode_=smode;
+  if (!gl_init_) return;
   if(smode=="fallback") {
     Shader::Instance().Activate("");
   } else if(smode=="basic") {
     Shader::Instance().Activate("basic");
-  } else if(smode=="hf") {
+  } else if(smode=="hf" || smode=="hemilight") {
     Shader::Instance().Activate("hemilight");
   } else if(smode=="toon1") {
     Shader::Instance().Activate("toon1");
@@ -1414,7 +1415,7 @@ bool Scene::StartOffscreenMode(unsigned int width, unsigned int height)
   root_node_->ContextSwitch();
 
 #if OST_SHADER_SUPPORT_ENABLED
-  String shader_name = Shader::Instance().GetCurrentName();
+  String shader_name = !def_shading_mode_.empty() ? def_shading_mode_ : Shader::Instance().GetCurrentName();
 #endif
 
   LOG_DEBUG("Scene: initializing GL");
@@ -1429,7 +1430,7 @@ bool Scene::StartOffscreenMode(unsigned int width, unsigned int height)
   update_fog();
   glDrawBuffer(GL_FRONT);
 #if OST_SHADER_SUPPORT_ENABLED
-  LOG_DEBUG("Scene: activating shader");
+  LOG_DEBUG("Scene: activating shader " << shader_name);
   Shader::Instance().Activate(shader_name);
 #endif
   return true;
diff --git a/modules/gfx/src/shader.cc b/modules/gfx/src/shader.cc
index 4084e9bbd..b09c41a70 100644
--- a/modules/gfx/src/shader.cc
+++ b/modules/gfx/src/shader.cc
@@ -237,6 +237,8 @@ void Shader::Setup()
   shader_program_list.push_back(shader_code_map_["basic_fs.glsl"]);
   if(Shader::Link(shader_program_list,"hemilight",shader_program_id)) {
     shader_program_map_["hemilight"]=shader_program_id;
+    // alias
+    shader_program_map_["hf"]=shader_program_id;
   }
   // selfx shader
   shader_program_list.clear();
-- 
GitLab